我一直在尝试将用户重定向到来自后端(
PHP)的Webpush的“动作”部分.
return (new WebPushMessage) ->title('Title') ->icon('icon.png') ->body('Body Msg') ->action('Open Notification','open_notification') ->data(['id' => $notification->id,'url'=>'http://somewhere']);
默认服务工作者使用:
self.addEventListener('notificationclick',function(event) { console.log('On notification click: ',event.notification.tag); event.notification.close(); // This looks to see if the current is already open and // focuses if it is event.waitUntil(clients.matchAll({ type: "window" }).then(function(clientList) { for (var i = 0; i < clientList.length; i++) { var client = clientList[i]; if (client.url == '/' && 'focus' in client) return client.focus(); } if (clients.openWindow) return clients.openWindow('/'); })); });
从https://developer.mozilla.org/en-US/docs/Web/Events/notificationclick起
Angular 5使用
import {SwPush,SwUpdate} from '@angular/service-worker';
那么我的问题是如何使用@ angular / service-worker在前端(Angular 5)中解释这一点
解决方法
得到了回复
u-ryo在Github上
有一个解决方法.
将以下代码添加到该行周围的ngsw-worker.js中
this.scope.addEventListener(‘push’,(event)=> this.onPush(event));(第1775行).
this.scope.addEventListener('notificationclick',(event) => { console.log('[Service Worker] Notification click Received. event',event); event.notification.close(); if (clients.openWindow && event.notification.data.url) { event.waitUntil(clients.openWindow(event.notification.data.url)); } });
然后,您可以在“notification.data.url”中指定URL.
https://github.com/angular/angular/issues/20956#issuecomment-374133852
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。