- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要一些说明。
我正在使用 Firebase 实时数据库。
现在我必须在两个 Android 设备之间实现实时聊天。我还需要推送通知。
因此,基于实时数据库的解决方案是放弃,因为如果应用程序未运行,它将不会处理 onChildAdded 事件。
我在文档中读到我可以使用从设备到服务器的上游消息实现我的目标。
现在,它还写着我们需要一个应用服务器。
我只是想弄清楚应用服务器(XMPP 或 HTTP)的需要,以及从设备 A 发送的消息 m1 的整个流程,以及设备 B 上的通知。
在我看来,应用服务器应该充当中间人,所以:
A ---> XMPP SERVER ---> FCM
FCM ---> XMPP SERVER ---> B
这是流程吗?在文档中,我无法理解我是否正确。如果是这样,我如何将消息从 FCM 发送回 XMPP 服务器?通知消息是从 FCM 发送到客户端还是从 XMPP 服务器?
请有人给我解释一下。
我想到的其他解决方案:因为我找到了非常强大的 firebase 实时数据库,所以我认为这些解决方案可以解决这个问题:
onChildAdded
的应用服务器,并在它发生变化时向客户端设备发送通知。 onChildAdded
的后台服务,并在必要时创建通知。即使是所有,我也不喜欢这些解决方案。只想了解实现我的目标的标准和正确方法。
最佳答案
Firebaser 和文章的作者在此处的问题评论中进行了辩论
要使用 Firebase 云消息传递向设备发送消息,您需要指定项目的 FCM 服务器 key 。顾名思义,此 key 只能用于在可信环境中运行的代码:即您控制的服务器。
要发送设备到设备的消息(例如在接收用户不一定在线的 1:1 聊天应用程序中),您需要两个步骤:
使用 Firebase 云消息传递和您的自定义应用程序服务器代码,您可以处理第 2 步。但这仍然需要第 1 步:用户需要发送一条消息,以某种方式在应用程序服务器上触发您的代码。有很多方法可以做到这一点。
例如,您可以在您的应用服务器上实现一个 HTTP 端点,并让聊天应用程序也将消息发送到那里(除了发送到数据库之外)。
您还可以实现 XMPP 端点并让聊天应用程序将消息发送到那里(除了将其发送到数据库之外)。
My article建议另一种方式,一种根本不需要实现端点的方式。它使用在您的应用程序服务器上运行的 node.js 脚本,本质上只是数据库的客户端。每当此脚本检测到相关聊天消息时,它都会调用 FCM API 并发送下游消息。
这种使用 Firebase 数据库作为端点然后使用服务器端脚本的模式在使用 Firebase 时非常常见。我们在经典博客文章中记录了它 Where does Firebase fit in your app? (作为选项 2)并在此 article in the Google Cloud documentation .
关于android - 使用 Firebase 的一对一 Android 聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41325775/
我在使用一对一映射时遇到问题。我搜索了互联网并找到了许多解决方案,但没有一个令人满意。大多数示例都带有将父实例存储在子类中的开销。 我只想在具有外键约束关系的子类中使用父 ID,但不想在子类中保留任何
我有以下设置: Micronaut 3.x Java 15 我要更新的实体: @Setter @Getter @Entity @ToString @Table(name = "single_choic
我正在使用AVAudioPlayer制作MP3播放器。我有多种MP3声音,想一一播放。以下是我的应用程序的逻辑: ///// For playing 1st sound mp3Player = [[A
所以这就是问题所在。我有 2 个模型: 裁判级别和裁判 两个都有: class RefereeLevel(models.Model): level = models.PositiveSmall
我想将数组添加到列表或多维数组(不是一次全部...)。但是我真的不明白为什么这应该那么难。 可以说我有这个: string[] a = { "h", "b"}; string[] b
我有一个长度为 1000 的数字序列,我将其分成 100 个长度的序列。所以我最终得到了 901 个长度为 100 的序列。让前 900 个序列为 trainX。 trainY 是这些序列中的第 2
关键字:association 一对一映射(一个班级只有一个班主任) ?
所以,这是我第一次学习计算机语言。我选择了python和django。现在,我了解了 python 和 django 的许多基本概念。我可以使用 View 和所有其他内容创建新页面。但我仍然对这些关系
在一对一映射中,我编写了以下代码行。 @GenericGenerator(name = "generator", strategy = "foreign", parameters = @Paramet
我有两个如下所示的实体 @Data @EqualsAndHashCode(callSuper = true) @Entity @Table(name = "foo") @Audited @AuditO
我的问题很简单.. 假设有 2 个类..书籍和作者 假设一本书只能由一位作者撰写。 一个作家可以写很多本书。 假设作者有唯一的名字。 [两个作者不能同名] 现在..假设所有 hibernate\JPA
我正在尝试创建一个实体,如下所示 @Data public class Person { @Id private String id; @OneToMany(mapp
我有一个包含字段的Project表 ID PROJECT_BASELINE_ATTRIBUTES_ID (FK for table PROJECT_BASELINE_ATTR) 这个表有如下映射
我正在学习基本的 hibernate 教程。我正在尝试在 2 个表之间建立一对一的关系。当我尝试插入 Client 表时它起作用了,但是当我尝试做相反的事情时(插入 Facture 表)我得到了这个异
我已经在 hibernate 3 中使用注释完成了一对一映射,我有两张表“组”和“类别”。类别是预定义的。当用户选择类别和组时,CategoryId和goupid应该只插入组表中。 那么应该如何映射。
我使用Linux服务Fedora 4.14.33-51.37.amzn1.x86_64。我想使用 NAT 1 对 1。例如是否相同problem我的方案是:我的服务器有两个网络接口(interface
我正在尝试与实体 Revision 创建一对一、自引用、双向关系(哇),看起来像这个: /** * @Entity() * @Table(name="rev") */ class Revisio
我需要两个实体之间的链接,所以我使用一对一 @Entity @Table(name = "T_USER") public class User implements Serializable {
一对一: 一对一的关系极为一个数据仅对应一个数据,用下图的结构图可以帮助理解: 下面用代码实现一下,首先要创建工程项目如下: 接着,我们定义模型: 来到models.py文件,创建两
假设我有5列。 pd.DataFrame({ 'Column1': [1, 2, 3, 4, 5, 6, 7, 8, 9], 'Column2': [4, 3, 6, 8, 3, 4, 1, 4, 3
我是一名优秀的程序员,十分优秀!