我可以在没有通知许可的情况下使用 Firebase 云消息传递吗?(Javascript)

use*_*550 19 websocket firebase firebase-cloud-messaging

更新:谷歌错误报告描述

(正如谷歌开发倡导者在对答案 1 的评论中所建议的那样,提交了一份错误报告;更新这里的内容,因为它更简洁、更准确地描述了问题)

我不需要或不想向我的用户显示任何通知。许多用户不愿意给予通知权限,因为他们认为他们会开始看到通知。

但我希望将数据从服务器推送到我的网页。该网页处于活动状态并位于前台。这是 Web Sockets 设计用于的经典用例。

我知道我可以编写自己的 Web 套接字服务器并以某种方式尝试扩展它,或者去其他第三方寻求外包的可扩展 Web 套接字推送解决方案。

但是,这不是 Firebase 消息传递所针对的消息传递的一个非常常见的“子用例”吗?因此谷歌不应该支持这个用例吗?我看不到任何基本的技术障碍,但由于谷歌如此聪明,如果我遗漏了为什么不能或不应该这样做的原因,请赐教。

原始 StackOverflow 问题文本:

我不需要后台通知或服务人员。我想要的只是在当前加载并在前台将数据发送到网页。

Websockets 不需要任何许可,但它们需要一个 websocket 服务器和维护。扩展它是困难的或昂贵的。

Firebase 从根本上解决了这个问题,但我不明白为什么它必须要求用户给予通知权限,即使我只想在页面加载时推送数据;不在后台。

use*_*550 11

问题在于 Firebase 消息传递仅使用 1 种方法来传递通知。这就是 Push API 规范规范,并且该规范(错误且不幸)不允许服务工作者在没有用户允许显示通知的无关权限的情况下接收消息。

修复方法是 Firebase 消息传递团队提供一种不同的方式将消息传递到活动网页——长轮询或 websockets。

但这对他们来说是额外的工作,而且可能没有足够的人要求它。