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

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

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

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

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

【问题讨论】:

    标签: ios xcode firebase push-notification firebase-realtime-database


    【解决方案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中?
    猜你喜欢
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    相关资源
    最近更新 更多