如何创建从服务器到所有通知授予用户的网络推送通知?

Posted

技术标签:

【中文标题】如何创建从服务器到所有通知授予用户的网络推送通知?【英文标题】:How to create web push notification from server to all notification granted users? 【发布时间】:2018-01-05 06:17:01 【问题描述】:

我正在使用 Angular CLI 最新版本和 NodeJS,想要存档网络推送通知,我们得到的文档很少,但给出了错误,我可以知道任何支持 Angular 和 nodejs 的网络推送通知文档。

要求是向所有在浏览器关闭时授予通知的用户发送推送通知。

示例文档:

    https://ciphertrick.com/2017/03/14/browser-push-notifications-in-angular-applications/(收到错误 pushNotificationModule 未导出) https://www.npmjs.com/package/angular2-notifications(CLI 不清楚)

【问题讨论】:

您找到解决方案了吗?我也有同样的问题。请分享您的知识以帮助我和其他人。你可以回答你自己的问题,人们可以为此给予你信任。 @HermanFransen - 成功后不会与您分享,我正在尝试使用旧版本的 Angular cli。你也试一次,然后告诉我。 【参考方案1】:

Angular2+ 指令angular2-notifications 只执行在 UI/UX 中显示消息的最后一部分。这是您面临的最小挑战。

你说:

要求是向所有用户发送推送通知 浏览器关闭时也会发出通知

'同时关闭浏览器'部分是棘手的部分。

这意味着您需要Service WorkerService Worker 是您的浏览器在后台运行的脚本,当浏览器关闭时消息被推送到该脚本。对于Service Workers、read this 的精彩介绍。 Angular 自 5.0.0 起在生产版本中实现了 Service Workers。点击here to read more about it.

我认为建立从 Node 到 Service Worker 的 WebSocket 连接(如 socket.io)是不可能的。这很复杂,有人说可以,有人说不行。见this for more info。我至少会说它不够稳定,所以你需要一个“真正的”推送通知。

您可以使用推送通知提供程序来完成这项工作。 Click here for a list of them。您为这些服务付费。

如果您想自己做(免费),您可以使用 Google 的跨平台消息传递解决方案 Firebase Cloud Messaging (FCM)Google Cloud Messaging (GCM) 的继任者)。

要将您的 NodeJS 服务器与 FCM 连接,您可以使用不同的库,例如node-pushserver 和许多其他人。

【讨论】:

以上是关于如何创建从服务器到所有通知授予用户的网络推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 angular.js 推送通知?

网络推送通知未显示

在用户授予接收推送通知的权限时未调用 didRegisterForRemoteNotificationsWithDeviceToken

iOS 推送通知 - 向所有人发送消息

如何使 fcm 推送通知过期或设置生命周期?

一次通话向所有订阅者发送网络推送通知