博客 RSS 订阅

已更新:如何在上传到 App Store 时处理 “已弃用的 API 使用 - UIWebView” 警告
作者:Niklas Merz
2020 年 7 月 18 日

我们最近发布了说明,说明如何更新您的应用程序以删除所有 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 支持。通过自定义方案提供您的应用程序内容可以解决由于 WKWebViewfile 方案应用了严格的安全策略而存在的 CORS 问题。您可以通过在 config.xml 文件中设置首选项选项 schemehostname 轻松配置您的 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');