解决 App Store 在 React Native Expo 上发出的 UIWebView 弃用警告?

Solving UIWebView deprecation warning by App Store on React Native Expo?

我正在使用 Expo (SDK v35) 构建一个 React Native 应用程序,在将二进制文件交付到 App Store Connect 后,我​​收到一条警告,很多人都收到了:

ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs.

我意识到这个警告与 v7.0.1 之前的 react-native-webview 有关,如果在任何地方使用 UIWebView 都会出现这个警告,包括依赖项。

但是,我已经完整地清理了代码,以至于 grep -r UIWebView ./* 变成空的(我什至删除了注释)。我还确保所有依赖项使用的 react-native-webview 版本高于修补后的 7.0.1 版本。这是来自 grep -r webview ./node_modules/*/package.json:

的日志

./node_modules/react-native-signature-canvas/package.json: "react-native-webview": "^7.5.2" ./node_modules/react-native-webview/package.json: "_from": "react-native-webview@^7.5.2", ./node_modules/react-native-webview/package.json: "_id": "react-native-webview@7.6.0", ./node_modules/react-native-webview/package.json: "_location": "/react-native-webview", ./node_modules/react-native-webview/package.json: "raw": "react-native-webview@^7.5.2", ./node_modules/react-native-webview/package.json: "name": "react-native-webview", ./node_modules/react-native-webview/package.json: "escapedName": "react-native-webview", ./node_modules/react-native-webview/package.json: "_resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-7.6.0.tgz", ./node_modules/react-native-webview/package.json: "_spec": "react-native-webview@^7.5.2"

应用中唯一真正使用WebView的部分是通过模块react-native-signature-canvas,它不仅使用了webview版本>=7.5.2而且还通过了useWebKit={true} 作为道具,确保使用 WKWebView,而不是 UIWebView.

关于如何消除警告的任何建议?另外,如果我无论如何提交应用程序进行审核,它会被拒绝吗?是否会考虑该警告进行审查,或者他们会简单地在不支持 UIWebView 的 iOS 版本上测试该应用程序并查看它是否正常运行?

看来 Expo 团队已经解决了这个问题,并将在 Expo SDK 37 中发布修复程序。有关此 Github 问题的更多详细信息:https://github.com/expo/expo/issues/5497

发出警告是因为即使设置了 useWebKit={true} 属性,编译后的应用程序仍然包含 UIWebView API。不幸的是,Apple 刚刚通知开发人员,从 2020 年 4 月起,他们将不再接受在应用程序中使用或包含 UIWebView 的应用程序提交。在此期间,您可以在这个严格的截止日期之前向 App Store 提交新的和更新的应用程序。

如果您使用的是useWebKit={true},也就是说,您使用的是WKWebView,而不是UIWebView。那么你可以通过以下方式解决问题 -- Deprecated API Usage.

  1. 删除Libraries/RNCWebView.xcodeproj/RNCUIWebView.h、RNCUIWebView.m、RNCUIWebViewManager.h、RNCUIWebViewManager.m
  2. Remove Libraries/React.xcodeproj/React/Views/RCTWebView.h、RCTWebView.m、RCTWebViewManager.h、RCTWebViewManager.m

现在我已经app.ipa成功上传到AppStore,没有任何权限警告。

就是这样。我为我工作。希望对你有帮助。