FIrebase onDisconnect обработчик с меткой времени не устанавливает правильную метку времени - PullRequest
0 голосов
/ 01 апреля 2019

Я создаю присутствие в Интернете с использованием базы данных 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 голосов
/ 01 апреля 2019

Причина, по которой ваша дата была установлена ​​во время оценки, заключается в том, что вам пришлось передать полностью созданный объект в onDisconnectUpdateChildValues. Он не может иметь никаких свойств отложенного выполнения, потому что имена и значения должны быть установлены во время вызова, а не во время разъединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...