【发布时间】:2019-04-02 08:59:41
【问题描述】:
我实际上正在开发一个聊天应用程序,消息存储在 Firestore 中,我希望消息的接收者在发件人发送消息时收到通知。我知道实现这一目标的唯一方法是通过 Firebase 云消息传递,但我不知道如何去做。
我该怎么做?
注意:我是 Flutter 的新手。提前致谢。
【问题讨论】:
标签: firebase flutter cloud google-cloud-firestore messaging
我实际上正在开发一个聊天应用程序,消息存储在 Firestore 中,我希望消息的接收者在发件人发送消息时收到通知。我知道实现这一目标的唯一方法是通过 Firebase 云消息传递,但我不知道如何去做。
我该怎么做?
注意:我是 Flutter 的新手。提前致谢。
【问题讨论】:
标签: firebase flutter cloud google-cloud-firestore messaging
FCM 是一种方式,但不是唯一的方式——不过我认为这是一种好方式! :)
看看firebase_messaging插件。
我想最简单的方法是让您的聊天应用程序独立于 FCM 运行(您可能已经这样做了),这意味着消息保存在 Firestore 中,您不使用 FCM 传输消息。
然后您可以在 Cloud Function 中设置 Firestore 触发器,以自动向客户端发送通知。您需要为消息设置一个侦听器,当它们被添加到 Firestore 时,云功能会发布通知。
在应用程序中,您只会在应用程序不在前台时显示通知。处理 onResume 和 onLaunch 以将应用指向正确的对话。
在处理 Firestore 触发器的云函数中,可以通过其令牌 ID 检测客户端,或者您可以让客户端订阅某些主题(例如聊天室 ID),触发器/函数将将通知发布给他们。
使用令牌要困难得多,因为您必须检测所有客户端中的令牌 ID,将它们作为用户的一部分保存在 firestore 中,并在它们随时间变化时保持更新。然后,要发送,您必须向每个 tokenID 发布单独的通知。
使用主题更容易,客户端应用程序只需使用subscribeToTopic 方法来收听给定主题(在本例中为聊天室)的通知。因此,当云功能检测到一条消息时,您只需向其主题发布一条通知,所有订阅者都会收到通知。
对不起,如果这是一个非常肤浅的解释,但它确实不是一个非常简单的主题。 :)
【讨论】: