用户可以使用新数据时如何发送 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/Observing
到firebase
中特定位置的任何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 通知?的主要内容,如果未能解决你的问题,请参考以下文章
将新数据添加到特定子项时如何使用 Cloud Functions 将数据写入 Firebase 实时数据库
每次在 firebase 实时数据库中添加新孩子时使用 firebase 函数发送推送通知不起作用