2

私のWebアプリケーション(Angular4を使用)では、サービスワーカーの生成に"@angular/service-worker": "^1.0.0-beta.16"を使用しています。また、FCMプッシュ通知にfirebase-messaging-sw.jsを使用しています。アングル/サービスワーカーはプロダクションビルドでのみworker-basic.min.jsを作成します。今、これら2人のサービスワーカーを一緒に使う方法は?FCMプッシュ通知付きアングルサービスワーカー

答えて

3

私は同時に使用について応答することができます:

  • SW-プリキャッシュ(その目的は静的ressourcesをキャッシュすることである)service-worker.jsとして実装サービスワーカー。 (その目的のWebプッシュ通知を処理することです)firebase-messaging-sw.jsとして実装https://coryrylan.com/blog/fast-offline-angular-apps-with-service-workers

  • Firebaseメッセージングサービスワーカーを参照してください。

1.開発:srcディレクトリに:

  • 私はservice-worker.jsという名前の空のファイルを作成します。実際のものはビルドプロセスの後に生成されますが、ng serveで提供されている間にエラーメッセージを避けるためにこのファイルが存在しなければなりません(空であっても)。
  • 私はその内容であるfirebase-messaging-sw.jsという名前のファイルを作成します(両方wwwhttps://を追加し、stakoverflowリンクの数で私を制限します!)

    importScripts('www.gstatic.com/firebasejs/3.9.0/firebase-app.js'); importScripts('www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js'); firebase.initializeApp({ 'messagingSenderId': 'xxxxxxxxxxxx' // replace by yours! }); const messaging = firebase.messaging();
  • 私はglobal-sw.jsという名前のファイルを作成します。これはサービスワーカー に登録する必要がありますindex.html(私に尋ねる方法)。 global-sw.jsの内容は次のとおりです。.angular-cli.jsonの

    importScripts('service-worker.js'); importScripts('firebase-messaging-sw.js');

2.アップデート:これらのファイルは、(生産ビルドプロセスで生成された)私の将来distディレクトリに含まれていると、私は.angular-cli.jsonを更新しますこの方法: .angular-cli.json - extract

3.生産ビルド:私はその後、私はservice-worker.jsを生成ng build -prodを実行します。私の場合、これはビルドプロセスの後にのみ生成することができます。

+0

空のservice-worker.jsを作成するのが最善の解決策であるかどうかはわかりませんが、これまでのところ私にとって唯一の解決策です。だから、ありがとうございます..フォルダを作成して3つそこのサービスワーカーのスクリプト..あなたは思いませんか?またはサービスワーカーはルートからサービスを提供する必要がありますか? – MurWade

+0

'src'ディレクトリでは、開発中にconsoleのエラーメッセージを避けるために' service-worker.js'は空です。しかし、ビルド時間の後、実際には 'dist'フォルダに生成されます(私のステップ#3を参照)。とにかく、他のファイルの中でバンドル(ビルド時に作成されたもの)を参照するため、別の時刻に生成することはできません。 –

+0

そうです。私はちょうどそれがエラーを取り除くためにファイルを持っていることを迷惑であると思う。しかし、それは動作します! – MurWade

0

swprecacheモジュールのAPI用のSWPrecacheWebpackPluginラッパーには、この場合は「firebase-messaging-sw.js」などのインポートに使用できる「importScripts」というオプションがあります。

関連する問題