1

Chrome プッシュ通知 API で、カスタマイズ可能な通知を設定したいと考えています。

私はサービスワーカーについて話している。

Service Worker の例のコードを次に示します。

self.addEventListener('push', function(event) { 
 var data = {};
  if (event.data) {
    data = event.data.json();
  }

    var title = data.message || "Something Has Happened";
  var body = 'We have received a push message !';  
  var icon = '/images/icon-192x192.png';  
  var tag = 'simple-push-demo-notification-tag';

console.log(event);



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

次のような方法でcurlメッセージからデータを取得するにはどうすればよいですか:

curl --header "Authorization: key=---personnal_key---" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"---ID---\"],\"title\":\"ok\"}"

私は例を読みましたが、CURL と Service Worker の組み合わせについて話している人は見当たりません。それは可能ですか?

4

1 に答える 1

1

プッシュ通知 API の現在のイテレーションでは、データを送信できない場合があります (参照: http://updates.html5rocks.com/2015/03/push-notificatons-on-the-open-web )。今のところ、特定のデータを送信する唯一の方法は、それをサーバー上のデータベースに保存し、サービスワーカーにサーバーから取得させることです。ただし、ご想像のとおり、これは多くのセキュリティ上の問題につながる可能性があります。1 つのオプションは、確認のためにサブスクリプションを使用することです。次のように Service Worker からサブスクリプション ID を取得できます。

registration.pushManager.getSubscription().then(function(ps) {
  console.log(ps.subscriptionId)
})

次に、サーバーのセットアップ方法を想定して、Service Worker からサーバーへのフェッチを行うことができます。それはこのように見えるかもしれません

fetch("/"+subscriptionId+"/getLatest").then(function(res) {
    res.json().then(function(data) {
          self.registration.showNotification(data.title, {
          body: data.body,
          icon: data.icon,
          tag: data.tag
        })
    })
})

ただし、これにはすべて、外部サーバーをセットアップする必要があります。cURL リクエストを介してデータを送信することはできません。

于 2015-05-07T13:08:54.727 に答える