首页 > 解决方案 > Service Worker 与 Cordova inappbrowser 和外部 Web 应用程序集成

问题描述

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

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

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

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

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 加载?

标签: cordovaservice-workerinappbrowser

解决方案


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


推荐阅读