多端同步免打扰/置顶
SDK 提供了会话状态(置顶或免打扰)同步机制,通过设置会话状 态同步监听器,当在其它端修改会话状态时,可在本端实时监听到会话状态的改变。
监听器说明
RongIM 中提供了 ConversationListEventListener 监听器。设置监听后,在会话的状态(置顶和免打扰)改变时,会触发以下方法:
- 其它端修改会话的置顶和免打扰状态,数据同步后,SDK 会触发
ConversationListEventListener
的onSyncConversationStatus
方法。 - 本端操作的修改置顶和免打扰状态,SDK会触发
ConversationListEventListener
的onConversationTopStatusChange
方法。
interface ConversationListEventListener {
/**
* 当其他端修改会话的免打扰和置顶状态时
*/
onSyncConversationStatus?: (items: List<ConversationStatusInfo>) => void;
/**
* 当本端修改会话的置顶状态时
*/
onConversationTopStatusChange?: (identifierList: List<ConversationIdentifier>, option: ISetConversationTopOption) => void;
}
方法返回 ConversationStatusInfo 的列表,参数如下:
参数 | 类型 | 描述 |
---|---|---|
conversationType | ConversationType | 会话类型。 |
targetId | String | 会话 ID。 |
updateTime | number | 更新时间,毫秒时间戳。 |
isTop | boolean | 会话是否被设置为置顶。 |
topTime | number | 会话指定时间。 |
level | PushNotificationLevel | 会话的免打扰级别。具体级别说明详见免打扰功能概述。 |
ISetConversationTopOption 参数
参数 | 类型 | 说明 |
---|---|---|
isTop | boolean | 是否置顶,true 设置置顶;false 取消置顶 |
isNeedCreate | boolean | 是否创建会话:对应的会话本地不存在时,true 将创建该会话; false 不创建该会话 |
isNeedUpdateTime | boolean | 是否更新会话时间,非必选,默认为 true |
设置/移除监听器
设置/移除会话状态(置顶和免打扰 )多端同步监听器。
建议添加监听后,在合适的时机移除,避免内存泄露。如果在页面中监听,建议在 aboutToAppear
调用,在 aboutToDisappear
移除监听。
let conversationListEventListener: ConversationListEventListener = {
onSyncConversationStatus: (items: List<ConversationStatusInfo>) => {
//其他端同步会话置顶和免打扰状态
for (let itemElement of items) {
// 会话类型
let conversationType: ConversationType = itemElement.conversationType
// 会话 ID
let targetId: string = itemElement.targetId
// 更新时间,毫秒
let updateTime: number = itemElement.updateTime
// 置顶时间,毫秒
let topTime: number = itemElement.topTime
// 是否置顶
let isTop: boolean = itemElement.isTop
// 免打扰级别
let level: PushNotificationLevel = itemElement.level
}
},
//本端 会话置顶和免打扰状态
onConversationTopStatusChange: (conversationIds: List<ConversationIdentifier>, option: ISetConversationTopOption) => {
for (let itemElement of conversationIds) {
// conversationIds 会话 id 标识列表
}
// 是否置顶
let isTop: boolean = option.isTop
// 是否创建会话
let isNeedCreate: boolean = option.isNeedCreate
// 是否更新会话时间
if (option.isNeedUpdateTime) {
let isNeedUpdateTime: boolean = option.isNeedUpdateTime
}
}
}
// 设置监听
RongIM.getInstance().conversationListService().addConversationListEventListener(conversationListEventListener);
// 移除监听
RongIM.getInstance().conversationListService().removeConversationListEventListener(conversationListEventListener);