我刚刚开始使用Firebase生态系统,并在提交GCloud数据库实现(Datastore与Firestore)之前进行了一些调查。我的目标客户端是Web/浏览器,我的后端服务将在AppEngine中。
修改云消息快速启动示例后,FCM似乎无法在几种情况下工作(匿名模式,Safari,如果权限被阻止)。但是,使用实时数据库更新的友好聊天演示似乎在这些场景中工作。
有人能解释原因吗?
我的目标是订阅事件,以便客户机在不使用轮询的情况下更新状态等。仅仅为了绕过通知权限要求,把它们放到消防站似乎太过分了。任何洞察力都是值得赞赏的。这些事件可以从几个不同的后端服务发送,而不完全绑定到db记录。
对于我想要做的事,更新,我能够简单地使用FCM,并且没有针对特定设备的需求,这些设备都值得使用FCM。自从我发布了这个问题之后,Firestore就脱离了测试版,并且可以很好地实时订阅更新本地状态的查询,这最终是我需要做的。
发布于 2018-12-02 19:16:59
FCM客户端的工作承诺是,它可以识别您的浏览器,即使页面没有打开。因此,它需要能够持久地识别浏览器。它使用了一个实例令牌,我假设它在浏览器的本地存储中仍然存在。而且,由于一个匿名窗口有它自己的本地存储,所以它成为一个单独的实例ID。
Firebase实时数据库本身不保存任何有关实例的信息。相反,在初始化FirebaseApp实例时传递所有必要的信息,然后获得一个DatabaseReference。因为匿名窗口运行相同的代码,所以它访问数据库中的相同信息,从而看到相同的结果。
请注意,如果将Firebase身份验证与实时数据库结合使用,则情况将有所不同。Auth将用户令牌持久化到本地存储,这样就不会与隐匿窗口共享。
https://stackoverflow.com/questions/53582082
复制相似问题