我正在尝试按照https://blog.angular-university.io/angular-push-notifications/
中的指南在有角度的应用程序中添加网络推送通知我添加了一个简单的SwPush.requestSubscription()
,如下所示:
public requestSubscription() {
this.swPush.requestSubscription({
serverPublicKey: environment.vapidPublicKey
})
.then(subscription => {
return this.save(subscription);
})
.catch(err => {
console.log('Could not subscribe to notifications', err);
});
}
我已经通过执行ng build --prod
并使用localhost
来构建应用程序,以便服务人员能够正常工作。
允许/阻止通知的弹出窗口按预期方式显示,但是当我单击“允许requestSubscription承诺”时,未解决该问题。
我想念什么?
编辑:
我发现还有另一段代码引起了我一开始并不认为是相关的问题,这就是为什么我在问题中没有提到它。
在requestSubscription
之前,我创建了一种使用Permissions API(如果有)来获取当前权限状态( grant | denied | default | prompt )
的方法,
public getNotificationPermissionState(): Observable<string> {
if ( !('serviceWorker' in navigator) ) {
return of('unsupported');
}
// @ts-ignore
if (typeof navigator.permissions !== 'undefined') {
// @ts-ignore
return navigator.permissions.query({ name: 'notifications' })
.then((result) => {
return of(result.state);
});
}
return of(Notification.permission);
}
当我完全删除了navigator.permissions.query()
呼叫并仅使用Notification.permission
后,requestSubscription
的承诺就解决了。
如果有人知道为什么这两个人不去理会说...的话,我不会以此为答案。