Firebase 云消息传递为一组用户发送通知

Posted

技术标签:

【中文标题】Firebase 云消息传递为一组用户发送通知【英文标题】:Firebase Cloud Messaging to send notification for set of users 【发布时间】:2016-10-24 11:36:59 【问题描述】:

我正在使用 Firebase 开发一个应用程序,应用程序中有组,组有多个成员。我想根据用户活动之一向特定组中的成员发送通知。作为聊天应用程序中的示例,通知其他人通知有新消息。

我推荐了this blog post。似乎最好的方法是 Firebase 主题消息传递,所有成员都可以订阅组 ID 作为主题。

我的问题是如何避免收到通知的成员的行为导致通知。

我尝试将 Firebase 消息发送到多个主题,但它只允许两个逻辑操作(&&、||)

【问题讨论】:

【参考方案1】:

Firebase 云消息传递有两种类型的消息:通知消息和数据消息。

Firebase 的默认行为是,如果应用处于后台或未运行,通知消息将自动显示。无法修改此行为。如果应用在前台,通知消息将不会自动显示,而是会传递到您应用的代码中。

另一方面,数据消息将始终传递到您应用的代码。

由于发送消息的用户通常会打开应用程序,因此默认行为将自动确保通知不会显示在发送用户的设备上。

但是在您提到的博客文章中,有一个竞争条件。如果用户在向服务器发送通知到服务器发出通知之间关闭了应用程序,则通知也可能会显示在他们的设备上。

如果这是您的应用所关心的问题,则不应使用通知消息。改用数据消息,并在消息中包含足够的信息来检测是哪个用户发送的(例如用户的 uid)。

【讨论】:

感谢 Puffelen 的快速响应。我担心的是,如果用户关闭应用程序,通知将显示在该设备上。 顺便说一句,如果 Firebase 多主题条件也支持 !(NOT) 操作,还有一种方法。用户可以在他的 uid 和 group id 下订阅。然后我们可以写一个条件'group_id' in topics && !('user_id' in topics)

以上是关于Firebase 云消息传递为一组用户发送通知的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 云消息传递:最佳实践

批量 Firebase 云消息传递的限制

以编程方式发送 Firebase 云消息?

Firebase 云消息传递重复通知

如何在 Xamarin.iOS 中使用 FCM(Firebase 云消息传递)发送 iOS 推送通知

Firebase 与 Android Java 中的 Google 云消息传递