1

Service Worker を使用して Web プッシュ通知のデモをセットアップしようとしています。Service Worker の sw.js には、次のコードがあります。

var title = 'Yay a message.';
var body = 'We have received a push message.';
var icon = 'icon.png';
var tag = 'simple-push-demo-notification-tag';

console.log("Hello!");

self.addEventListener('push', function(event) {
event.waitUntil(
    self.registration.showNotification(title, {
        body: body,
        icon: icon,
        tag: tag
    })
);
});

これは問題なく動作します。cURLプッシュリクエストなどで送信したデータを受け取りたいtitleです。このメソッドですべてのデータを取得する方法はありますwaitUntilか?

どんな助けでも大歓迎です。

4

2 に答える 2

3

次の 2 つの方法があります。

  1. プッシュ ペイロード (例https://serviceworke.rs/push-payload.html )。これはより複雑で、現在Firefox と chrome v50 でのみサポートされています。ペイロードをプッシュ メッセージに添付し、イベントのdataプロパティ ( https://developer.mozilla.org/en-US/docs/Web/API/PushMessageData )を介してアクセスできます。

ペイロードは暗号化する必要があります ( https://datatracker.ietf.org/doc/html/draft-thomson-webpush-encryption-01 )。ライブラリを使用して暗号化の詳細を処理することを強くお勧めします (例: Node. js https://github.com/marco-c/web-push )。

この場合のプッシュ イベント ハンドラーは次のようになります (ペイロードが JSON メッセージとして送信されると仮定します)。

    var data = event.data.json();

    event.waitUntil(
      self.registration.showNotification(data.title, {
        body: data.body,
        icon: data.icon,
        tag: data.tag,
      })
    );
  1. データを取得するためのサーバーへの GET リクエスト。たとえば、サーバーが JSON 応答を返したとします。

    event.waitUntil(
      fetch('someURL')
      .then(response => response.json())
      .then(data =>
        self.registration.showNotification(data.title, {
          body: data.body,
          icon: data.icon,
          tag: data.tag,
        })
      )
    );
    
于 2016-01-20T13:26:22.967 に答える