如何修复 UIWebView 弃用的 Ionic 3

How to fix UIWebView deprecated Ionic 3

收到苹果关于 UIWebView 的消息后

ITMS-90809:弃用 API 用法 – Apple 将停止接受使用 UIWebView APIs 的应用提交。有关详细信息,请参阅 https://developer.apple.com/documentation/uikit/uiwebview

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

任何人都可以帮助我如何修复剩余的 UIWebView 引用?

我正在使用 cordova: 10.0.0 / ionic: 3.9.2 / cordova-ios: 6.1.1

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

要仅搜索相关文件类型的源文件,试试这个:

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

如果此 returns 没有结果,则您应用的源代码没有 UIWebView 引用。

但是,如果您在将二进制文件上传到 App Store Connect 时仍然收到 ITMS-90809 警告,这可能是因为您的 Cordova 应用程序中的插件 include/depend 在第 3 方框架上引用了 UIWebView。 您也可以将其检查为 outlined here,但过程稍微复杂一些:

  • 将您的应用存档在 Xcode
  • Right-click 在管理器中 window 并在 Finder 中显示
  • 然后在 .xcarchive 上 right-click 并显示包装内容
  • 在此位置打开终端 window 并导航至 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 应用程序中删除该插件。