Firebaseメッセージング(Web)を使用しようとしています。 Firebaseはデフォルトで、サービスワーカーを保持するファイル「firebase-messaging-sw.js」を検索します。
Service Workerスクリプトは、アプリケーションの絶対パス上にあることが期待されています!例: http://localhost/firebase-messaging-sw.js
このデフォルトの場所を変更するには?!公式ドキュメントを検索すると、このメソッドが見つかりました:useServiceWorker
サービスワーカーの登録を受け入れますが、使用しようとすると、メソッドが存在しないというエラーが表示されます。
それでは、Firebaseメッセージングのサービスワーカーの場所を変更する方法は?
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
firebase.messaging().useServiceWorker(registration)
を実行し、既存のService Worker登録を渡すことができるはずです。できるだけ早く、これを呼び出す必要があることに注意してください。 getToken()
またはonMessage()
。
useServiceWorker(registration)
を使用することで、既存のService Workerを介してFirebase Pushメッセージングでnotificationonclick
イベントを使用できます。
firebase.messaging().useServiceWorker(registration)
は機能し、問題を解決しましたが、次の場合にはわからないことに注意してください。
これは、サーバーからペイロードを取得するための安全な方法です。
これは、プッシュ通知を処理する最良の方法です。