我正在使用 Expo (SDK v35( 构建一个 React Native 应用程序,在将二进制文件交付到 App Store Connect 时,我收到一条警告,许多人都收到了:
ITMS-90809:已弃用的 API 用法 - Apple 将停止接受使用 UIWebView API 的应用提交。
我意识到该警告与v7.0.1之前的react-native-webview有关,并且如果在任何地方使用UIWebView,包括依赖项,它就会出现。
但是,我已经完整地清理了代码,以至于 grep -r UIWebView ./* 显示为空(我什至删除了注释(。我还确保所有依赖项都使用大于修补的 7.0.1 版本的 react-native-webview 版本。这是来自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版本上测试该应用程序并查看其是否正常运行?
看起来世博会团队已经解决了这个问题,并将在世博会 SDK 37 中发布修复程序。有关此 Github 问题的更多详细信息:https://github.com/expo/expo/issues/5497
之所以发出警告,是因为即使设置了useWebKit={true}
道具,编译的应用程序内部仍然具有UIWebView
API。不幸的是,Apple 刚刚通知开发人员,从 2020 年 4 月起,他们将不再接受使用该应用程序或在应用程序中具有UIWebView
的应用程序提交。同时,您可以在这个艰难的截止日期之前向App Store提交新的和更新的应用程序。
如果您使用的是useWebKit={true}
,也就是说,您正在使用WKWebView
根本不UIWebView
。然后,您可以执行以下操作来解决问题 - 已弃用的 API 用法。
- 删除
Libraries/RNCWebView.xcodeproj/RNCUIWebView.h、RNCUIWebView.m、RNCUIWebViewManager.h、RNCUIWebViewManager.m
Remove Libraries/React.xcodeproj/React/Views/RCTWebView.h、RCTWebView.m、RCTWebViewManager.h、RCTWebViewManager.m
现在我已经成功将app.ipa上传到AppStore,没有任何权限警告。
就这样。我为我工作。我希望它有所帮助。