サービスワーカーの登録は成功しましたが、その後コードが
navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) {
// Do we already have a push message subscription?
....
ハングします -- 関数が呼び出されません。なぜでしょうか?
ベストアンサー1
問題は、service-worker.js ファイルがassets
サブディレクトリに保存されていたことです。
そうしないでください。service-worker.js をroot of your app
(またはそれ以上) に保存してください。そうすれば、アプリは service-worker にアクセスできるようになります。
見るHTML5Rocksの記事--
レジスター方式の微妙な点は、サービスワーカーファイルの場所。この場合、サービス ワーカー ファイルがドメインのルートにあることがわかります。つまり、サービス ワーカーのスコープはオリジン全体になります。言い換えると、このサービス ワーカーは、このドメイン上のすべてのフェッチ イベントを受け取ります。サービス ワーカー ファイルを /example/sw.js に登録すると、サービス ワーカーは、URL が /example/ で始まるページ (つまり、/example/page1/、/example/page2/) のフェッチ イベントのみを受け取ります。