我正在使用Firebase实时数据库创建在线状态,但是onDisconnect函数未设置正确的时间戳,而是设置了onDisconnect函数已创建/加载的时间的时间戳。
我正在使用以下代码:
func setStatusToOnline(forUser user: User) {
let selfUserRef = Database.database().reference(withPath: "users/\(user.uid)")
selfUserRef.updateChildValues(["online": true])
selfUserRef.onDisconnectUpdateChildValues(["online": false, "last_online": Int(Date.timeIntervalSinceReferenceDate*1000000)]) { (error, ref) in
if let error = error {
print(error)
}
}
}
例如,当函数setStatusToOnline(user: User)
被调用时时间戳575825661026887(= 575825661026887/1000000秒),并且用户在几分钟后断开连接,它将设置575825661026887
而不是当前时间戳。
有没有办法设置正确的时间戳?
答案 0 :(得分:0)
在评估时设置日期的原因是,您必须将完全创建的对象传递给onDisconnectUpdateChildValues
。它没有任何延迟执行属性,因为名称和值必须在调用时确定,而不是在断开连接时确定。