Сценарий:
Я вошел в систему с Firebase Auth, используя провайдера электронной почты. Я изменяю photoURL и displayName моего пользователя, используя этот код Swift:
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.photoURL = someURL
changeRequest?.displayName = someName
changeRequest?.commitChanges { (error) in
// ...
}
С тех пор, когда я использую Auth.auth().currentUser.photoURL
и Auth.auth().currentUser.displayName
для визуализации имени пользователя и аватара, все это работает как положено. Нет проблем вообще.
Однако я также вошел в систему на другом устройстве, прежде чем я внес изменения в photoURL и displayName. И на этом устройстве отображается старая информация о пользователе, даже при закрытии и перезапуске приложения. И все это, пока я использую Auth.auth().addStateDidChangeListener
API.
Обновляется информация только когда я выхожу и снова захожу. Я предполагаю, что он использует локально кэшированные данные, но не получает свежую информацию о пользователе с сервера или что-то в этом роде?
Я что-то не так делаю? Нужно ли принудительно обновлять приложение при запуске или что-то в этом роде?
Редактировать: Я пытался снова несколько раз, и да, это воспроизводится на 100%.
- Войдите в систему на двух устройствах. Выведите
Auth.auth().currentUser.displayName
где-нибудь на экране (или на консоль).
- На устройстве A измените имя дисплея. Когда я обновляю интерфейс, отображается новое имя. При перезапуске приложения отображается новое имя.
- На устройстве B старое имя по-прежнему отображается, даже после закрытия и перезапуска приложения. Только когда я выйду из системы и вернусь в систему, новое имя будет наконец отображено.