角度PWA推送通知

时间:2020-05-04 03:21:19

标签: angular push-notification progressive-web-apps

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

到目前为止,我所做的是使用PWA创建通知应用程序,并以mentioned here通知。我需要在应用程序上单击一些按钮才能获得通知。但这不是我想要的。如果要分配任务,我想通知用户有关该任务的信息(用户可能正在使用或可能不在使用我的应用程序)。

我是否需要定期从角度调用subscribeToNotifications来检查是否有任务。这让我很困惑。谁能解释一下这些功能如何工作?

1 个答案:

答案 0 :(得分:1)

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

更多详细信息:

向用户发送通知需要用户首先允许。实际上,这是示例from this article that you brought subscribeToNotifications 函数的第一部分:

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

如果用户允许通知,则需要保存订阅对象。订阅对象中的信息是必需的,以便能够向该用户发送推送通知。

这是该示例的继续,在.then部分中您获得了订阅。 addPushSubscriber中的newsletterService函数负责保存它。

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

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