使用Source.Server但用户未连接到互联网时,如何获取Firestore错误代码?

时间:2020-01-11 05:01:06

标签: android firebase kotlin google-cloud-firestore

如果用户未连接到互联网,我会收到这样的错误消息,我将源设置为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
        }


    }

1 个答案:

答案 0 :(得分:2)

传递到故障侦听器回调的异常的类型为FirebaseFirestoreException。该类包含确定确切错误的正式Code类型。我不知道会是哪一种,但是我最好您可以通过检查结果来弄清楚。如果由于某种原因实际上没有代码,请尝试在the Firebase SDK GitHub上提交问题。