0

我正在開發支持桌面通知的網站。我正在利用GCM和Azure通知中心向最終用戶發送推送消息。我遵循這個codelab教程。在測試時,我發現推送通知確實顯示在屏幕上,但是我寫入有效內容中的消息未顯示在通知中。所以我再次通過了codelab,他們在showNotification方法中提到了一個body密鑰。Chrome桌面通知不顯示消息

代碼

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功能硬編碼的 「消息」。我不想在函數中對消息進行硬編碼,因爲我的消息總是不一樣,並且會隨時間變化。我想知道如何使函數在有效載荷中獲取消息並顯示它。提前致謝!

回答

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中有一個示例。