【发布时间】:2020-10-16 02:57:02
【问题描述】:
我正在构建一个 PWA 应用程序,所以我:
- 照常创建新的 Angular 应用 (CLI 9.1.8);
- 根据文档 (https://angular.io/guide/service-worker-getting-started) 添加了 PWA 支持;
- 用
ng build --prod构建它; - 将其复制到配置为为静态网站提供服务的 S3 存储桶;
- 在 Chrome 上浏览成功。
问题是:
- 事件
beforeinstallprompt永远不会被触发; - 开发者工具 -> 应用程序从来没有说有为这个站点注册的 Service Worker。
另一方面,如果我在本地提供它(比如 http-server dist/my-app)并在 Chrome 上浏览它,它可以正常工作,与 beforeinstallprompt、Service Worker 和其他一切一起使用。
但是,与我在 S3 静态网站上浏览它时发生的情况类似,如果我使用我的 iPhone/Android 浏览使用 WI-FI 网络在我的桌面上提供的应用程序,它不会完全正常工作。我知道 iOS 不支持 beforeinstallprompt 事件,但它也不会在 Android 上发生。
从 S3 静态网站提供 PWA 可能不是问题,而是使用我的应用程序?也许我错过了一个步骤或其他什么。
因此,总结一下:它仅在从 localhost 提供应用程序并在同一台机器上运行的 Chrome 上浏览时才有效。
注意:不确定这是否重要,但我目前没有使用 AWS Amplify。可能在未来,但还没有。从 S3 静态网站提供 PWA 是否需要这样做?
【问题讨论】:
-
我现在才意识到,如果我使用 WI-FI ip(一些 192.168.15.3 之类的东西)浏览 Chrome 上提供的本地服务,它不会像 S3 和 iPhone 那样工作。所以它只在浏览本地主机地址时有效。
-
HTTPS?我想就是这样......
-
是的,我确实这么认为。我生成了一个证书并在我的 http-server 上使用;从桌面 IP 浏览 PWA 并得到:“Service Worker 注册失败:DOMException:无法使用脚本('192.168.12.3:8080/ngsw-worker.js')为范围('192.168.12.3:8080/')注册 ServiceWorker:获取脚本时发生 SSL 证书错误。 " - 没有 HTTPS,它不会触发 service worker 注册。
-
好的。我是一个愚蠢的新手。 HTTPS 是正确 PWA 的必要条件。 (1) developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/… 和 (2) stackoverflow.com/a/55676452/7822700
-
是的,我做到了。根据我以前的cmets。谢谢。
标签: angular amazon-s3 progressive-web-apps angular-service-worker