9

WebアプリケーションでWebプッシュ通知を実装する必要があるため、私は自分のアプリでFirefoxベースのクラウドメッセージングをdocsの助けを借りてセットアップしました。通知の許可を許可し、許可を受け入れる場合はトークンIDも取得します。ローカルホスト上のWeb用のFCMプッシュ通知を受け取りません

問題は、生成されたトークンをテストするための通知を送信しようとしたときに、メッセージが送信されたという応答が表示されていますが、クライアント側で受信できません。

私が正常にサービスワーカーファイルを登録することができるよ

私のindex.html

<head> 
    <script src="https://www.gstatic.com/firebasejs/4.4.0/firebase.js"></script> 
    <link rel="manifest" href="./firebase.json"> 
</head> 
<script> 
    if ('serviceWorker' in navigator) { 
    navigator.serviceWorker.register('./firebase-messaging-sw.js').then(function(registration) { 
     console.log('Firebase Worker Registered'); 

    }).catch(function(err) { 
     console.log('Service Worker registration failed: ', err); 
    }); 
    } 
    </script> 

マイApp.component.ts

var config = { 
      apiKey: "somekey", 
      authDomain: "someproject-2.firebaseapp.com", 
      databaseURL: "https://someproject-2.firebaseio.com", 
      projectId: "someproject-2", 
      storageBucket: "", 
      messagingSenderId: "someid" 
      }; 
      firebase.initializeApp(config); 



     const messaging = firebase.messaging(); 

     messaging.requestPermission() 
     .then(function() { 
      console.log('Notification permission granted.'); 
      return messaging.getToken() 
     }) 
     .then(function(result) { 
      console.log("The token is: ", result); 
     }) 
     .catch(function(err) { 
      console.log('Unable to get permission to notify.', err); 
     }); 

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

私は許可ダイアログを取得していますこのコードで許可を求めてトークンを取得する

私が以前使用していたカールコード私は正常にこのコード

で通知を送信することができるよメッセージに

curl -X POST -H "Authorization: key=somekey" -H "Content-Type: application/json" -d '{ 
    "notification": { 
    "title": "Portugal vs. Denmark", 
    "body": "5 to 1", 
    "icon": "firebase-logo.png", 
    "click_action": "http://localhost:8081" 
    }, 
    "to": "sometoken" 
}' "https://fcm.googleapis.com/fcm/send" 

を送って、私はそれがローカルホスト上にあるかもしれないので、私は間違っているつもりだところを見つけ出すことはできませんか?おそらくonMessageメソッドが正しく実行されていませんか?どんな助けも高く評価されます!

+0

サービスワーカーは安全でない原点では動作しません。あなたのローカルホストはhttps上になければなりません。 –

+0

問題が見つかりましたか?私は全く同じ問題を抱えています。 – chrisonline

+0

仲間はいません。私が見つけた場合にはお知らせします –

答えて

0

よしを参照してください、私はstackoverflowの上で、このための任意の答えを取得していないので、私は自分でそれをしなければならないし、それが働いてしまいました!

サービスワーカーファイルに問題がありました。私は明らかにメッセージング変数を定義していません。

誰かがこの問題に直面している場合は、サービスワーカーファイルが次のようになっていることを確認してください。

importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js'); 
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js'); 

firebase.initializeApp({ 
    'messagingSenderId': '182145913801' 
    }); 

const messaging = firebase.messaging(); 
0

FCMのウェブサイト上で述べたように:

FCM SDKのみHTTPS経由で提供されるページでサポートされています。これは、HTTPSサイトでのみ利用可能なサービスワーカーの使用によるものです。

https://firebase.google.com/docs/cloud-messaging/js/client

+1

httpsではない私たちのステージングウェブサイトに変更を配備したので、私はそう思わないと思います。サイトはhttps ではありませんが、ローカルではサービスワーカーを登録してトークンを取得することができます。これはローカルホスト上で実行できることを示しており、firebaseのチュートリアルのユーザーが自分のhttp localhost –

+1

あなたが正しいです、それは 'localhost'がクロムに​​ホワイトリストされているので、私の間違いは合意しました@ManzurKhanSarguroh –

+0

あなたは仲間に答える時間を取っていただきありがとう –

0

私は同様の問題がありました。私はfirebaseでクラウドメッセージングに行き、サーバーキーを取得し、それをカールリクエストに追加しました。

curl --header "Authorization: key=CloudMessagingServerKey" --header "Content-Type: application/json" -d '{ 
    "notification": { 
     "title": "FCM Message", 
     "body": "This is an FCM Message", 
     }, 
    "to": "token from messaging.getToken()" 
    }' "https://fcm.googleapis.com/fcm/send" 

と私firebaseメッセージング-sw.jsは私のためにトリックをした

importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase- 
app.js'); 
importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase- 
messaging.js'); 

firebase.initializeApp({ 
    apiKey: 'yourapikey', 
    authDomain: 'xxxx.firebaseapp.com', 
    databaseURL: 'https://xxxx.firebaseio.com', 
    projectId: 'xxxx', 
    storageBucket: 'xxxx.appspot.com', 
    messagingSenderId: 'your message sender Id', 
}); 

const messaging = firebase.messaging(); 

次のコードのように見えました。私のエラーは私が間違ったserverKeyを使用していたため、firebase-messaging-sw.jsでimportScriptsを使用していませんでした。

関連する問題