Firebase AuthuryUser Null на холодном старте из -за KeysetManager не удалось инициализировать на Redmi Note 13 HyperosAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Firebase AuthuryUser Null на холодном старте из -за KeysetManager не удалось инициализировать на Redmi Note 13 Hyperos

Сообщение Anonymous »

Я разрабатываю приложение Android с использованием аутентификации Firebase (электронная почта/пароль) с JetPack Compose и Kotlin. Приложение хранит пользовательские данные локально в хранилище данных и устанавливает флаг «Логгедин» для True после успешной проверки входа и электронной почты. Это заставляет приложение неправильно перенаправить на экране адаптации вместо восстановления сеанса. < /P>
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 секунд:
firebaseAuth.addAuthStateListener { auth ->
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", "🔍 Initial Firebase user: ${firebaseUser?.uid}")

var authStateReceived = false
val authStateListener = FirebaseAuth.AuthStateListener { auth ->
firebaseUser = auth.currentUser
authStateReceived = true
Log.d("SplashScreen", "🔄 Auth state changed: ${firebaseUser?.uid}")
}

firebaseAuth.addAuthStateListener(authStateListener)

while (!authStateReceived && retries < maxRetries) {
Log.d("SplashScreen", "🔄 Waiting for auth state, retry $retries/$maxRetries")
delay(retryDelay)
retries++
}

firebaseAuth.removeAuthStateListener(authStateListener)

val safeUser = firebaseUser
if (safeUser != null) {
try {
safeUser.reload().await()
Log.d("SplashScreen", "✅ Firebase user reloaded: ${safeUser.uid}, verified: ${safeUser.isEmailVerified}")
} 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", "📊 Final state - firebaseUser: ${safeUser?.uid}, isLoggedIn: $isLoggedIn, hasLocalUser: $hasLocalUser")

if (isLoggedIn && hasLocalUser) {
val surveyCompleted = userRepository.isSurveyCompleted().first()
val petNamed = userRepository.isPetNamedFlow().first()

Log.d("SplashScreen", "📋 Survey completed: $surveyCompleted, Pet named: $petNamed")

when {
!surveyCompleted -> onTimeout("survey/1")
!petNamed -> onTimeout("pet_naming")
else -> onTimeout("home")
}
} else {
Log.w("SplashScreen", "⚠️ Incomplete login - redirecting to onboarding")
onTimeout("onboarding")
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... ed-to-init
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Невозможно скопировать OTP-код в буфер обмена в приемнике вещания на Redmi Note 9S (Android 12)
    Гость » » в форуме Android
    0 Ответы
    41 Просмотры
    Последнее сообщение Гость
  • Пытаюсь скомпилировать ядро ​​для Redmi Note 11 pro 4g (viva) [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Показать несколько снимков экрана на Redmi Note 10
    Anonymous » » в форуме Android
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Фрида 16.5.9 работает на Android 8.1 (Redmi Note 5), но не работает на Android 13 (Google Pixel 6)
    Anonymous » » в форуме Android
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Xiaomi Redmi Note 4x «Установка через USB» бросает «Вставьте свою SIM -карту»
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»