Я пишу приложение для обмена сообщениями, которое использует Firebase Firestore, Storage и Authentication. Сначала, открывая его, запрашиваются пользовательские данные, и если пользователь с номером, который он ввел, существует, то приложение получает его имя и псевдоним из Firestore. Но в этот момент приложение останавливается, отвечает и печатает это сообщение в logcat:
W/Firestore: (21.4.1) [OnlineStateTracker]: Could not reach Cloud Firestore backend. Backend didn't respond within 10 seconds
This typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.
Я тестирую приложение на реальном устройстве с Android 10, и эта ошибка появляется только тогда, когда приложение пытается получить пользовательские данные из пожарного магазина. Функция, которая получает данные из хранилища:
fun getUserFromFirestoreAndInsertItInDB(number: String): MessengerUser = runBlocking(Dispatchers.IO) {
val user = Firebase.firestore.collection("Users").document(number).get()
.await().toMessengerUser()
database.messengerUserDao.insert(user)
user
}
toMessengerUser () функция:
fun DocumentSnapshot.toMessengerUser(): MessengerUser {
val name = data!!["name"] as String
val nickname = data!!["nickname"] as String
val number = data!!["phoneNumber"] as String
val lastOnline =
(data!!["lastOnline"] as Long) + Calendar.getInstance().timeZone.rawOffset
lateinit var stream: InputStream
Firebase.storage.getReference("UsersPictures/$number")
.child(number).stream
.addOnSuccessListener {
stream = it.stream
}
.addOnFailureListener {
FirebaseCrashlytics.getInstance().recordException(it.cause!!)
}
val picture = Drawable.createFromStream(stream, null)
return MessengerUser(picture, name, nickname, number, lastOnline)
}