2

Webプッシュ通知にFirebaseサービスワーカーを使用しています。現在、私はこのエラーに直面しています:Uncaught FirebaseError:メッセージング:この方法はWindowコンテキストで利用可能です

Uncaught FirebaseError: Messaging: This method is available in a Window context. (messaging/only-available-in-window). 

私はSWを登録するために私のデスクトップ上のウェブサイトを使用しています。この問題を解決するにはどうすればよいですか?

エラースタックコンソールになっています。

browserErrorMessage: "Failed to register a ServiceWorker: ServiceWorker script evaluation failed" 
code :"messaging/failed-serviceworker-registration" 
message :"Messaging: We are unable to register the default service worker. Failed to register a ServiceWorker: ServiceWorker script evaluation failed (messaging/failed-serviceworker-registration)." 
stack: "FirebaseError: Messaging: We are unable to register the default service worker. Failed to register a ServiceWorker: ServiceWorker script evaluation failed (messaging/failed-serviceworker-registration).↵ at https://www.gstatic.com/firebasejs/3.7.0/firebase.js:555:225" 
__proto__: Error 

あなたがサービスワーカーファイル(firebaseメッセージング-sw.js) constのメッセージングに次のコードを追加している可能性があるため)(=これが起こっているあなたにfirebase.messagingを

答えて

0

ありがとうございました。

コードを削除してコードを確認してください。

上記の行は、index.htmlにのみ追加する必要があります。

+0

これは間違っています。別の答えを見てください(PaulPaulsenさん) – tutankhamun

0

それは非常に多くのSWで必要とされ、ラインをキープしてください:

const messaging = firebase.messaging();

問題自体をメッセージングではありませんが、しかし、サポートされていない、あなたのSWで使用されていることの最も可能性の高い部分そこで。

は、悲しいことに私はSWから、あなたのコードを見ることはできませんが、私にとっては、この問題を引き起こしていたものは、ウェブサイトがフォアグラウンドにあるとき、私は、メッセージを受信するために、次の実装ということでした。しかし

messaging.onMessage(function(payload) { 
    console.log("Message received. ", payload); 
    // ... 
}); 

このウィンドウのコンテキストが必要であり、SWではなく実際のWebサイトに実装する必要があります。私にとって、これは説明したエラーを引き起こしました。

Firebases sample SWを試してみてください。これは必要なすべてを行っており、バックグラウンドで通知を受け取ることができます。

SWコードを共有したい場合は、それを見てください。

2

このメソッドは、サービスワーカーではなく、メインのjavascriptファイルにある必要があります。サービスワーカーはバックグラウンドで動作します。

messaging.onMessage(function(payload) { 
     console.log("Message received. ", payload); 
     // ... 
    }); 
+0

@kimberleeあなたはこれを試しましたか?助けてくれたの? – Deepak

-1

同様のエラーが発生しました。従来のサーバーキーではなく新しいサーバーキーを使用するようにJavaScriptを更新すると、エラーが取り除かれました。新しいキーを取得するには、Firebase Console - > Cloud Messagingを選択します。 Firebaseコンソールの概要ページのWebアプリケーションクイックスタートでも、従来のキーが使用されています。

var config = { 
    apiKey: "<**newAPIKey**>", 
    authDomain: "<domain>", 
    databaseURL: "<databaseUrl>", 
    projectId: "<id>", 
    storageBucket: "", 
    messagingSenderId: "<SenderId>" 
}; 
firebase.initializeApp(config); 
+0

apiKey!=クラウドメッセージングサーバーのキー。ところで、 'server id'は' server key'ではなく、 –

関連する問題