如何向网页浏览器发送推送通知?

在过去的几个小时里,我一直在阅读有关推送通知 APIWeb 通知 API 的信息。我还发现,谷歌和苹果分别通过GCM和APNS免费提供推送通知服务。

我试图了解我们是否可以使用桌面通知实现向浏览器推送通知,我相信这就是Web通知API所做的。我在这里和这里看到了一个谷歌文档,关于如何为Chrome完成此操作

现在我仍然无法理解的是:

  1. 我们可以使用GCM / APNS向所有Web浏览器(包括Firefox和Safari)发送推送通知吗?
  2. 如果不是通过GCM,我们是否可以有自己的后端来做同样的事情?

我相信所有这些答案都可以在一个答案中帮助很多有类似困惑的人。


答案 1

因此,我在这里回答我自己的问题。我从过去构建推送通知服务的人那里得到了我所有查询的答案。

更新(2022年5月):这是来自Google的网络推送通知的文档。

请参阅 Mozilla 对通知 API 的详细介绍。

飞艇文章关于这个主题,以及网络推送和应用程序推送如何变化。

回答6年前提出的最初问题:

  1. 我们可以使用GCM / APNS向所有Web浏览器(包括Firefox和Safari)发送推送通知吗?

答:截至 2018 年 4 月,Google 已弃用 GCM。现在,您可以使用 Firebase Cloud Messaging (FCM)。这支持所有平台,包括Web浏览器。

  1. 如果不是通过GCM,我们是否可以有自己的后端来做同样的事情?

答:是的,推送通知可以从我们自己的后端发送。所有主流浏览器都支持相同的功能。

查看Google的此代码实验室以更好地了解实现。

一些教程:

  • 在这里实现 Django 中的推送通知。
  • 使用 flask 发送推送通知 Here & Here
  • 从 Nodejs 发送推送通知 在这里
  • 使用 php Here & Here 发送推送通知
  • 从Wordpress发送推送通知。这里这里
  • 从 Drupal 发送推送通知。这里

用各种编程语言实现自己的后端:

延伸阅读材料:

是否有任何免费服务可以做同样的事情?有一些公司以免费,免费增值和付费模式提供类似的解决方案。我在下面列出几个:

  1. https://onesignal.com/(免费|支持所有平台)
  2. https://firebase.google.com/products/cloud-messaging/(免费)
  3. https://clevertap.com/ (有免费计划)
  4. https://goroost.com/

注意:选择免费服务时,请记住阅读TOS。免费服务通常通过收集用户数据来用于各种目的,包括分析。

除此之外,您需要使用HTTPS来发送推送通知。但是,您可以通过 letsencrypt.org 自由获得https


答案 2

哈维尔介绍了通知和当前的限制。

我的建议是:在我们等待残障浏览器赶上来的同时,否则仍然与Web Workers一起运行。window.postMessageWorker.postMessage()

这些可以是带有对话框消息显示处理程序的回退选项,用于通知功能测试失败或权限被拒绝时。

通知具有功能和拒绝权限检查:

if (!("Notification" in window) || (Notification.permission === "denied") ) {
    // use (window||Worker).postMessage() fallback ...
}