多端同步阅读状态
在即时通讯业务中,同一用户账号可能在多个设备上登录。仅在开通多设备消息同步服务后,融云会在多个设备之间同步消息数据,但设备上的会话中消息的已读/未读状态仅存储在本地。因此,应用程序可能希望将用户当前登录设备上指定会话的已读/未读状态同步给其他终端。
提示
如果 SDK 版本 ≦ 5.6.2,不支持多端同步系统会话的阅读状态。
发起会话阅读状态同步
[[RCIMClient sharedRCIMClient] syncConversationReadStatus:ConversationType_PRIVATE targetId:@"targetId" time:1626422416809 success:^{
} error:^(RCErrorCode nErrorCode) {
}];
参数 | 类型 | 说明 |
---|---|---|
conversationType | RCConversationType | 会话类型 |
targetId | NSString | 会话 Id |
timestamp | long long | 消息时间戳,表示小于或等于此时间戳之前的消息为已读 |
接收多端 同步阅读状态的通知
IMLib 在收到同步阅读状态通知时会分发一个 RCLibDispatchReadReceiptNotification
的通知。此时消息数据库中消息状态已经改为已读,应用程序可根据通知更新会话 UI,将 messageTime 以前的消息 UI 为已读。
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(didReceiveReadReceiptNotification:)
name:RCLibDispatchReadReceiptNotification
object:nil];
Notification 的 object 为 nil
,userInfo 为 NSDictionary
对象。
- (void)didReceiveReadReceiptNotification:(NSNotification *)notification {
RCConversationType conversationType = (RCConversationType)[notification.userInfo[@"cType"] integerValue];
long long readTime = [notification.userInfo[@"messageTime"] longLongValue];
NSString *targetId = notification.userInfo[@"tId"];
NSString *senderUserId = notification.userInfo[@"fId"];
}
NSDictionary
对象的 key
值说明:
key值 | 类型 | 说明 |
---|---|---|
cType | NSNumber | 会话类型 |
messageTime | NSNumber | 消息时间戳,表示小于或等于此时间戳之前的消息为已读 |
tId | NSString | A 的 targetID |
fId | NSString | B 的 targetId |