我可以在没有通知权限的情况下使用firebase云消息吗?(Javascript)



更新:Google Bug报告描述

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

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

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

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

但是,这不是Firebase messaging所针对的消息传递的一个非常常见的"子用例"吗?因此,谷歌不应该支持这个用例吗?我看不出任何基本的技术阻碍,但由于谷歌是如此聪明,如果我遗漏了一些关于为什么不能或不应该这样做的东西,请一定启发我。

原始堆栈溢出问题文本:

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

websocket不需要任何权限,但它们需要一个websocket服务器和维护。扩大规模是困难的或昂贵的。

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

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

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

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

这是为了保护用户对应用程序允许做什么的偏好。推送消息在浏览器上的工作方式是使用服务工作者。即使你说你不需要服务人员,但在你的应用程序中使用Firebase云消息时,你实际上是在利用它。

鉴于此,提示是必要的,因为浏览器不知道你打算如何处理推送消息。如果用户不信任你的应用程序,他们应该有权限制它的实际功能,尤其是当他们不使用你的应用时。移动操作系统(iOS、Android(也是如此。

最新更新