2017-01-30 18 views
0

我有了一个部分,在那里我可以把实时更新出来的球员,像一个教练的应用程序:“没有实践 - 做恶劣天气,实践将被推至周五”如何在向用户提供新数据时发送Firebase通知?

我一直在试图找出当我用新帖子更新这个UpdatesTableView时如何发送自动通知。像“新更新发布”。

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

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

回答

0

你可以很容易地通过listening/Observing来做到这一点在firebase的特定位置。如果将新的子项添加到该路径,则将调用关联的块。你可以观察UpdatesTableView。并且每当你发布任何更新时,都会调用将向所有用户发送通知的块。

如果您使用的斯威夫特:

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

如果您使用的目的C:

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

据官方火力文档:

observeEventType:withBlock:用于在特定地点听取data changes上。这是从 Firebase数据库读取数据的主要方式。您的数据块将在初始数据 以及数据更改时再次触发。

而且,每当你想停止收听数据的变化,您可以使用removeObserverWithHandle

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

欲了解更多详尽的信息,请阅读iOS firebase#Attaching Observers to read data Documentation

此外,为了高​​效地向用户发送Notifications,您可以使用Firebase Notification。看看它。我不知道你的用例是否正确,但我认为这会有所帮助。

+0

我想知道的事情: #1:如果应用程序未打开,这是否仍然有效? #2:如何在预定义的应用程序中创建通知消息? –

+0

您是否使用Firebase通知向用户发送通知? –

+0

是的,并且使用OBJ-C –

0

我也用同样的问题阻止了,无论前景或背景中的应用程序如何,只要Firebase中的数据发生变化,我都想向用户显示通知。

我通过绑定ChildEventListener和一个继续在后台运行的服务来实现它。在每个childAdded事件中,数据都存储在sqlite数据库中,并创建一个新的通知对象并显示给用户。

+0

为什么要将数据存储在sqlite数据库中? – juzamn

相关问题