如何创建从服务器到所有通知授予用户的网络推送通知?
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 Worker
。 Service 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 和许多其他人。
【讨论】:
以上是关于如何创建从服务器到所有通知授予用户的网络推送通知?的主要内容,如果未能解决你的问题,请参考以下文章
在用户授予接收推送通知的权限时未调用 didRegisterForRemoteNotificationsWithDeviceToken