我正在使用最新版本的Angular构建PWA。
我正在使用Angular Mobile Toolkit,我想使用angular/service-worker发送本地通知。但我无法使其发挥作用。
我能够订阅并发送来自服务器的通知,但我想从我的应用程序本身发送通知。我尝试使用angular2-notifications,它在桌面上运行良好,但构造函数
new Notification(title, options)
来自Notification API的在Android上不再起作用,所以它并不适合我。
有没有办法使用angular/service-worker在Android(Chrome)上发送本地通知?或许是另一种选择。
修改
Maciej的答案向我指出了正确的方向,我能够使用以下代码使其工作
navigator.serviceWorker.getRegistration()
.then((reg) => {
reg.showNotification(title, noti);
});
P.S。:请注意我和angular/service-worker一起使用了它。我使用angular/service-worker注册服务工作者,上面的代码使用注册的服务工作者。另外,请注意,要让服务工作者工作,您需要一个安全的连接。
答案 0 :(得分:1)
Android版Chrome与HTML5中的Notification API不兼容,因此您无法发送local notifications
。
据我在@angular/service-worker
源代码中看到,为了显示通知,他们使用以下方法:
this.worker.showNotification(desc['title'], options);
this.worker
是VersionWorker
类型的对象。
因此可能有一些方法可以重复使用this.worker
。
Angular团队编写的Push插件的完整代码可以在这里找到:https://github.com/angular/mobile-toolkit/blob/master/service-worker/worker/src/plugins/push/index.ts
可以在此处找到service-worker插件的示例repo:https://github.com/maciejtreder/ng-http-sw-proxy(目录plugin
)。