【问题标题】:Android Local Notification with Angular Service Worker带有 Angular Service Worker 的 Android 本地通知
【发布时间】:2017-12-26 12:11:44
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    Android 上的 Chrome 与 HTML5 的通知 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)。

    【讨论】:

    • 您好 Maciej,感谢您的回答。我知道 Android 上的 Chrome 与 Notification API 不兼容。但我可以使用 Service Worker API(在我的情况下,我通过 angular/service-worker 使用)来订阅来自服务器的通知。我想知道是否可以使用相同的 API 发送本地通知
    • 再次更新;)
    • 再次感谢 Maciej,有什么方法可以在我的项目中导入 Push 插件吗?我尝试使用import { PushImpl } from '@angular/service-worker/plugins/push',但它给我带来了一堆错误。我还尝试使用 import { PushImpl } from '@angular/service-worker/bundles/worker-basic' 直接从 JS 包导入它编译但我在运行时收到错误。
    • 正如包名所说,这些插件是为服务工作者的目的而创建的。不适用于“标准”javascript。
    • 我想我设法在不使用 angular/service-worker 的情况下使其工作,使用以下代码 navigator.serviceWorker.getRegistration() .then((reg) => { reg.showNotification(title, noti); }); 但我无法测试它,因为我无法注册由于 SSL,Android 上的 service worker,但如果它有效,我会在这里发表评论。感谢您为我指明正确的方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多