【问题标题】:Can we do web push notifications in chrome without using GCM/FCM?我们可以在不使用 GCM/FCM 的情况下在 chrome 中进行网络推送通知吗?
【发布时间】:2017-06-09 04:35:03
【问题描述】:

我正在尝试在不使用 GCM/FCM 的情况下在 Chrome 中进行网络推送通知。可能吗?我找不到有关如何使用不同推送服务的示例。

【问题讨论】:

    标签: google-chrome push-notification google-cloud-messaging firebase-cloud-messaging web-push


    【解决方案1】:

    可以使用 Service Worker 来完成。这是新的 w3c 功能。 我还没试过,不过你可以看看:
    https://developers.google.com/web/fundamentals/getting-started/codelabs/push-notifications/

    它不兼容所有浏览器。参考:http://caniuse.com/#feat=serviceworkers

    【讨论】:

    • 对此有更多详细信息吗? Here 它说只有 GCM 服务可以用于 chrome 中的 ServiceWorkerRegistration.pushManager.subscribe
    • gcm_sender_id 用于旧版浏览器,如 Chrome(51 版及之前版本)、Android 版 Opera 和三星互联网浏览器。对于更新的浏览器,您不需要一个。参考。 web-push-book.gauntface.com/chapter-06/…
    • 通过使用来自 Service Worker 的 Web Push API,您将在 Chrome 中使用 GCM 或 FCM。
    【解决方案2】:

    不,不能使用其他推送服务。

    在 Firefox 中,您可以通过修改 dom.push.serverURL 首选项来做到这一点,但显然您需要特权访问才能更改首选项的值。

    您可以使用第三方服务来实现推送通知,但它们会在底层使用 Web Push API(因此在 Firefox 上使用 Autopush,在 Chrome 上使用 GCM/FCM)。

    【讨论】:

    • 嘿 2 个关于 chrome 的快速问题: 1. 是否有任何关于 GCM/FCM 如何与浏览器对话的链接/资源? 2. 浏览器如何与 service worker 对话?我们可以在浏览器(chrome)中编写脚本来唤醒 service worker 吗?
    • GCM 是专有的,所以我不知道。 FCM/Autopush 是 Web Push 标准的不同实现:tools.ietf.org/html/draft-ietf-webpush-protocol-12。
    • FCM 是封闭源代码。您可以在此处查看 Autopush 源代码:github.com/mozilla-services/autopush。它们是不同的,但它们都支持相同的标准,因此您可以查看 Autopush 源以了解 FCM 的作用。
    • 嗨,Marco,后台同步可以用来拉消息吗?即使在浏览器关闭时也能显示通知?如图developers.google.com/web/updates/2015/12/background-sync
    • 这是一个不相关的问题,您可以将其作为问题发布并包含更多详细信息吗?
    【解决方案3】:

    是的。使用 VAPID 规范和服务工作者,您可以在没有 FCM/GCM 的情况下使用 Web 推送通知。有关更多信息,请查看下面的谷歌文档。

    https://developers.google.com/web/fundamentals/engage-and-retain/push-notifications/how-push-works

    【讨论】:

    • 另一个使用 VAPID 代替 gcm_sender_id developers.google.com/web/updates/2016/07/web-push-interop-wins 的好参考
    • 澄清一下,您仍然需要在某个地方运行云服务器......浏览器无法自行完成。
    • 这不是真的 - Google Chrome 上的 VAPID 仍将在幕后使用 FCM 通过专用 FCM 连接向 Chrome 发送通知。
    • 至少您不需要创建所有复杂的 Firebase 项目设置。这对我来说超级重要
    【解决方案4】:

    我使用了将 VAPID 用于 WebPush。这适用于 Firefox 和 IE Edge 浏览器。但不能在 Chrome 浏览器中发送邮件。 再次在 Firefox 中操作似乎不起作用。而在 IE Edge 中,通知操作按钮将起作用

    【讨论】:

      【解决方案5】:

      可惜这里的建议太糟糕了

      是的,您可以使用 https websockets 以及一个名为 SignalR 的 Microsoft 项目,它甚至“不需要”浏览器支持,即无论如何它都可以在 javascript 中工作

      我提到 SignalR 的原因是,将机制降级到适合的赌注,以确保无论天气如何都能正常工作。他们使用的工具是

      • 来自旧的 sckoole 长轮询
      • 一直到 WebSockets 可用时

      (如果不是,则优雅地回退到其他技术和技术,而应用程序代码保持不变)

      【讨论】:

      • 您的答案是所有其他答案中“最糟糕的”。
      猜你喜欢
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多