我想用web-push
模块和angular service worker
推送通知订阅。我遵循了这些链接的说明:Angular Push Notifications: a Complete Step-by-Step Guide和Push Notifications with Angular & Express,但是通知提示符并没有正常显示。我检查了swPush
对象,发现它没有启用,我甚至不知道为什么我要完全按照这些链接所说的那样按照angular/pwa
安装说明进行安装。希望这里有人能帮上忙。非常感谢!
我使用自己的Nodejs
服务器运行应用程序,而不是使用http-server
模块。
以下是我的推送订阅代码:
readonly VAPID_PUBLIC_KEY =
'BIfDkegCvhzctX06rYvwQImhbfAymWYE3wtcog9E4Zj7LOgX6TQFS6fZSqLCt01zBZtc1-jSwpZrZEmTQ2i95V8'; // key generated with web-push
constructor(
private user: UserService,
private httpClient: HttpClient,
private router: Router,
private auth: AuthService,
private swPush: SwPush
) {
this.swPush.requestSubscription({
serverPublicKey: this.VAPID_PUBLIC_KEY
})
.then(subcription => {
console.log('Send ' + subcription + ' to server');
})
.catch(console.error);
}
返回错误:
错误:此浏览器在SwPush.push../node_modules/@angular/service-worker/fesm5/service-worker.js.SwPush.requestSubscription (-worker.js:146)、createClass (core.js:9311)、createDirectiveInstance (core.js:9186)、createViewNodes (core.js:10406)、createRootView (core.js:10320)禁用或不支持服务工作进程在ComponentFactoryBoundToModule.push../node_modules/@angular/core/fesm5/core.js.ComponentFactoryBoundToModule.create ( ComponentFactory_.push../node_modules/@angular/core/fesm5/core.js.ComponentFactory_.create )的callWithDebugContext (core.js:11351) at Object.debugCreateRootView as createRootView at core.js:8666 (core.js:3315)
预期结果:
发布于 2018-09-28 11:15:51
此错误是由于服务工作人员不使用ng serve
造成的。用http-server
运行,它就能正常工作。正如Angular service workers所说的:
由于ng serve不能与服务工作者一起工作,因此您必须使用单独的
服务器在本地测试您的项目。您可以使用任何HTTP服务器
发布于 2020-05-26 05:03:59
只需将服务工作者设置为在开发环境中工作,也在'AppModule‘中工作
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production})
至
ServiceWorkerModule.register('ngsw-worker.js', { enabled: true})
https://stackoverflow.com/questions/52513466
复制相似问题