android - 设备离线时不发送显示消息,设备上线时发送显示消息 firebase firestore

标签 android firebase kotlin google-cloud-firestore

该应用用于消息传递,使用 Firebase Firestore 我想通知用户消息是否发送到服务器。 为此,我向消息实体添加了“sent (Boolean)”属性,当我将消息发送为 (sent = false) 时,它工作正常

val messageToSend = TextMessage(editText_message.text.toString(), Calendar.getInstance().time,
                            FirebaseAuth.getInstance().currentUser!!.uid,
                            otherUserId, currentUser.name, false, null, false)
            editText_message.setText("")
            sendMessage(messageToSend, channelId)


fun sendMessage(message: TextMessage, channelId: String) {

    FirebaseConstants.chatChannelsCollectionRef.document(channelId)
            .collection("messages")
            .add(message).addOnSuccessListener {
                it.update(mapOf("sent" to true))
            }
}

我在我的 View 持有者中控制它

  if (!message.sent) {
            viewHolder.text_message_status_indicator.background = ContextCompat.getDrawable(context, R.drawable.ic_baseline_access_time_24)
        }

问题是当设备再次在线时,消息属性未更新(包括已发送 = true)

请帮我解决这个问题

最佳答案

要检测消息是来自本地缓存还是来自服务器上的数据库,最好使用 DocumentSnapshot.getMetadata().hasPendingWrites()。如果此属性为 true,则数据尚未写入服务器。如果为false,则数据已提交到服务器。

有关此示例,请参阅 events for local changes 上的 Firestore 文档.

关于android - 设备离线时不发送显示消息,设备上线时发送显示消息 firebase firestore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63329604/

相关文章:

android - 使用 fragment 和 Activity 向上导航

android - 外观设计错误

android - 立即拍摄2张照片-使应用程序崩溃

android - 如何从 FCM token 获取 Firebase 用户 ID? (在服务器上的管理员代码中)

swift - Firebase Xcode Swift - 卡在 downloadURL 上

android-studio - 渲染问题 : The following classes could not be found

java - ANDROID:Facebook 和浏览器在我的应用程序中打开,而不是在他们自己的应用程序中

kotlin - Kotlin:断言不变性

android - 我可以在 MPAndroidChart 中扩展 PieChart 吗?

android - Multidex 项目中几个新的 Proguard 问题 Google Play 服务 v10.2.6 到 v11.0.0