【问题标题】:Firebase as backend for chat [closed]Firebase 作为聊天的后端 [关闭]
【发布时间】: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


【解决方案1】:

恕我直言,没有构建聊天模块(或其他任何东西)的标准方法,而是实现特定功能集的有效方法..

在这种情况下,我想说这取决于您是否要通知您的用户有关应用程序外的传入消息......如果您不这样做,那么使用 Firebase w/oa 应该没有任何问题后端服务,只听变化..

但是,如果您确实需要在应用程序未运行时收到有关新消息的通知,那么纯基于更改的侦听不是最佳解决方案。您应该能够设置一个服务,当应用程序未运行时尝试侦听更改应用程序也已发布。但谷歌(以及苹果)在处理推送通知方面具有高度优化流程,这些流程不会猛烈打开天线并且正在节省开支宝贵的电池寿命和其他资源...

尽管如此,开发没有后端的成本肯定会更低,如果您的目标是尽可能快地制作 MVP 或原型,那么过早的优化弊大于利...

考虑所有因素,不要寻找标准方法。没有 ...整理出解决方案需要的优先级和功能拥有和您想要投资的容量/成本,然后做出决定..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2011-01-30
    • 2013-09-19
    • 2021-10-30
    相关资源
    最近更新 更多