【问题标题】:Solving UIWebView deprecation warning by App Store on React Native Expo?解决 App Store 在 React Native Expo 上的 UIWebView 弃用警告?
【发布时间】:2019-12-08 06:58:28
【问题描述】:

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

ITMS-90809:不推荐使用 API - Apple 将停止接受使用 UIWebView API 的应用提交。

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

但是,我已经完全清理了代码,以至于 grep -r UIWebView ./* 变为空(我什至删除了 cmets)。我还确保所有依赖项都使用大于修补的 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"

app实际使用WebView的唯一部分是通过模块react-native-signature-canvas,它不仅使用webview版本>= 7.5.2还通过useWebKit={true}作为props,保证使用WKWebView,不是UIWebView

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

【问题讨论】:

  • 我也收到了版本 36 的相同警告。似乎还有另一个参考使用:grep -r UIWebView node_modules/* 二进制文件 node_modules/react-native-gesture-handler//ios/ build/RNGestureHandler/Index/DataStore/v5/records/EJ/UIWebView 在 react-navigation 的文档中,我认为 react-navigation 工作需要 native-gesture-handler。

标签: react-native uiwebview app-store wkwebview


【解决方案1】:

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

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

【讨论】:

  • 2020 年 12 月。ITMS-90809:已弃用的 API 使用 - 从 2020 年 12 月开始,Apple 将停止接受使用 UIWebView API 的应用更新提交。
【解决方案2】:

如果你使用的是useWebKit={true},也就是说,你使用的是WKWebView,而不是UIWebView。然后您可以执行以下操作来解决问题 - 已弃用的 API 使用。

  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,没有任何权限警告。

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

【讨论】:

  • 您能否逐步说明如何删除这些库?
猜你喜欢
  • 2020-09-25
  • 1970-01-01
  • 2019-11-26
  • 2020-12-06
  • 2018-08-11
  • 2020-09-11
  • 2020-08-20
  • 1970-01-01
  • 2020-08-25
相关资源
最近更新 更多