处理会话未读消息数
您可以使用 IMLib SDK 提供的 接口直接获取会话中的未读消息数。具体能力如下:
- 获取所有会话(不含聊天室)中的未读消息总数(
getTotalUnreadCount
) - 获取指定会话中的总未读消息数,或指定会话中指定消息类型的总未读消息数,或按会话类型获取总未读消息总数(
getUnreadCount
)
在用户使用您的 App 时,UI 上未读计数可能需要发生变化,此时您可以清除会话中的未读数(clearMessagesUnreadStatus
)。
获取所有会话总未读消息数
您可以使用 getTotalUnreadCount
获取所有类型会话(不含聊天室)中未读消息的总数。
接口原型
TypeScript
public getTotalUnreadCount(): Promise<IAsyncResult<number>>;
示例代码
TypeScript
IMEngine.getInstance()
.getTotalUnreadCount()
.then(result => {
if (EngineError.Success !== result.code) {
// 获取未读数失败
return;
}
if (!result.data) {
// 未读数为 null
return;
}
let unreadCount = result.data as number;
})
获取指定会话的总未读消息数
您可以获取指定会话中的未读消息总数。
接口原型
TypeScript
public getUnreadCount(conId: ConversationIdentifier): Promise<IAsyncResult<number>>;
参数说明
参数 | 类型 | 说明 |
---|---|---|
conId | ConversationIdentifier | 会话标识,包含会话类型,会话 id |
示例代码
TypeScript
let conId = new ConversationIdentifier();
conId.conversationType = ConversationType.Private;
conId.targetId = "会话 id";
IMEngine.getInstance().getUnreadCount(conId)
.then(result => {
if (EngineError.Success !== result.code) {
// 获取未读数失败
return;
}
if (!result.data) {
// 未读数为 null
return;
}
let unreadCount = result.data as number;
});
按会话类型获取总未读消息数
您可以获取多个指定会话类型的未读数。
接口原型
TypeScript
public getUnreadCountByTypes(typeList: List<ConversationType>, isContainBlocked: boolean): Promise<IAsyncResult<number>>;
参数说明
参数 | 类型 | 说明 |
---|---|---|
typeList | List<ConversationType> | 会话类型数组。 |
isContainBlocked | boolean | 是否包含免打扰。 |
示例代码
TypeScript
let conTypeList = new List<ConversationType>();
conTypeList.add(ConversationType.Private);
conTypeList.add(ConversationType.Group);
let isContainBlocked = false;
IMEngine.getInstance().getUnreadCountByTypes(conTypeList, isContainBlocked)
.then(result => {
if (EngineError.Success !== result.code) {
// 获取未读数失败
return;
}
if (!result.data) {
// 未读数为 null
return;
}
let unreadCount = result.data as number;
});