如何修复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引用,但仍在核心包中显示了很少的引用(我想)

enter image description here

任何人都可以帮助我如何解决剩余的UIWebView引用吗?

我正在使用 cordova:10.0.0 /离子型: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

如果未返回任何结果,则说明您应用的源代码中没有UIWebView引用。

但是,如果将二进制文件上传到App Store Connect时仍然收到ITMS-90809警告,则可能是因为Cordova应用程序中的插件包含/依赖于引用UIWebView的第三方框架。 您也可以将其作为outlined here进行检查,但过程会比较棘手:

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

如果有任何匹配项,则需要查找哪个Cordova插件包含该Framework。 然后,将插件版本更新为包含不使用UIWebView的新Framework版本的插件版本 或者如果不存在,则针对该插件提出问题,自行修复并提出PR 否则,请从您的Cordova应用中删除该插件。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...