cordova - 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 加载?
解决方案
服务工作者在 iOS 14 中可用于 WKwebview,并且有一个使用它的 IAB 版本。com.apple.developer.WebKit.ServiceWorkers 应作为布尔值添加到 .entitlements plist 中,值为 YES。您在 IAB 中加载的网站应该是 https 或 localhost。
推荐阅读
- php - 数据表网 | 表 id=tbl_portfolio - 无效的 JSON 响应
- android - 为什么在 onResume 中调用 startLocationUpdates,在 onPause 中调用 stopLocationUpdates?
- google-chrome - 扩展上下文无效。Chrome 扩展程序
- javascript - AWS API Gateway CORS-header 'Access-Control-Allow-Origin' 缺失
- svg - 如何优化 SVG 路径?
- python - 我的项目在 conda 环境中使用什么包
- java - 从 Java 运行时调用 Python 脚本 OSError
- django - Django 类视图 - MultipleObjectsReturned 错误
- sql - 完成状态出现 2 次及以上时的返回值
- longtable - Longtable、 papaja 和单行距