サービスワーカーを正常に登録しましたが、コード
navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) {
// Do we already have a Push message subscription?
....
ハング-関数は呼び出されません。どうして?
問題は、service-worker.jsファイルがassets
サブディレクトリに保存されていたことです。
しないでください:service-worker.jsをroot of your app
(以上)。そうすれば、アプリはサービスワーカーにアクセスできます。
HTML5Rocksの記事 を参照してください-
Registerメソッドの微妙な点の1つは、Service Workerファイルの場所です。この場合、Service Workerファイルはルートのドメイン。つまり、Service WorkerのスコープはOrigin全体になります。つまり、このService Workerは、このドメイン上のすべてのフェッチイベントを受け取ります。サービスワーカーファイルを/example/sw.jsに登録すると、サービスワーカーは、URLが/ example /(つまり/ example/page1 /、/ example/page2 /)で始まるページのフェッチイベントのみを表示します。
追加
新しい問題は、ページがハードリロードされると、サービスワーカーが準備ができなくなることです。その後のソフトページのリロードは正常に機能します。 Google自身のサンプルコードは失敗します。 Chromeバグレポートをご覧ください。
バグ修正はChrome 44。に含まれていました
私の場合-タブを閉じてからもう一度開くだけです...