Angular SwPush requestSubscription承诺永远不会解决

时间:2019-02-23 10:07:16

标签: angular angular-service-worker

我正在尝试按照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的承诺就解决了。

如果有人知道为什么这两个人不去理会说...的话,我不会以此为答案。

0 个答案:

没有答案