Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome Chrome桌面通知不';不要显示消息_Google Chrome_Push Notification_Google Cloud Messaging_Web Push_Web Notifications - Fatal编程技术网

Google chrome Chrome桌面通知不';不要显示消息

Google chrome Chrome桌面通知不';不要显示消息,google-chrome,push-notification,google-cloud-messaging,web-push,web-notifications,Google Chrome,Push Notification,Google Cloud Messaging,Web Push,Web Notifications,我正在开发一个支持桌面通知的网站。我正在利用GCM和Azure通知中心向最终用户发送推送消息。我遵循了这个教程。测试时,我发现推送通知确实会显示在屏幕上,但我在有效负载中写入的消息不会显示在通知中。所以我再次浏览了codelab,他们提到了showNotification方法中的body键 代码 self.addEventListener('push', function(event) { console.log('Push message', event); var title

我正在开发一个支持桌面通知的网站。我正在利用GCM和Azure通知中心向最终用户发送推送消息。我遵循了这个教程。测试时,我发现推送通知确实会显示在屏幕上,但我在有效负载中写入的消息不会显示在通知中。所以我再次浏览了codelab,他们提到了
showNotification
方法中的
body

代码

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
功能中硬编码了“消息”。我不想在函数中硬编码我的消息,因为我的消息不会总是相同的,并且会随着时间的推移而变化。我想知道如何使函数在有效负载中接收消息并显示它。提前谢谢

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格式的,因此您可以指定所有内容(标题、正文、图标等)

您可以在此处看到一个示例:

另一种可能的解决方案是在有效负载可用时使用它,否则使用
fetch
。通过这种方式,您可以利用Firefox(以及Chrome)中的这一功能,并为尚不支持有效负载的浏览器提供一个备用功能。 这里有一个例子