2016-08-20 2 views
0

Я использовал, чтобы построить мое приложение на Firebase до и был метод, который прослушивает обновления значений, что-то вроде этого:слушатель событий на Alamofire

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

Теперь я не использую firebase больше, я используя deployd, и я использую Alamofire для извлечения данных в JSON. Интересно, есть ли в Alamofire прослушиватель событий, который может выполнять код, если значение изменяется в базе данных, вместо того, чтобы извлекать значение каждые 2 минуты.

Спасибо.

ответ

1

Итак, я нашел эту вещь под названием 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 (первый раз правильно ответить на что-то)

+0

Это очень хороший ответ! Большое спасибо :-) ; Просто, где ты это нашел? – Lawris

+0

Моя удача, я просто клал случайные ключевые слова, занимался исследованиями обработки SSE и другого мусора, и я нашел этот XD, также я понятия не имею, как справиться с остальными, поэтому я просто позволю ему вызвать func, который сделает повторите попытку, используя Alamofire, в основном как кнопка обновления, потому что я понятия не имею, как читать эти данные XD. – daniyalkhan2000

+0

Я на самом деле использую это для своего приложения Apple Watch, вроде как приложение-компаньон для моего основного, и я нашел именно то, что мне было нужно. – daniyalkhan2000

Смежные вопросы