FCM:无法点击通知

时间:2016-10-23 10:05:22

标签: firebase push-notification firebase-cloud-messaging service-worker web-push

我使用最近发布的FCM messaging支持Chrome上的推送通知。当我的应用程序在后台时,我收到通知,但是当我点击通知时没有任何反应。如何指定用户单击通知时应打开的URL? (我理解如何使用notificationclick事件使用纯服务工作者概念完成,我想知道如何使用FCM messaging完成此操作。)

messaging.setBackgroundMessageHandler(function(payload) {
  var data = payload || {};
  var shinyData = decoder.run(data);

  console.log('[firebase-messaging-sw.js] Received background message ', shinyData);

  return self.registration.showNotification(shinyData.title, {
    body: shinyData.body,
    icon: shinyData.icon
  })
});

我在这里缺少什么?

2 个答案:

答案 0 :(得分:9)

click_action不是showNotification函数的可能参数之一。

要处理对通知的点击,请定义notificationclick事件处理程序。

例如:

self.addEventListener('notificationclick', function(event) {
  event.notification.close();
  event.waitUntil(self.clients.openWindow(YOUR_URL_HERE));
});

答案 1 :(得分:6)

Marco的回答是正确的。

Firebase Messaging Library是Web Push API之上的包装器。

notification: { click_action: 'https://...' }有效负载会显示通知并为您处理点击。要实现与数据有效负载相同的功能,您应该实现notificationclick事件监听器(如Marco建议的那样)。

self.addEventListener('notificationclick', function(event) {
  event.notification.close();

  ... Do your stuff here.
});

您也可以对notificationclose事件执行相同操作:

self.addEventListener('notificationclose', function(event) {
  ... Do your stuff here.
});