0

デスクトップ通知をサポートする Web サイトを開発しています。GCM と Azure Notification Hub を利用して、エンド ユーザーにプッシュ メッセージを送信しています。このコードラボチュートリアルに従いました。テスト中に、プッシュ通知が画面に表示されることがわかりましたが、ペイロードに書き込んだメッセージが通知に表示されません。それで、私は再び Codelab を調べましたが、彼らはメソッドのbodyキーについて言及しましたshowNotification

コード

self.addEventListener('push', function(event) {
    console.log('Push message', event);
    var title = 'Push message';
    event.waitUntil(
        self.registration.showNotification(title, {
            body: 'The Message',
            icon: 'images/icon.png',
            tag: 'my-tag'
    }));
});

彼らはshowNotification関数に「The Message」をハードコーディングしました。メッセージは常に同じではなく、時々変化するため、メッセージを関数にハードコーディングしたくありません。関数がメッセージをペイロードに入れて表示する方法を知りたいです。前もって感謝します!

4

1 に答える 1

0

Chrome はまだプッシュ ペイロードをサポートしていません。現時点では、Firefox でのみ使用できます。

fetch解決策は、通知を受け取ったら( を使用して) サーバーからペイロードを要求することです。

このようなもの:

self.addEventListener('push', function(event) {
  event.waitUntil(
    fetch('./getPayload?someUniqueID=' + someUniqueID)
    .then(function(response) {
      return response.text();
    })
    .then(function(payload) {
      self.registration.showNotification('Title', {
        body: payload,
      });
    })
  );
});

明らかに、応答は JSON にすることもできるため、すべて (タイトル、本文、アイコンなど) を指定できます。

ここで例を見ることができます: https://serviceworke.rs/push-get-payload.html

別の考えられる解決策は、利用可能な場合はペイロードを使用し、fetchそれ以外の場合は使用することです。このようにして、Firefox (および利用可能になった Chrome) の機能を利用し、ペイロードをまだサポートしていないブラウザーのフォールバックを利用できます。Mercuriusに例があります。

于 2016-02-26T09:36:17.630 に答える