使用Angular Service Worker的Android本地通知

时间:2017-07-20 16:50:52

标签: angular service-worker progressive-web-apps

我正在使用最新版本的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注册服务工作者,上面的代码使用注册的服务工作者。另外,请注意,要让服务工作者工作,您需要一个安全的连接。

1 个答案:

答案 0 :(得分:1)

Android版Chrome与HTML5中的Notification API不兼容,因此您无法发送local notifications

据我在@angular/service-worker源代码中看到,为了显示通知,他们使用以下方法:

this.worker.showNotification(desc['title'], options);

this.workerVersionWorker类型的对象。

因此可能有一些方法可以重复使用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)。