无法访问Cloud Firestore后端



我正在编写一个使用Firebase Firestore、存储和身份验证的信使应用程序。首先,打开它会请求用户数据,如果具有用户输入的号码的用户存在,则应用程序将从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的真实设备上测试应用程序,只有当应用程序试图从firestore获取用户数据时,才会出现此错误。从消防仓库获取数据的功能:

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)
} 

问题与使用await方法的线程阻塞有关。仅限Java:ReentrantLock和RxJava的blockingGet((方法出现相同错误,但CountdownLatch没有。

最新更新