服务工作者在iOS 11.3中的WKWebView中不可用

时间:2018-04-05 13:18:34

标签: wkwebview service-worker

服务工作者在iOS 11.3测试版的WKWebView中可用,但似乎没有在iOS 11.3的最终GM版本中提供。

有没有人知道如何在iOS上WKWebView重新启用服务工作者?

3 个答案:

答案 0 :(得分:11)

WKWebView中的服务工作者现在需要一项权利:

com.apple.developer.WebKit.ServiceWorkers,应该.entitlements plist作为Boolean添加YES

目前这只适用于iOS模拟器,直到Apple更新Apple Developer Portal,才能创建包含此权利的App ID和Provisioning Profiles。

有关详情,请参阅此错误:https://bugs.webkit.org/show_bug.cgi?id=182865及相关的更改集:https://trac.webkit.org/changeset/228933/webkit

enter image description here

答案 1 :(得分:2)

此权利现在可用于 iOS 14 (com.apple.developer.web-browser)。由于Apple现在允许其他浏览器成为默认选项,因此提供了一种新权利,其中也包括服务人员!

更新的文档可以在这里找到: Apple Docs

以下是有趣的部分:

使用默认浏览器功能

-使用com.apple.developer.web-browser托管权利的应用程序可以:

-是用户选择作为其默认浏览器的选项。

-从具有完全脚本访问权限的所有域中加载页面。

-在WKWebView实例中使用Service Workers

但这有很大的缺点。 通用链接不再起作用,并且info.plist有一个不允许使用的密钥列表(请参阅链接)。

有人可以在应用商店中使用此权利确认拥有WKWebview吗?


更新:

更好的解决方案可能是使用App Bound Domains

这最多可用于10个域,并且您将WKWebview限制为这些域!它不适用于其他网站。您不必拥有域。

向您的WKWebviewConfiguration添加以下内容:

let configuration = WKWebViewConfiguration()
configuration.limitsNavigationsToAppBoundDomains = true

在您的信息plist中,添加带有WKAppBoundDomains的密钥:

<key>WKAppBoundDomains</key>
<array>
  <string>example.com</string>
  <string>example2.com</string>
</array>

快速测试后返回'serviceWorker' in navigator === true。 如果通过审核过程,这可能是PWA的突破!!!

答案 2 :(得分:1)

有关此问题的任何新闻吗?尽管如此,在开发人员门户网站应用程序ID中仍未将com.apple.developer.WebKit.ServiceWorkers视为可用权利。