我使用Firebase创建了一个聊天应用。我选择使用本地构建的通知来通知用户消息。
目前在onChildAdded()方法中(在我分叉的FirebaseArray类中),系统的工作方式如下:
if (isUserInChatScreen == false) {
//build notification
}
系统工作正常(在android切断连接之前),但是,因为用户的帐户必须监听几个不同聊天节点的更改,我相信这不是一个可扩展的实现,因为所需的监听器数量可能等于用户拥有的联系数量 - 可能有数百个。
我通过这样的聊天路径解决了这个问题:specificUser/chats/specificChatID/
。每个用户都在其他用户的相应specialChatID位置上写入,因此,对于每个打开的聊天,都有2个节点。 userA将其消息写入userB的specificChatID节点,以及userB将其消息写入userA的specificChatID节点的节点。
由于Firebase的带宽和存储限制,每个用户的specificChatID节点仅存储其他用户的消息是有意义的,因此,单个会话的消息在userA和userB各自的specificChatID节点之间分配。
问题是:为每个用户查看两组消息,发件人的消息必须存储在本地,以避免每次聊天都有两个侦听器。我认为最好将消息存储在快照中,这样我就可以将其与其他传入消息合并,并利用Fireabase的离线存储功能。是否可以离线写入快照?是否有更好的方法来获得本地构建的通知,以便为每个用户提供大量的联系人?
提前致谢