- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我注意到由 FIRServerValue.timestamp()
创建的对象的下载时间戳与在线版本略有不同。我的代码:
let messagesRef = self.ref.child("messages").child(chatId)
messagesRef
.queryOrderedByChild("timestamp")
.queryLimitedToLast(500)
.observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
guard let object = snapshot.value as? [String: AnyObject] else { return }
let messageId = snapshot.key
if let
senderId = object["senderId"] as? String,
senderName = object["senderName"] as? String,
senderEmail = object["senderEmail"] as? String,
timestamp = object["timestamp"] as? NSTimeInterval {
let date = timestamp.toDate()
let text = object["text"] as? String
print("text: \(text) - timestamp: \(timestamp)")
}
})
下面是一个示例输出与在线值的对比(用->
标记):
text: Optional("1") - timestamp: 1471596374007.0 -> 1471596374874
text: Optional("2") - timestamp: 1471596375044.0 -> 1471596375324
text: Optional("3") - timestamp: 1471596376157.0 -> 1471596376461
text: Optional("4") - timestamp: 1471596461213.0 -> 1471596463220
text: Optional("5") - timestamp: 1471596542659.0 -> 1471596543307
我有时会遇到一个错误,即一条消息出现在另一条消息之前,即使它是在该特定消息之后发送的。我认为这与这种行为有关。当检索到的时间戳不准确时,发送时间彼此接近的消息可以按不同顺序排列。
最佳答案
根据documentation ,当您指定服务器时间戳时,发送到服务器的数据包含:
Placeholder value for the number of milliseconds since the Unix epoch.
该占位符将替换为服务器的时间戳。但是,如果您在添加数据的设备上有 ChildAdded
监听器,这些监听器将本地通知 - 这将涉及用本地时间戳替换占位符。我怀疑这就是为什么您看到通过监听器报告的内容(写入消息时)与控制台上显示的内容之间存在差异的原因。这也是读取的值与控制台中显示的值匹配的原因。
Firebase 可能会考虑本地时钟和服务器时钟之间的偏移 - 因为它在为推送数据生成 key 时会考虑到这一点 - 但你仍然会得到一个小差异,因为数据需要一些时间到达服务器。
这种本地事件触发也是您有时可能会看到 ChildAdded
事件以意外顺序触发的原因。我 answered a question regarding unexpected snapshot ordering几天前。
关于ios - Firebase:由 FIRServerValue.timestamp() 创建的下载时间戳与在线版本略有不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39035047/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!