Firebase Swift API提供方法observeEventType:withBlock
,可按如下方式使用:
newMessageRefHandle = messageQuery?.observe(.childAdded, with: { (snapshot) -> Void in
let messageData = snapshot.value as! Dictionary<String, String>
if let id = messageData["senderId"] as String!, let name = messageData["senderName"] as String!, let text = messageData["text"] as String!, text.characters.count > 0 {
self.addMessage(withId: id, name: name, text: text)
} else {
print("Error! Could not decode message data")
}
})
每次添加新子项时都会执行完成块。有没有办法使用REST API做同样的事情?
答案 0 :(得分:1)
Firebase实时数据库有一个流API,it's documented here。来自文档:
Firebase REST端点支持EventSource / Server-Sent Events 协议。将更改流式传输到Realtime中的单个位置 数据库,你需要做一些事情:
- 将客户的Accept标头设置为“text / event-stream”
- 尊重HTTP重定向,特别是HTTP状态码307
- 如果该位置需要阅读权限,则必须包含auth参数
作为回报,服务器将发送命名事件作为数据的状态 在请求的URL更改。这些消息的结构符合 到EventSource协议。
event: event name data: JSON encoded data payload
Click through to the docs查看您可以预期的所有不同事件。