收到聊天消息后,我在聊天页面调用conversation的read方法清空未读消息数,这个时候onUnreadMessagesCountUpdated收到回调,该conversation的未读数为0,然而我重新登录leancloud后onUnreadMessagesCountUpdated返回的未读数又变为1了,需要再次调用read方法未读消息数才正常。leancloud版本号为cn.leancloud:realtime-android:8.2.5

附上今天的截图跟日志,可以很明显的看出调用了conversation的read函数后,leancloud的那条消息依旧是未读。


2022-06-23 13:57:51.934 5300-5300/com.kang.hometrain D/StandardWebSocketClient: client(cn.leancloud.websocket.StandardWebSocketClient@9b1002) uplink : cmd: read
i: -65530
readMessage {
convs {
cid: "6241256138aadc4e3b4d376e"
timestamp: 1655963594311
mid: "S7yYErnuvvm0A6hunIaz5h"
}
}
2022-06-23 13:57:51.942 5300-5300/com.kang.hometrain E/com.kang.hometrain: chat unread message0
2022-06-23 13:57:51.949 5300-5300/com.kang.hometrain I/PushService: PushService#onStartCommand
2022-06-23 13:57:51.950 5300-5300/com.kang.hometrain D/PushService: processIMRequests...
2022-06-23 13:57:51.950 5300-5300/com.kang.hometrain D/PushService: processIMRequestsFromClient...
2022-06-23 13:57:51.957 5300-5300/com.kang.hometrain D/StandardWebSocketClient: client(cn.leancloud.websocket.StandardWebSocketClient@9b1002) uplink : cmd: logs
i: -65529
logsMessage {
cid: "6241256138aadc4e3b4d376e"
limit: 20
tt: 1655963853148
tmid: "a9aTN3EiOjALcMvQAmxu0t"
direction: OLD
tIncluded: false
ttIncluded: false
}
2022-06-23 13:57:51.964 5300-5300/com.kang.hometrain I/PushService: PushService#onStartCommand
2022-06-23 13:57:51.965 5300-5300/com.kang.hometrain D/PushService: processIMRequests...
2022-06-23 13:57:51.965 5300-5300/com.kang.hometrain D/PushService: processIMRequestsFromClient...
2022-06-23 13:57:51.970 5300-5300/com.kang.hometrain D/StandardWebSocketClient: client(cn.leancloud.websocket.StandardWebSocketClient@9b1002) uplink : cmd: read
i: -65528
readMessage {
convs {
cid: "6241256138aadc4e3b4d376e"
timestamp: 1655963594311
mid: "S7yYErnuvvm0A6hunIaz5h"
}
}
2022-06-23 13:57:52.007 5300-5501/com.kang.hometrain D/LCConnectionManager: client(cn.leancloud.websocket.StandardWebSocketClient@9b1002) downlink: cmd: unread
peerId: "u662986981823254528_debug"
service: 2
unreadMessage {
convs {
cid: "6241256138aadc4e3b4d376e"
unread: 0
}
}
2022-06-23 13:57:52.007 5300-5501/com.kang.hometrain D/LCDefaultConnectionListener: new message arriving. peerId=u662986981823254528_debug, requestId=null, command=5
2022-06-23 13:57:52.069 5300-5501/com.kang.hometrain D/LCConnectionManager: client(cn.leancloud.websocket.StandardWebSocketClient@9b1002) downlink: cmd: unread
peerId: "u662986981823254528_debug"
service: 2
unreadMessage {
convs {
cid: "6241256138aadc4e3b4d376e"
unread: 0
}
}
2022-06-23 13:57:52.069 5300-5501/com.kang.hometrain D/LCDefaultConnectionListener: new message arriving. peerId=u662986981823254528_debug, requestId=null, command=5
2022-06-23 13:57:52.078 5300-5501/com.kang.hometrain D/LCConnectionManager: client(cn.leancloud.websocket.StandardWebSocketClient@9b1002) downlink: cmd: logs
peerId: "u662986981823254528_debug"
i: -65529
service: 2
logsMessage {
}
2022-06-23 13:57:52.078 5300-5501/com.kang.hometrain D/LCDefaultConnectionListener: new message arriving. peerId=u662986981823254528_debug, requestId=-65529, command=6
2022-06-23 13:57:52.492 5300-5300/com.kang.hometrain D/CrashReport: >>> com.kang.hometrain.workbench.activity.WorkbenchActivity onStop <<<
2022-06-23 13:57:52.492 5300-5300/com.kang.hometrain D/CrashReport: setActivityForeState, hash:258051778 isFore:false
2022-06-23 13:57:52.492 5300-5300/com.kang.hometrain I/CrashReport-Native: jni_setNativeInfo: key is 14
2022-06-23 13:57:52.493 5300-5300/com.kang.hometrain I/CrashReport-Native: Set native info: isAppForeground(true)

您好,这里「未读」是怎么判断的呢?看日志 read 后未读消息数是 0 了。

public void onUnreadMessagesCountUpdated(LCIMClient client, LCIMConversation conversation) {
EventBus.getDefault().post(new ConversationUpdateEvent(client, conversation));
LogUtil.m("chat unread message" + conversation.getUnreadMessagesCount());
}

这个回调里会返回conversation,getUnreadMessagesCount是1,然后我去leancloud控制台找到那条消息,对比下面举例的截图,没有read-at这个字段,这条消息跟上面的不是同一条消息,我只是举例正常已读消息是啥样的。