0

我以前在 Firebase 上构建我的应用程序,并且有一种方法可以监听值更新,如下所示:

refHandle = postRef.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
  let postDict = snapshot.value as! [String : AnyObject]
  // ...
})

现在我不再使用firebase,我使用deployed,我使用Alamofire 来检索JSON 中的数据。我想知道 Alamofire 中是否有一个事件侦听器可以在数据库中的值发生变化时执行代码,而不是每 2 分钟检索一次值。

谢谢。

4

1 回答 1

2

好的,所以我发现了这个叫做TRVSEventSource的东西,它用于处理 SSE 事件。

所以我在添加头文件并像这样桥接它们之后添加了以下代码:

let configs = NSURLSessionConfiguration.defaultSessionConfiguration()
    configs.HTTPAdditionalHeaders = ["Accept" : "text/event-stream"]

    let eventsource = TRVSEventSource(URL: NSURL(string: "https://app.firebaseio.com/about.json?auth=<Your Database Secret>"), sessionConfiguration: configs)
    eventsource.delegate = self

    eventsource.open()

之后使用 TRVSEventSourceDelegate,我添加了这个委托来获取信息:

 func eventSource(eventSource: TRVSEventSource!, didReceiveEvent event: TRVSServerSentEvent!) {
    do{
        let data = try NSJSONSerialization.JSONObjectWithData(event.data, options: .MutableContainers)
        print(data)
    }
    catch let error
    {
        print(error)
    }
}

以下打印类似这样的内容{ data = { desc = "My Data"; }; path = "/"; }

并且这也告诉您在 JSOn 文件的哪个路径中已被编辑或添加,idk 如何单独处理事情和东西,但我认为您可以处理其余的 XD。不是一个好的答案,但我希望我能帮助 XD(第一次正确回答问题)

于 2016-08-22T19:21:52.290 回答