开发者问题收集

Angular PWA 推送通知

2020-05-04
1145

我已阅读有关 PWA 和推送通知的文档。但是,由于我将这些概念与 pubsub 策略联系起来,因此以下策略对我来说并不清楚。 我需要什么:当用户被分配某些任务时(通过另一个后端服务发生),我想在 chrome 中的 Web 应用程序上向用户显示通知

到目前为止,我所做的是使用 PWA 和通知创建了 angular 应用程序,如 此处所述 。我需要单击应用程序上的某个按钮才能收到通知。但这不是我想要的。如果分配了任何任务,我想通知用户有关任务的信息(用户可能会或可能不会主动使用我的应用程序)。

我是否需要定期从 angular 调用 subscribeToNotifications 来检查是否有任务。这让我很困惑。有人可以解释一下它们是如何工作的吗?

1个回答

subscribeToNotifications 基本上只被调用一次。 该函数的目的是请求用户允许发送推送通知,并接收订阅信息并保存。 因此,在调用一次 subscribeToNotifications 函数后,您无需再次调用该函数,因为用户的订阅信息已被保存,您可以根据订阅信息随时发送通知。

更多详细信息:

向用户发送通知需要用户首先获得许可。这实际上是您带来的这篇文章中 示例中 subscribeToNotifications 函数的第一部分

this.swPush.requestSubscription({
    serverPublicKey: this.VAPID_PUBLIC_KEY
})

如果用户允许通知,则需要保存订阅对象。订阅对象中的信息对于向该用户发送推送通知是必不可少的。

以下是示例的延续,在 .then 部分中,您将获得订阅。 newsletterService 中的 addPushSubscriber 函数负责保存它。

this.swPush.requestSubscription({
     serverPublicKey: this.VAPID_PUBLIC_KEY
})
.then(sub => this.newsletterService.addPushSubscriber(sub).subscribe())

现在对象已保存,您可以使用该对象通过 webpush 库发送推送通知。

Sara
2020-10-22