解决 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.
- 删除
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,没有任何权限警告。
就是这样。我为我工作。希望对你有帮助。
我正在使用 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.
- 删除
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,没有任何权限警告。
就是这样。我为我工作。希望对你有帮助。