FIrebase onDisconnect处理程序的时间戳未设置正确的时间戳

时间:2019-04-01 15:46:51

标签: ios swift firebase firebase-realtime-database

我正在使用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而不是当前时间戳。

有没有办法设置正确的时间戳?

1 个答案:

答案 0 :(得分:0)

在评估时设置日期的原因是,您必须将完全创建的对象传递给onDisconnectUpdateChildValues。它没有任何延迟执行属性,因为名称和值必须在调用时确定,而不是在断开连接时确定。