当设备离线时显示消息未发送,当设备联机时显示消息已发送



该应用程序用于消息传递,Firebase Firestore使用我想通知用户消息是否发送到服务器。为此,我添加了";send(布尔(";属性,当我将消息作为(send=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))
}
}

我在我的视图支架中控制它

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

问题是当设备再次联机时,消息属性没有更新(包括send=true(

请帮我解决这个问题

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

有关此示例,请参阅有关本地更改事件的Firestore文档。

最新更新