navigator.serviceWorker は決して準備完了ではありません 質問する

navigator.serviceWorker は決して準備完了ではありません 質問する

サービスワーカーの登録は成功しましたが、その後コードが

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/) のフェッチ イベントのみを受け取ります。

おすすめ記事