0

以前は Firebase でアプリをビルドしていましたが、次のような値の更新をリッスンするメソッドがありました。

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

現在、私はfirebaseを使用しておらず、デプロイ済みを使用しており、Alamofireを使用してJSONでデータを取得しています。2分ごとに値を取得するのではなく、データベースで値が変化している場合にコードを実行できるイベントリスナーがAlamofireにあるのだろうか。

ありがとう。

4

1 に答える 1

2

わかりましたので、SSE イベントを処理するためのTRVSEventSourceというものを見つけました。

そのため、ヘッダー ファイルを追加して次のようにブリッジした後、次のコードを追加しました。

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 ファイルのどのパス内で編集または追加されたかがわかります。物事を個別に処理する方法などはわかりますが、残りの XD は処理できると思います。良い答えではありませんが、XDの役に立てば幸いです(初めて適切に答えたもの)

于 2016-08-22T19:21:52.290 に答える