问题描述
我的 Android 应用中有一个 FirebaseMessagingService 派生服务,它接收 Firebase 消息(通过 onMessageReceived),然后使用接收到的消息中提供的 ID 获取 Firestore 文档。
问题是有时无法从firestore中检索到文档;我收到错误消息“无法获取文档,因为客户端离线”。
我尝试自动重试以每 10 秒获取一次文档最多 5 分钟,但没有成功。我注意到代码在发生时似乎无法访问互联网(但是接收消息需要互联网,对吧!?)。奇怪的是,在这 5 分钟内,收到了其他消息并成功检索了他们的文档...
我认为这无关紧要,但问题发生在我的 WIFI 和 LTE 上,所以这不是互联网提供商的问题。
有人知道如何解决这个问题吗?我已经在这个问题上挣扎了几个星期......
代码如下:
class ReceptionService : FirebaseMessagingService() {
override fun onMessageReceived(itemmessage: RemoteMessage) {
itemmessage.data.isNotEmpty().let {
val notifContent = GZIPInputStream(Base64.decodeBase64(itemmessage.data["content"]!!.toByteArray())
.inputStream()).bufferedReader(UTF_8).use { it.readText() }
when {
// Convert Message into NotifParam
val gsonContent = GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss")
.registerTypeAdapter(Calendar::class.java,DotNetDateDeserializer()).create()
val resultDataType = object : Typetoken<NotifParam>() {}.type
val documentId = gsonContent.fromJson(notifContent,resultDataType).DocumentId
doAsync {
FirebaseFirestore.getInstance().collection("Item").document(documentId).get(Source.SERVER)
.addOnFailureListener { e ->
Notification.notifyAlert(applicationContext,"Error: can't get document")
}
.addOnSuccessListener { documentSnapshot -> ... }
}
}
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)