Javascript を使用して Google Chrome プッシュ通知にデータ / ペイロードを送信する 質問する

Javascript を使用して Google Chrome プッシュ通知にデータ / ペイロードを送信する 質問する

私は Google Chrome プッシュ通知に取り組んでおり、ペイロードを Google Chrome ワーカーに送信しようとしていますが、このペイロードをどのように受信するかがわかりません。

通知を作成してデータベースに保存するためのAPIがあり、値を送信してhttps://android.googleapis.com/gcm/sendworker.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 証明書の検証が不十分な場合や、サーバーとプッシュ プロバイダー間の中間者攻撃などの他の脆弱性からも保護されます。ただし、この暗号化はまだサポートされていないため、当面は、通知に入力するために必要な情報を取得するためにフェッチ リクエストを実行する必要があります。

前述のように、回避策としては、プッシュを受信した後、バックエンドに連絡して、サードパーティのサーバーに保存されているデータを取得することです。

おすすめ記事