推送通知中的 Service Worker 跟踪

Posted

技术标签:

【中文标题】推送通知中的 Service Worker 跟踪【英文标题】:Service Worker tracking in push notification 【发布时间】:2017-12-27 04:02:42 【问题描述】:

我想知道我们如何在推送通知显示后跟踪服务人员点击事件。 我已经注册了服务工作者并发送回推送通知,但现在我想追踪通知点击事件是否用户打开通知并丢弃它。

self.addEventListener('push', function(event)  
    const analyticsPromise = pushReceivedTracking(); 
    const pushInfoPromise = fetch('api/subscriber/msg/')
        .then(function(response)  return response.json(); )
        .then(function(response) 
            const title = response.data.userName + ' says...'; 
            const message = response.data.message; 
            return self.registration.showNotification(title,  body: message ); 
        ); 

    const promiseChain = Promise.all([ analyticsPromise, pushInfoPromise ]); 
    event.waitUntil(promiseChain);
 )

【问题讨论】:

你能分享一些你到目前为止写的代码吗?您能描述一下您遇到的问题吗? self.addEventListener('push', function(event) const analyticsPromise = pushReceivedTracking(); const pushInfoPromise = fetch('api/subscriber/msg/') .then(function(response) return response.json(); ) .then(function(response) const title = response.data.userName + 'says...'; const message = response.data.message; return self.registration.showNotification(title , body: message ); ); const promiseChain = Promise.all([ analyticsPromise, pushInfoPromise ]); event.waitUntil(promiseChain); ); 【参考方案1】:

您可以在 Service Worker 中处理 NotificationEvent:

self.addEventListener('notificationclick', function (event) 
  event.notification.close();
  // track the notification click here
);

请注意,您还可以在通知中添加按钮 - 现在您只需跟踪对通知本身的点击。

【讨论】:

以上是关于推送通知中的 Service Worker 跟踪的主要内容,如果未能解决你的问题,请参考以下文章

使用 Angular2 的 Service Worker 推送通知

Service Worker - 使用 VAPID prv/pub 键推送通知

单击 service-worker ng7 + android 处理的推送通知时打开 PWA

为啥我的 Service Worker 的推送事件数据/有效负载为空?

Service Worker 与 Web Worker

Ping service worker 不显示通知