我们能否在Chrome中不使用GCM/FCM实现Web推送通知?

8

我正在尝试在Chrome中使用非GCM/FCM的方式进行Web推送通知。这是否可能?我无法找到如何使用其他推送服务的示例。

5个回答

7
不,不可能使用其他推送服务。
在Firefox中,您可以通过修改dom.push.serverURL首选项来实现,但显然您需要特权访问才能更改首选项的值。
有第三方服务可用于实现推送通知,但它们将在后台使用Web Push API(因此Firefox上的Autopush,Chrome上的GCM / FCM)。

嘿,有两个快速问题,关于Chrome:
  1. 有没有关于GCM/FCM如何与浏览器通信的链接/资源?
  2. 浏览器如何与服务工作者通信?我们能否在浏览器(Chrome)中编写脚本来唤醒服务工作者?
- godot101
1
GCM是专有的,所以我不知道。FCM / Autopush是Web Push标准的不同实现:https://tools.ietf.org/html/draft-ietf-webpush-protocol-12。 - Marco Castelluccio
1
FCM是闭源的。您可以在此处查看Autopush源代码:https://github.com/mozilla-services/autopush。它们不同,但它们都支持相同的标准,因此您可以查看Autopush源代码以了解FCM的工作原理。 - Marco Castelluccio
嘿,Marco,后台同步能用来拉取消息并在浏览器关闭时显示通知吗?就像 https://developers.google.com/web/updates/2015/12/background-sync 中所示。 - godot101
这是一个无关的问题,请您将其发布为一个问题并包含更多细节。 - Marco Castelluccio

6

1
另一个使用VAPID而不是gcm_sender_id的好参考资料:https://developers.google.com/web/updates/2016/07/web-push-interop-wins - Nataly87
澄清一下,您仍然需要在某个地方运行云服务器...浏览器本身无法完成此操作。 - Ray Foss
8
这不是真的——在谷歌浏览器上使用 VAPID 仍然会在后台使用 FCM 来通过专用的 FCM 连接向 Chrome 传递通知。 - Elad Nava
1
至少你不需要创建所有复杂的Firebase项目设置。这对我来说非常重要。 - ciekawy

0

我使用了VAPID来进行WebPush。这在Firefox和IE Edge浏览器中可以工作。但是在Chrome浏览器中无法发送邮件。 而且在Firefox中,通知似乎不起作用。然而,在IE Edge中,通知操作按钮将会起作用。


-2

这个有更多的细节吗?这里说在Chrome中只能使用GCM服务来进行ServiceWorkerRegistration.pushManager.subscribe。 - godot101
gcm_sender_id用于旧版浏览器,如Chrome(版本51及之前)、Opera for Android和Samsung Internet Browser。对于更新的浏览器,您不需要使用它。参考:https://web-push-book.gauntface.com/chapter-06/01-non-standards-browsers/ - Programmer
3
通过在Service Worker中使用Web Push API,您将在Chrome中使用GCM或FCM。 - Marco Castelluccio

-2

天啊,这里的建议太糟糕了

是的,您可以使用 https websockets 和一个名为 SignalR 的 Microsoft 项目来实现,它甚至不需要浏览器支持,即使在 JavaScript 中也可以工作

我提到 SignalR 的原因是它会将机制降级到最适合确保无论天气如何都能正常工作的状态。他们使用的工具包括:

  • 从旧式的长轮询
  • 一直到 WebSockets(如果可用)

(并在不可用时优雅地回退到其他技术和技术,而应用程序代码保持不变)


或许是这样,但它也恰好是唯一正确的答案,而我的蔑视程度绝对是相称的。 - Mr Heelis
我撤回了之前的评论,因为它完全没有建设性。 - jg6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接