2015-05-04 62 views
1

在Chrome推送通知API中,我想要設置可自定義的通知。使用curl服務工作人員數據

我在說服務員。

以下是示例服務工作者的代碼。

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 --header "Authorization: key=---personnal_key---" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"---ID---\"],\"title\":\"ok\"}" 

我看過的例子,但我不能看到一個談論捲曲的組合和服務人員在一起。 這甚至可能嗎?

+0

我不確定我是否會收到您的問題,但Matt Gaunt撰寫的這篇優秀文章演示瞭如何設置推送通知應用程序以及如何使用捲曲進行測試:http://updates.html5rocks.com/2015/03/push -notificatons-on-the-open-web –

+0

我不知道如何推送消息。我想我應該嘗試獲取函數。 – Zabz

回答

1

在推送通知API的當前迭代中,您可能不會發送數據(請參閱:http://updates.html5rocks.com/2015/03/push-notificatons-on-the-open-web)。現在發送特定數據的唯一方法是將其存儲在服務器上的某個數據庫中,然後讓服務工作人員從服務器中獲取它。但是,正如您所預料的那樣,這可能會導致很多安全問題。一種選擇是使用訂閱進行驗證。您可以從服務人員獲得訂閱ID,如:

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

然後,假設你如何設置你的服務器,你可以從服務人員到您的服務器抓取。它可能看起來像這樣

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請求發送數據。

+0

顯然subscriptionId已被棄用。現在正在將數據編碼到端點中 – Zwade

+0

您是否有更多關於此棄用的信息? – Zabz

+0

你可以在這裏閱讀https://groups.google.com/a/chromium.org/forum/m/#!topic/blink-dev/CK13omVO5ds的詳細信息,基本上他們想讓它的端點編碼subscriptionId – Zwade

相關問題