我们最近发布了说明,说明如何更新您的应用程序以删除所有 UIWebView
引用,因为 Apple 现在会拒绝所有使用 UIWebView
的应用程序。
我们正在讨论这个警告
ITMS-90809: 已弃用的 API 使用 - Apple 将停止接受使用 UIWebView API 的应用程序提交。
自上次发布以来,一些事情发生了变化,并且发布了新版本的 cordova-ios。
将 cordova-ios 更新到 6.0.0 或更高版本
请更新到最新的 cordova-ios
版本,以获得与最近 iOS 更改的最佳兼容性。截至本文撰写时,当前版本为 6.1.0。cordova-ios 的 6.0.0 版本将 WKWebView
支持移到了 cordova-ios
中,并删除了 UIWebView
代码。由于此更改,cordova-plugin-wkwebview-engine
插件已过时,并且无法在此版本中使用。如果您已安装此插件,则可以通过 cordova plugin remove cordova-plugin-wkwebview-engine
安全地将其删除。
此外,此版本还引入了 WKURLSchemeHandler
支持。通过自定义方案提供您的应用程序内容可以解决由于 WKWebView
对 file
方案应用了严格的安全策略而存在的 CORS 问题。您可以通过在 config.xml
文件中设置首选项选项 scheme
和 hostname
轻松配置您的 Cordova 项目以使用自定义方案。请记住,使用自定义 URL 方案运行您的应用程序会更改您的 Web 代码的来源,并且您将失去对 Web 存储(例如本地存储、索引数据库等)的访问权限。
<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />
重要的是要知道,随着 WKURLSchemeHandler
的引入,已放弃对 iOS 10 的支持。
仍然收到警告?
如果您仍然收到警告,则很可能是您的项目中一个或多个插件仍然引用了 UIWebView
。您需要确定哪些插件包含 UIWebView
代码,并通过其支持渠道(例如其插件的存储库)联系这些插件的开发者。他们需要通过删除引用或使用新标志包装引用来修复其插件。
使用其他 WKWebView 插件
由于 WKWebView
已集成并且 UIWebView
已被删除,因此这些 cordova-ios
版本不再需要官方的 Apache WKWebView 插件。可以使用其他 WKWebView 插件。请确保它们已更新并使用最新版本。如果您对其插件有任何问题或使用疑问,请阅读其文档并通过其支持渠道请求帮助。
CORS 问题
如果您遇到任何 CORS 问题,Cordova PMC 成员 Norman Breau 在他的博客上发布了一篇文章,其中对 CORS 进行了很好的解释。
Weview 问题
如果使用自定义方案,WKWebView
将不允许在 img/video 标签中加载文件 URL(也不允许获取它们,或任何内容)。cordova-ios
添加了一个辅助方法来将文件 URL 转换为具有方案且 WKWebView
可以理解的 URL。
window.WkWebView.convertFilePath('your/file/path');