更新:Google错误报告说明
(正如Google开发人员倡导者在对答案1的评论中所建议的那样,提交了一个错误报告;在此更新了内容,因为它更简洁,准确地描述了问题)
我不需要或不想向我的用户显示任何通知。而且许多用户不愿意授予通知权限,因为他们认为自己将开始看到通知。
但是我希望将数据从服务器推送到我的网页。该网页处于活动状态并且处于前台。这是Web套接字设计的经典用例。
我了解我可以编写自己的Web套接字服务器并以某种方式尝试对其进行扩展,或者与其他第三方合作以获取可扩展的Web套接字推送解决方案的外包。
但是,这不是Firebase Messaging所针对的消息中非常常见的“子用例”吗?因此,Google不应该支持该用例吗?我看不到任何基本的技术支持者,但是由于Google非常聪明,因此,如果我对无法或不应该这样做的原因有所遗漏,请给我以启发。
原始StackOverflow问题文本:
我不需要后台通知或服务人员。我想要做的就是将数据当前加载到前台并在前台发送到该页面。
Websockets不需要任何许可,但需要Websocket服务器和维护。扩展它很困难或昂贵。
Firebase可以从根本上解决问题,但是我不明白为什么即使我只想在加载页面时推送数据,为什么它也必须要求用户授予通知权限。不在后台。
答案 0 :(得分:2)
这是为了保护用户对您的应用允许执行的操作的偏好。推式消息传递在浏览器上的工作方式是使用服务工作者。即使您说您不需要服务人员,但实际上在您的应用程序中使用Firebase Cloud Messaging时却在使用它。
鉴于此,提示是必要的,因为浏览器不知道您打算使用该推送消息做什么。如果用户不信任您的应用程序,则他们应有权限制其实际操作,尤其是当他们不使用您的应用程序时。移动操作系统(iOS,Android)是相同的方式。
答案 1 :(得分:1)
问题在于Firebase Messaging仅使用一种方法来传递通知。那是Push API规范规范,并且该规范(错误和不幸的是)不允许服务工作者在用户未允许不相关许可 show 通知的情况下接收消息。
此修复程序将使Firebase Messaging团队提供一种将消息传递到活动网页的不同方式-长轮询或websocket。
但这对他们来说将是额外的工作,并且可能没有足够的人要求这样做。