首页 > 解决方案 > 如何修复 UIWebView 已弃用的 Ionic 3

问题描述

在收到苹果关于 UIWebView 的消息后

ITMS-90809:不推荐使用的 API - Apple 将停止接受使用 UIWebView API 的应用程序的提交。有关更多信息,请参阅https://developer.apple.com/documentation/uikit/uiwebview

为了修复它,更新了 Cordova 10 和 cordova-ios 6.1.1。它修复了 IOS 平台中的大部分 UIWebView 引用,但它仍然在核心包中显示很少的引用(我猜)

在此处输入图像描述

谁能帮助我如何修复剩余的 UIWebView 引用?

我正在使用科尔多瓦:10.0.0 / 离子:3.9.2 /科尔多瓦-ios:6.1.1

标签: cordovaionic3cordova-ios

解决方案


您屏幕截图中的UIWebView字符串匹配参考vendor.js。这些并不重要,因为 Apple 只关心您的应用程序的本机(Objective-C/Swift)代码,即 UIWebView。

要仅搜索相关文件类型的源文件,请尝试以下操作:

grep -inr --include \*.h --include \*.m --include \*.swift UIWebView platforms/ios

如果这没有返回任何结果,则您的应用程序的源代码没有 UIWebView 引用。

但是,如果您在将二进制文件上传到 App Store Connect 时仍然收到 ITMS-90809 警告,可能是因为您的 Cordova 应用程序中的插件包含/依赖于引用 UIWebView 的第三方框架。您也可以按照此处概述的方式进行检查,但过程稍微复杂一些:

  • 在 Xcode 中归档您的应用程序
  • 在管理器窗口中右键单击它并在 Finder 中显示
  • 然后右键单击.xcarchive并显示包内容
  • 在此位置打开一个终端窗口并导航到Products/Applications/MyAppName.app
  • 然后运行以下命令来扫描应用程序中包含的框架以获取 UIWebView 引用:
    for framework in Frameworks/*.framework; do
      fname=$(basename $framework .framework)
      nm $framework/$fname | grep UIWebView
    done

如果有任何匹配项,您需要找到包含该框架的 Cordova 插件。然后将插件版本更新为包含不使用 UIWebView 的新框架版本的版本,或者如果不存在,请针对插件提出问题,自行修复并提出 PR,或者如果其他所有方法都失败,则删除该版本Cordova 应用程序中的插件。


推荐阅读