使用FCM实现聊天的firebase实时数据库

时间:2016-10-31 06:55:34

标签: android firebase firebase-realtime-database firebase-cloud-messaging

我正在开发 Android聊天应用 ,似乎我需要通过FCM发送每条消息,并保存到实时数据库。

我使用Firebase实时数据库来存储和发送消息。我仍然需要通过FCM发送每条消息(或至少消息ID)。我担心如果我不这样做,并且仅在应用程序处于后台时发送FCM,用户可能会错过一些传入的消息。

假设设计类似于WhatsApp。每个对话都会打开一个单独的活动,在该对话中显示消息。

E.g。我和A人聊天,此时B人给我发了一条消息。我需要在我所有的对话中都有一个积极的倾听者,以便了解我有来自B的新消息。  这意味着我需要将侦听器放到Service中,而不是Activity(因为activity表示一个活动对话及其消息)。

将监听器置于服务状态似乎不够可靠(如果android杀死了服务怎么办?直到我重新启动它,我可能会错过一些新消息,只有当我进入相关对话时才会看到它们,以便我从数据库中获取它们)。

由于上述原因,除了将其存储到数据库之外,似乎我必须为每个发送的消息发送FCM通知。 听起来合理吗?有没有更好的方法来实现可靠的消息传递?

1 个答案:

答案 0 :(得分:1)

将云消息发送到设备确实很常见,即使用户打开并在前台打开了应用程序。在这种情况下,您只需忽略应用的onMessageReveived中的消息。