服务人员与Cordova内置浏览器和外部Web应用程序集成

时间:2018-09-15 16:38:57

标签: cordova service-worker inappbrowser

我有一个使用Create React App构建的托管Web应用程序,该应用程序利用服务工作者来允许应用程序在脱机时打开和查看。

我将Cordova用作混合应用程序包装,它使用cordova-plugin-inappbrowser加载外部Web内容并将其显示在本机ios或android设备上给用户。

我希望在网络中断时能够打开应用程序(假设用户已经打开过一次并且内容已被缓存)。据我所知,当服务工作者被加载到内置浏览器中并且互联网可以正常工作时,它似乎正在正确运行并缓存内容。它的控制台日志输出表明正在发生这种情况。

如果在禁用网络的情况下关闭并重新打开了应用程序,则该应用程序将报告网络错误,并且不会加载。这是产生错误的代码行:

inAppBrowserRef = cordova.InAppBrowser.open(url, '_blank', 'location=no,zoom=no,toolbar=no,hidenavigationbuttons=yes'); //open the in app browser with no location bar

在继续执行任何服务程序代码之前,该代码似乎试图验证URL是否存在。有没有办法告诉InAppBrowser首先从缓存的内容而不是网络URL加载?

1 个答案:

答案 0 :(得分:1)

服务工作者在iOS 14中可用于WKwebview,并且有使用它的IAB版本。 com.apple.developer.WebKit.ServiceWorkers应该作为值为YES的布尔值添加到.entitlements plist中。 您要在IAB中加载的网站应该是https或localhost。