私は Google Chrome プッシュ通知に取り組んでおり、ペイロードを Google Chrome ワーカーに送信しようとしていますが、このペイロードをどのように受信するかがわかりません。
通知を作成してデータベースに保存するためのAPIがあり、値を送信してhttps://android.googleapis.com/gcm/send
worker.jsで受信する必要があります。
これは私のworker.jsです
self.addEventListener('push', function(event) {
var title = 'Yay a message.';
var body = 'We have received a push message.';
var icon = '/images/icon-192x192.png';
var tag = 'simple-push-demo-notification-tag';
event.waitUntil(
self.registration.showNotification(title, {
body: body,
icon: icon,
tag: tag
})
);
});
これが私がGCMと呼ぶものです
curl --header "Authorization: key=AIzaSyDQjYDxeS9MM0LcJm3oR6B7MU7Ad2x2Vqc" --header "Content-Type: application/json" https://android.googleapis.com/gcm/send -d "{ \"data\":{\"foo\":\"bar\"}, \"registration_ids\":[\"APA91bGqJpCmyCnSHLjY6STaBQEumz3eFY9r-2CHTtbsUMzBttq0crU3nEXzzU9TxNpsYeFmjA27urSaszKtA0WWC3yez1hhneLjbwJqlRdc_Yj1EiqLHluVwHB6V4FNdXdKb_gc_-7rbkYkypI3MtHpEaJbWsj6M5Pgs4nKqQ2R-WNho82mnRU\"]}"
取得しようとしましたevent.data
が、これは未定義です。
何かアイデアや提案はありますか?
ベストアンサー1
残念ながら、それは意図された動作:
Chrome の Push API の現在の実装の欠点は、プッシュ メッセージでペイロードを送信できないことです。いいえ、問題ありません。その理由は、将来の実装では、ペイロードをプッシュ メッセージ エンドポイントに送信する前に、サーバー上で暗号化する必要があるためです。こうすることで、エンドポイント (プッシュ プロバイダーが何であれ) は、プッシュ ペイロードの内容を簡単に表示できなくなります。これにより、HTTPS 証明書の検証が不十分な場合や、サーバーとプッシュ プロバイダー間の中間者攻撃などの他の脆弱性からも保護されます。ただし、この暗号化はまだサポートされていないため、当面は、通知に入力するために必要な情報を取得するためにフェッチ リクエストを実行する必要があります。
前述のように、回避策としては、プッシュを受信した後、バックエンドに連絡して、サードパーティのサーバーに保存されているデータを取得することです。