多端同步阅读状态
在即时通讯业务中,同一用户账号可能在多个设备上登录。仅在开通多设备消息同步服务后,融云会在多个设备之间同步消息数据,但设备上的会 话中消息的已读/未读状态仅存储在本地。因此,应用程序可能希望将用户当前登录设备上指定会话的已读/未读状态同步给其他终端。
SDK 设计了多端同步单聊和群聊会话消息未读状态的机制。在一端主动调用同步消息未读状态接口 syncConversationReadStatus
,其他端可通过会话状态同步监听器监听到会话中消息未读状态的最新数据。
主动同步消息未读状态
多端登录时,通知其它终端同步某个会话的消息未读状态。
/**
* 同步会话已读状态
* ```
* 用于相同账号的多端已读同步
* 例如用户 A 同时登录鸿蒙和 Android ,两端同时收到消息,同时未读数增加
* Android 调用该方法将某个会话同步已读之后, 鸿蒙会触发 setSyncConversationReadStatusListener
* ```
* @param conId 会话标识
* @param timestamp 会话中已读的最后一条消息的发送时间戳
* @returns 结果
* @version 1.2.0
*/
public syncConversationReadStatus(
conId: ConversationIdentifier,
timestamp: number,
): Promise<IAsyncResult<void>>
参数 | 类型 | 说明 |
---|---|---|
conId | ConversationIdentifier | 包含会话类型和会话 id |
timestamp | number | 该会话中已读的最后一条消息的发送时间戳 |
let conId = new ConversationIdentifier();
conId.conversationType = ConversationType.Private;
conId.targetId = "会话 Id";
// 会话中已读的最后一条消息的发送时间戳,此处用了当前时间
let time = Date.now();
IMEngine.getInstance().syncConversationReadStatus(conId,time).then(result => {
if (EngineError.Success !== result.code) {
// 同步已读失败
return;
}
// 同步已读成功
});