服务工作者在iOS 11.3测试版的WKWebView
中可用,但似乎没有在iOS 11.3的最终GM版本中提供。
有没有人知道如何在iOS上WKWebView
重新启用服务工作者?
答案 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
答案 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视为可用权利。