用户可以使用新数据时如何发送 Firebase 通知?

Posted

技术标签:

【中文标题】用户可以使用新数据时如何发送 Firebase 通知?【英文标题】:How to send a Firebase Notification when new data is available to user? 【发布时间】:2017-01-30 03:33:53 【问题描述】:

我有一个教练应用程序,其中有一个部分,我可以在其中向球员推送实时更新,例如:“禁止练习 - 遇到恶劣天气,练习将推迟到星期五”

我一直试图弄清楚当我用新帖子更新此 UpdatesTableView 时如何发送自动通知。比如“发布了新的更新”。

我将我的更新发布到 Firebase 数据库。必须有一种方法来监听更改以及何时向所有用户推送通知?

我已经在我的应用中设置了 Firebase 通知,但每次推送更新时我都必须使用 Firebase 控制台来推送这些通知。有谁知道如何自动化这个?谢谢!

【问题讨论】:

【参考方案1】:

您可以通过listening/Observingfirebase 中特定位置的任何data change 轻松做到这一点。如果新的孩子被添加到该路径,关联的块将被调用。

在你的情况下,你可以观察UpdatesTableView。并且每当您发布任何更新时,调用将向所有用户发送通知的块。

如果您使用的是 Swift:

func observe(_ eventType: FIRDataEventType, with block: @escaping (FIRDataSnapshot) -> Void) -> UInt

如果您使用的是目标 C:

- (FIRDatabaseHandle)
observeEventType:(FIRDataEventType)eventType
   withBlock:(nonnull void (^)(FIRDataSnapshot *_Nonnull))block;

根据官方 firebase 文档:

observeEventType:withBlock:用于在特定位置监听data changes。这是读取数据的主要方式 Firebase 数据库。您的区块将针对初始数据触发 并在数据发生变化时再次出现。

而且,当你想停止监听数据变化时,你可以使用removeObserverWithHandle

使用 removeObserverWithHandle: 停止接收更新。 - 范围: eventType 要侦听的事件类型。 - 参数:block 应该使用初始数据和更新调用的块。这是 将数据作为 FIRDataSnapshot 传递。 - 返回:一个句柄用于 稍后使用 removeObserverWithHandle 取消注册此块:

如需更多详细信息,请阅读ios firebase#Attaching Observers to read data Documentation。

另外,为了有效地向用户发送Notifications,您可以使用Firebase Notification。看看它。我不了解您的用例,但我认为这会有所帮助。

【讨论】:

我想知道的事情:#1:如果应用程序没有打开,这还能用吗? #2:如何在应用中创建预定义的通知消息? 您是否使用 Firebase 通知向用户发送通知? 是的,并且使用 OBJ-C 我认为它会被推送,但我没有使用它,所以我不能确定。试试看是否可以。【参考方案2】:

我也遇到了同样的问题,我想在 Firebase 中的数据发生变化时向用户显示通知,而不管前台或后台的应用程序。

我通过将 ChildEventListener 与一个在后台运行的服务绑定来实现它。在每个 childAdded 事件数据都存储在 sqlited db 中,并创建一个新的通知对象并向用户显示。

【讨论】:

为什么将数据存储在sqled db中?

以上是关于用户可以使用新数据时如何发送 Firebase 通知?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 从用户向用户发送推送通知 Firebase

将新数据添加到特定子项时如何使用 Cloud Functions 将数据写入 Firebase 实时数据库

如何在 iOS 中使用 Firebase 发送通知

每次在 firebase 实时数据库中添加新孩子时使用 firebase 函数发送推送通知不起作用

如何使用 Firebase Cloud Messaging 向所有用户发送数据负载?

如何在flutter中使用firebase登录谷歌时检查用户是新用户还是现有用户?