Flutter sendMessage()中的Firebase消息传递

Posted

技术标签:

【中文标题】Flutter sendMessage()中的Firebase消息传递【英文标题】:Firebase Messaging in flutter sendMessage() 【发布时间】:2021-09-04 18:08:45 【问题描述】:

我是一名 Flutter 程序员,我在我的项目中使用 node.js 推送通知 Firebase 云消息传递 我刚刚发现flutter的firebase_Messaging包中有一个名为sendMessage的方法,但我到处寻找文档,我尝试了一切以找出它是如何工作的,但一无所获。

这就是包提供的所有信息:

所以如果有人以前使用过它或者可以帮助我理解它,我将非常感激它

【问题讨论】:

【参考方案1】:

不幸的是,这种方法并没有像你想象的那样做:它不是通过 FCM 将消息从一个设备直接发送到另一台设备,而是一种目前不常使用的替代协议 (afaik)。

FlutterFire 文档将sendMessage method 描述为:

向 FCM 服务器发送一个新的 RemoteMessage。仅限 android

很遗憾,这遗漏了一些关键细节,因此我建议您同时查看 Firebase 网站上的 Android 文档,该文档包含在 sending upstream messages 中,开头为:

如果您的应用服务器实现了 XMPP 连接服务器协议,它可以接收从用户设备到云端的上游消息。

还是有点模糊,但继续阅读它还提到:

在应用服务器上接收 XMPP 消息

当 FCM 接收到来自客户端应用的上游消息传递调用时,它会生成必要的 XMPP 节以发送上游消息。 FCM 添加 category 和 from 字段,然后向应用服务器发送如下节:

这里的关键是提到了一个应用服务器。正如许多地方所解释的那样:没有办法直接从一台设备向另一台设备发送消息,因为这样做会允许任何用户向任何其他用户发送他们想要的任何消息,这是一个安全风险。

您找到的sendMessage 方法允许您将消息发送到 FCM 基础架构,然后将其转发到您的应用服务器。如今,它已不再使用,因为 Cloud Functions 等工具提供(至少等效且可能更好)具有更好灵活性的可扩展性。

【讨论】:

以上是关于Flutter sendMessage()中的Firebase消息传递的主要内容,如果未能解决你的问题,请参考以下文章

MFC中的SendMessage和PostMessage

MFC中的SendMessage和PostMessage

使用 SendMessage 模拟用户鼠标点击

Unity中的SendMessage方法

Windows破解笔记-windows API中的SendMessage

使用 SendMessage 从闪烁控件中检索文本