log: < /p>
2025-08-03 10: 39: 59.094 12114-12114 Firebearstorgececel Настройка: хранилище ключа не может загрузить ключ с помощью ID: Firebear_main_key_id_for_storage_crypto ...
2025-08-03 10: 39: 59.094 12114-12114. /> 2025-08-03 10: 39: 59.095 12114-12114 PAWGressApplication com.example.pawgress D Инициализированная автобуса, CurrentUser: null
2025-08-03 10: 39: 59.904 12114-12114 Splashscreen Com.exmem.pame .paw. Session: userId = bu36t4sae8fdqrpcxhmfns2slkm1, flag = true
2025-08-03 10: 40: 01.920 12114-12114 userRepository com.example.pawgress d имеет локальный пользовательский данных: True < /p>
< /blockquote>
Что я попробовал < /p>
- Обновленная Firebase SDK: используя com.google.firebase: Firebase-auth: 23.2.0 с FireBase-bom: 33.16.0. /> < /li>
AuthStateListener: добавлен прослушиватель, но он либо не стреляет, либо возвращает NULL в течение 10–20 секунд:
Log.d("PawgressApplication", "Auth state changed: ${auth.currentUser}")
}
< /code>
[*] Опрос для CurrentUSER: Пробое опрос. Керрентрантор с задержкой, остается null: < /li>
< /ul>
while (firebaseUser == null && retries < maxRetries) {
firebaseUser = firebaseAuth.currentUser
delay(1000)
retries++
}
< /code>
очищенное приложение данных: сбросить приложение с помощью настройки, снова вошли в систему-проблема все еще происходит при холодном запуске. < /p>
< /li>
Оптимизация гиперсоров отключено. Правильно (проверенный флаг true в журналах).
Проверка данных о данных: /> Поиск аналогичных проблем: найденные потоки, упомянутые проблемы с хранилищем ключей на устройствах Miui/Hyperos, но ни один из них не предлагал рабочее исправление. var firebaseUser = firebaseAuth.currentUser
var retries = 0
val maxRetries = 10
val retryDelay = 2000L
Log.d("SplashScreen", "
var authStateReceived = false
val authStateListener = FirebaseAuth.AuthStateListener { auth ->
firebaseUser = auth.currentUser
authStateReceived = true
Log.d("SplashScreen", "
}
firebaseAuth.addAuthStateListener(authStateListener)
while (!authStateReceived && retries < maxRetries) {
Log.d("SplashScreen", "
delay(retryDelay)
retries++
}
firebaseAuth.removeAuthStateListener(authStateListener)
val safeUser = firebaseUser
if (safeUser != null) {
try {
safeUser.reload().await()
Log.d("SplashScreen", "
} catch (e: Exception) {
Log.e("SplashScreen", "Error reloading Firebase user: ${e.message}")
}
}
val localSessionValid = userRepository.hasValidLocalSession()
val localUser = userRepository.getUser().first()
val isLoggedIn = safeUser != null &&
safeUser.isEmailVerified &&
localUser != null &&
safeUser.uid == localUser.id &&
localSessionValid
val hasLocalUser = userRepository.hasLocalUserData()
Log.d("SplashScreen", "
if (isLoggedIn && hasLocalUser) {
val surveyCompleted = userRepository.isSurveyCompleted().first()
val petNamed = userRepository.isPetNamedFlow().first()
Log.d("SplashScreen", "
when {
!surveyCompleted -> onTimeout("survey/1")
!petNamed -> onTimeout("pet_naming")
else -> onTimeout("home")
}
} else {
Log.w("SplashScreen", "
onTimeout("onboarding")
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ed-to-init