【发布时间】:2018-03-23 04:02:59
【问题描述】:
我可以毫无问题地生成和配置由 angular cli 生成的服务工作者(通过配置文件)。但是似乎没有关于如何在 ngsw-worker.js 中添加自定义代码的文档,因为我想添加推送通知、发布消息等功能。想插入到 ngsw-worker.js 中
【问题讨论】:
标签: javascript angular angular-cli service-worker
我可以毫无问题地生成和配置由 angular cli 生成的服务工作者(通过配置文件)。但是似乎没有关于如何在 ngsw-worker.js 中添加自定义代码的文档,因为我想添加推送通知、发布消息等功能。想插入到 ngsw-worker.js 中
【问题讨论】:
标签: javascript angular angular-cli service-worker
您可以在应用中订阅消息:
import { SwPush } from '@angular/service-worker';
this.SwPush.messages.subscribe(message => {
console.log('[App] Push message received', message)
}
【讨论】:
您只需要创建自己的 Service Worker 文件。
首先,让我们从创建我们自己的非常基本的 Service Worker 开始。
//my-service-worker.js
self.addEventListener('notificationclick', (event) => {
console.log('notification clicked!')
});
太棒了,现在在您的 App 模块中更改 service worker 注册
//app.module.ts
ServiceWorkerModule.register('my-service-worker.js', { enabled: environment.production })
您还需要将 Service Worker 添加到 angular.json 文件中的资产中
//angular.json
"assets": {
...,
"src/my-service-worker.js"
}
太棒了!现在你已经准备好了,但是我们刚刚丢失了 Angular Service Worker 提供的所有东西!等等,我们还没有完成。返回到您的自定义服务人员并进行更改
//my-service-worker.js
importScripts('./ngsw-worker.js');
self.addEventListener('notificationclick', (event) => {
console.log('notification clicked!')
});
好吧!现在我们一切正常,angular cli 接受推送通知,我们可以将自己的绒毛添加到通知事件中!
https://medium.com/@smarth55/extending-the-angular-cli-service-worker-44bfc205894c
【讨论】:
从 Angular8 开始,我找到了一种使用 worker-plugin 来编译自定义 ServiceWorker 代码的方法:
先决条件:
见:Angular: Using TypeScript for Service Worker (ServiceWorkerModule)
【讨论】: