如果用户未连接到互联网,我会收到这样的错误消息,我将源设置为Source.Server:
无法从服务器获取文档。 (但是,此文档确实存在 在本地缓存中。再次运行,无需设置为SERVER即可检索 缓存的文档。)
我想编写自己的错误消息,实际上我可以对消息进行硬编码,诸如此类
if (message == "failed to get document from server ........") {
showToast("showing my own message here")
}
但它很容易中断,例如,如果firebase sdk更改错误消息字符串。是否有任何错误代码或枚举错误可以识别出来?
这是代码
fun getUserData(source: Source = Source.SERVER, userID: String, completion: (user: User?, errorMessage:String?) -> Unit) {
db.document("users/${userID}").get(source).addOnSuccessListener { documentSnapshot ->
if (documentSnapshot == null || !documentSnapshot.exists()) {
completion(null,"Account is not found")
return@addOnSuccessListener
}
val userData = documentSnapshot.data ?: return@addOnSuccessListener
val user = User(userData)
completion(user,null)
}.addOnFailureListener {
completion(null,it.localizedMessage) // error message comes from here
}
}
答案 0 :(得分:2)
传递到故障侦听器回调的异常的类型为FirebaseFirestoreException。该类包含确定确切错误的正式Code类型。我不知道会是哪一种,但是我最好您可以通过检查结果来弄清楚。如果由于某种原因实际上没有代码,请尝试在the Firebase SDK GitHub上提交问题。