web-dev-qa-db-ja.com

Firebase:サービスワーカーの場所を変更する

Firebaseメッセージング(Web)を使用しようとしています。 Firebaseはデフォルトで、サービスワーカーを保持するファイル「firebase-messaging-sw.js」を検索します。

Service Workerスクリプトは、アプリケーションの絶対パス上にあることが期待されています!例: http://localhost/firebase-messaging-sw.js

このデフォルトの場所を変更するには?!公式ドキュメントを検索すると、このメソッドが見つかりました:useServiceWorkerサービスワーカーの登録を受け入れますが、使用しようとすると、メソッドが存在しないというエラーが表示されます。

それでは、Firebaseメッセージングのサービスワーカーの場所を変更する方法は?

30
Dewan159

Michaelが呼び出したように、使用するメソッドはuseServiceWorker(<registration>)です。

https://firebase.google.com/docs/reference/js/firebase.messaging.Messaging#useServiceWorker

Messagingクラスは、callfirebase.message()を呼び出したときに返されるものです。

したがって、サンプルは次のようになります。

navigator.serviceWorker.register('./example/sw.js')
.then((registration) => {
  messaging.useServiceWorker(registration);

  // Request permission and get token.....
});

Githubのデモアプリで問題なくこれを試しました: https://github.com/firebase/quickstart-js/tree/master/messaging

48
Matt Gaunt

firebase.messaging().useServiceWorker(registration)を実行し、既存のService Worker登録を渡すことができるはずです。できるだけ早く、これを呼び出す必要があることに注意してください。 getToken()またはonMessage()

8
Michael Bleigh

useServiceWorker(registration)を使用することで、既存のService Workerを介してFirebase Pushメッセージングでnotificationonclickイベントを使用できます。

firebase.messaging().useServiceWorker(registration)は機能し、問題を解決しましたが、次の場合にはわからないことに注意してください。

  • これは、サーバーからペイロードを取得するための安全な方法です。

  • これは、プッシュ通知を処理する最良の方法です。

0