16

Firebaseメッセージング(ウェブ)を使用しようとしています。 Firebaseは、デフォルトで、サービスワーカーを保持するファイル "firebase-messaging-sw.js"を検索します。Firebase:サービスワーカーの場所を変更してください

サービスワーカースクリプトは、アプリケーションの絶対パス上にある必要があります。例:http://localhost/firebase-messaging-sw.js

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

したがって、firebaseメッセージングのサービスワーカーの場所を変更するにはどうすればよいですか?

答えて

28

マイケルが呼び出すように、使用する方法はuserServiceWorker(<registration>)です。

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

メッセージングクラスを使用すると、firebase.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

6

あなたはfirebase.messaging().useServiceWorker(registration)を行い、既存のサービスワーカー登録を渡すことができます。たとえば、次のような呼び出しが行われる前に、できるだけ早くこの作業を行う必要があります。 getToken()またはonMessage()

+0

はい、確かです。しかし、これを試して私は 'メソッドが存在しない'を得る! – Dewan159

+0

これは私にとってはうまくいきます - 'firebase.messaging.useServiceWorker()'ではなく 'firebase.messaging()。useServiceWorker()'を実行したことを確信していますか? –

+0

このAPIはライブラリのバージョン3.5.0で追加されたので、少なくともそのバージョンに更新してください。 – jwngr

0

useServiceWorker(registration)を使用することにより、あなたがサービスを終了経由Firebaseプッシュメッセージングにnotificationonclickイベントを使用することができますワーカー。

firebase.messaging().useServiceWorker(registration)が働いて、私の問題を解決しますが、場合、私は知らないことに注意してくださいされています。これは、サーバからペイロードを取得する安全な方法ある

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

+0

これは質問への回答ですか、ご質問(要点)を自分でお探しですか? –

+0

要点は私の質問です。サービスワーカーでFirebase Messagingを使用している間は、セキュリティとパフォーマンスに関する考えはありません。この質問はこのトピックに関連しているので、別の質問を作成するつもりはありません。 –

+0

あなたの答えに文言を編集しましたので、あなたの箇条書きのポイントは(質問ではなく)他のユーザーのための考慮事項になりました。あなたの答えは、この質問に良い追加です、ありがとう! –

関連する問題