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

标签 firebase websocket firebase-cloud-messaging

更新:Google 错误报告说明

(按照 Google 开发倡导者在对答案 1 的评论中的建议,提交了错误报告;更新此处的内容,因为它更简洁、准确地描述了问题)

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

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

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

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

原始 StackOverflow 问题文本:

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

Websocket 不需要任何权限,但需要 Websocket 服务器和维护。扩展它很困难或昂贵。

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

最佳答案

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

解决方案是 Firebase Messaging 团队提供一种不同的方式将消息传递到事件网页 - 长轮询或 Websockets。

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

关于firebase - 我可以在没有通知权限的情况下使用 firebase 云消息传递吗? (Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53403792/

相关文章:

Android 应用未收到 firebase 通知

firebase - Flutter的initState()不能立即检索数据,需要进行热重装才能查看

java - 在 Play Framework 中使用 WebSockets 的缓冲区溢出

javascript - 我该如何解决这个错误 : FirebaseError: Expected type 'mc' , 但它是 : a custom yc object?

javascript - Firestore Cloud Function 时间戳转换

javascript - 拦截 WebSocket 消息

javascript - WebSocket Javascript 客户端未从服务器接收消息

cordova - 安装 FCM 后,Ionic 3 应用程序在启动时崩溃

ios - Firebase 消息不在 iOS 上 - FIRMessaging 收到数据消息,但 FIRMessagingDelegate 的消息 :didReceiveMessage: not implemented

Android Firebase 后台通知未触发