该应用用于消息传递,使用 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/