11

如何处理 Angular Service Worker 中的推送通知点击。SWPush 没有任何方法。

我尝试引用一个侦听“notificationclick”事件处理程序的js,但它从未在单击通知按钮时被触发。

4

3 回答 3

5

我建议至少将 Angular 更新到 Angular 7.1.0 版本(我建议保持最新)。有了这个,您现在可以订阅notificationClicks

在构造函数中注入SwPush然后使用它:

   this.swPush.notificationClicks.subscribe( arg =>
   {
     console.log(
       'Action: ' + arg.action,
       'Notification data: ' + arg.notification.data,
       'Notification data.url: ' + arg.notification.data.url,
       'Notification data.body: ' + arg.notification.body,
     );

  });

如果您不想更新,您应该ngsw-worker.js使用Webpackorgulp或等查看文件。然后在 this.scope.addEventListener('push', (event) => this.onPush(event)); 添加以下内容的行之后:

this.scope.addEventListener('notificationclick', (event) => {
    console.log('Notification event', event);
    event.notification.close();
    var payload = event.notification.data;

    if (event.action && payload.actions && payload.actions.includes(event.action) 
       clients.openWindow && event.notification.data.url) {
      event.waitUntil(clients.openWindow(event.notification.data.url));
    }
  });
于 2019-03-18T12:52:43.440 回答
4

调用SWPush#requestSubscription。这是一篇好文章

于 2018-03-26T00:48:55.233 回答
3

我不得不将我的 package.json 更新为:

“@angular/service-worker”:“7.1.0”

然后这对我有用:

this.swPush.notificationClicks.subscribe((result) => {
      console.log('clicked', result);
    });
于 2019-01-07T22:00:46.180 回答