【发布时间】:2016-10-21 11:16:18
【问题描述】:
我想在我的 Android 应用中添加用户之间的聊天。
我阅读了有关 Firebase Cloud Messaging 的信息,并且我知道我在 Firebase 之外使用 must implement an app server(后端)。
另一方面,我发现一些来源使用另一种方法:他们使用 Firebase 实时数据库本身作为后端(例如 MChat-master)。并且查看代码,似乎根本没有使用FirebaseMessaging。他们向 Firebase 发送聊天消息并监听数据的变化。当一条消息上传到服务器时,数据发生了变化,监听器被调用,他们将消息拉到接收电话上。
我的问题是:首选哪种方式?
第一种方法对我来说听起来更真实,而第二种方法看起来像是一种不必处理后端服务器的解决方法。
第一种方法(使用 FCM):
优点:
在客户端使用服务和广播接收器(简单前端)
消息发送到客户端,只要应用启动就会收到消息(不用担心应用关闭时会传递消息)
缺点:
- 必须实现后端
第二种方法(使用 Firebase 作为后端):
优点:
不必处理后端服务器
我已经在使用 Firebase 实时数据库,所以我熟悉它的查询
缺点:
将不得不在我的所有活动中添加侦听器以侦听服务器上的数据变化并决定是否拉取新消息
当应用程序未运行(侦听器未唤醒)时,我看不到处理传入消息的简单方法
那么使用 Firebase 作为聊天的后端是一种标准方式吗?如果是这样,您对我列出的缺点有何看法?
【问题讨论】:
-
如何让firebase监听器始终保持清醒以监听服务中的更改/接收新消息将永远不会被android操作系统杀死,您也可以将其保留在BOOT_COMPLETED中
-
我会说这有点基于意见,可能将被关闭为基于意见。虽然不确定,但您提供的信息很好。
-
这个问题很可能是基于意见的,所以我的意见是:两者都...有一个服务器来保存 REST 消息,在某种程度上,你也有一个经过认证的数据存储库具有本地化(该设备内部),以便您可以“实时”消息...如果消息是“在线”收到的,那么您可以使用本地,一旦设备启动/停止您的应用程序,您同步数据。此外,就“数据安全”而言,在某处有一个发送加密文本/json 的
php脚本就足够了。无需特定的 Android 项目。
标签: android firebase firebase-realtime-database firebase-cloud-messaging