Итак, ситуация такова:
1) Пользователь вошел в систему. Последний созданный токен был некоторое время назад и срок его действия истек. даже если это не так, проблема не решается.
2) Установлено обновление приложения. (Не для мгновенного запуска Android Studio, актуальный подписанный apk с более высокой версией приложения и кодом приложения)
3) Пользователь открывает приложение и запускает обычный код, который я использую для обновления токена id.
4) Никто из слушателей не получил удар, и никогда не было времени ожидания
Это ошибка или я здесь что-то не так делаю?
Очистка данных приложения и перезапуск устраняет все проблемы. Код работает нормально в этом случае. Застревает только после обновления.
ПРИМЕЧАНИЕ. Я установил логическое значение forceRefresh в значение false, поскольку этот код запускается при каждом запуске приложения, и я не хочу, чтобы вызывались ненужные создания токенов идентификаторов в случае ограничения поколений. ложное логическое значение обновляет токен только в том случае, если срок его действия истек.
FirebaseAuth.getInstance().getCurrentUser().getIdToken(false).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
@Override
public void onComplete(@NonNull Task<GetTokenResult> task) {
if (task.isSuccessful()) {
//logic to proceed further
}
}).addOnFailureListener(new OnFailureListener() {
@SuppressLint("SetTextI18n")
@Override
public void onFailure(@NonNull Exception e) {
if(e instanceof FirebaseAuthInvalidUserException){
//Do stuff to log out the user session
}else{
//Some other exception occurred, let the user retry
}
}
});
P.S. Перед всем этим у меня есть проверка недействительности, чтобы увидеть, действительно ли есть пользователь.