Staticget初始化 SDK
上下文,为空则初始化失败
融云 appKey,为空则初始化失败
初始化配置,见 InitOption
设置控制台日志级别
日志级别,用于过滤控制台的日志输出,初始化之后设置
连接 IM
调用该接口,SDK 会在 timeLimit 秒内尝试重连,直到出现下面三种情况之一
第一、连接成功,回调 IConnectResult.code === EngineError.Success
第二、超时,回调 IConnectResult.code === EngineError.ConnectionTimeout,需要手动调用该接口继续连接
第三、出现 SDK 无法处理的错误,回调 IConnectResult.code 为具体的错误码
常见的错误如下:
ClientNotInit :SDK 没有初始化,请先调用 init 接口
ConnectTokenIncorrect :检查一下 APP 使用的 appKey 和 APP Server 使用的 appKey 是否相同
ConnectOneTimePasswordUsed :重新请求 Token
ConnectPlatformError :重新请求 Token
ConnectTokenExpired :重新请求 Token
ConnectUserDeleteAccount :给用户提示已销号
DisconnectUserKicked :给用户提示被提掉线
ConnectUserBlocked :给用户提示被封禁
DisconnectUserBlocked :给用户提示被封禁
从您服务器端获取的 token (用户身份令牌)
超时时间,整型,单位秒,timeout <= 0:不设置超时时长,一直连接直到成功或失败;timeout > 0: 在对应的时间内连接未成功则返回超时错误
连接结果
设置连接状态监听。每个连接状态都有详细的描述和处理意见
常见的错误如下:
DisconnectTokenIncorrect : 检查一下 APP 使用的 appKey 和 APP Server 使用的 appKey 是否相同
DisconnectTokenExpired : 重新请求 Token
DisconnectUserKicked : 给用户提示被提掉线
DisconnectConnectionTimeout : 连接超时,需要主动调用连接接口
监听
获取当前连接状态
连接状态
获取当前用户 ID
连接成功后才会有值
设置消息接收监听
监听
设置消息撤回监听,撤回了之后,原始消息会变成 RecallNotificationMessage 消息
监听
设置消息敏感词拦截监听
监听
发送消息
消息对象
消息发送的配置
消息入库的回调,
消息发送结果
发送媒体消息
媒体消息发送结果
下载媒体消息
消息 id
媒体消息下载成功的本地路径,存储路径见 InitOption.mediaSavePath
撤回消息
需要撤回的消息,发送成功的消息才能撤回(必须有有效的 MessageUid)
撤回成功后的小灰条消息
注册自定义消息
// 自定义消息示例代码
import { JsonUtil, MessageContent, MessageFlag, MessageTag } from '@rongcloud/imlib';
const CustomOrderMessageObjectName = "App:OrderMsg";
const CustomOrderMessageFlag = MessageFlag.Count;
// 1. 继承 MessageContent 并实现 MessageTag 注解
@MessageTag(CustomOrderMessageObjectName,CustomOrderMessageFlag)
class CustomOrderMessage extends MessageContent {
// 2. 按需增加属性
id: string = ""; // 订单 ID
name: string = ""; // 订单名称
price: number = 0; // 订单价格
// 3. 必须声明无参的构造方法,因为注册自定义消息时候,只能用无参构造方法
constructor() {
super();
}
// 4. 将消息对象转为 JSON 字符串
encode(): string {
// 4.1 将基类的数据保存到 map 中
let map = super.encodeBaseData();
// 4.2 将本类的独有属性放到 map 中
// 说明:ts 的 map 必须指定 kv 的类型,所以存多种类型数据,需要转为 Object
map.set("id", this.id as Object);
map.set("name", this.name as Object);
map.set("price", this.price as Object);
// 4.3 将 map 转为 字符串
return JsonUtil.stringifyFromMap(map);
}
// 5. 将字符串转为消息对象
decode(contentJson: string): void {
// 5.1 将字符串转为 map
let map = JsonUtil.parseToMap(contentJson);
// 5.2 将基类的数据解析出来
super.decodeBaseData(map);
// 5.3 将本类的独有属性解析
// 说明:需要将 Object 转为对应的数据类型
this.id = map.get("id") as string;
this.name = map.get("name") as string;
this.price = map.get("price") as number;
}
// 6. 将当前类名返回:该方法的作用是防止代码混淆或者压缩后无法获取正常的类名
// 直接写字符串可能会出现拼写错误的情况,所以此处建议直接使用 类名.name
getClassName(): string {
return CustomOrderMessage.name;
}
}
export { CustomOrderMessage }
// 注册自定义消息示例代码
let clazzList: List<MessageContentConstructor> = new List();
clazzList.add(TextMessage);
IMEngine.getInstance().registerMessageType(clazzList);
自定义消息数组
消息批量入库
Message 下列属性会被入库,其他属性会被抛弃:
conversationType 会话类型
targetId 会话 ID
direction 消息方向
senderId 发送者 ID
receivedStatus 接收状态
sentStatus 发送状态
sentTime 发送时间
content 消息内容
objectName 消息类型,设置 content 的时候 SDK 会自动赋值对应的 objectName
messageUid 服务端生产的消息唯一 ID
extra 扩展信息
需要入库的消息,范围 [1 ~ 500],会话类型不支持聊天室和超级群
入库结果
通过 messageId 获取单条消息
消息的本地数据库自增 ID
消息数据
通过 messageUid 获取单条消息
消息发送成功后的服务唯一 ID
消息数据
获取批量本地消息,基于 messageId 获取
会话标识
配置
返回本地消息结果
获取批量本地消息,基于 time 获取
会话标识
配置
返回本地消息结果
获取批量远端消息
会话标识
配置
返回远端消息结果
获取本地会话中 @ 自己的未读消息列表
会话标识
配置
返回本地消息结果
获取会话里第一条未读消息
会话标识
消息,如果该会话没有未读,返回 null
删除本地会话的指定一批消息
消息 ID 列表
删除结果
清空本地会话的消息
会话标识
结果
删除本地会话特定时间前的所有消息
会话标识
毫秒时间戳。清除 <= sentTime 的所有历史消息,若为 0 则代表清除所有消息
结果
删除远端会话特定时间前的消息
会话标识
毫秒时间戳。清除 <= sentTime 的所有历史消息,若为 0 则代表清除所有消息
结果
批量删除远端消息
会话标识
删除消息的配置
结果
设置会话状态(置顶,消息免打扰)变化监听
监听
获取单个会话
会话标识
会话数据
分页获取本地会话列表
会话类型列表
配置
本地会话列表数据
分页获取本地置顶会话列表
会话类型列表
配置
本地会话列表数据
分页获取本地免打扰会话列表
会话类型列表
配置
本地会话列表数据
删除本地会话同时删除会话中的消息
会话类型列表
结果
批量删除本地会话,但是不会删除消息
会话标识数组
结果
批量 设置/取消 会话置顶
会话标识列表
配置
结果
获取会话置顶状态
会话标识
是否置顶
批量设置会话免打扰
会话标识列表
会话免打扰级别
结果
获取单个会话免打扰状态
会话标识
会话免打扰级别
保存/清空 会话草稿
会话标识
草稿:传入有效值代表保存草稿;传入空字符串代表清空草稿
结果
获取会话草稿
会话标识
草稿
屏蔽某个时间段的消息提醒
配置,见 IQuietHoursOption
结果
查询已设置的时间段消息提醒屏蔽
具体的配置
删除已设置的全局时间段消息提醒屏蔽
结果
获取本地会话的全部未读数
未读数
获取本地批量会话的未读数之和
会话标识数组
未读数
获取单个会话的未读数
会话标识
该会话的未读数
清空单个会话未读数
会话标识
结果
清除单个会话的未读数:按照时间戳清除
会话标识
时间,清理小于该时间戳的消息未读
结果
会话未读数,是否包含免打扰会话的未读数
会话类型数组
是否包含免打扰;true 代表获取所有会话未读数之和; false 代表获取不包含免打扰会话的正常会话未读数之和
未读数
设置聊天室状态监听
let listener: ChatroomStatusListener = {
onChatroomJoining(roomId: string): void {
hilog.info(0x0000, 'IM-App', 'onChatroomJoining roomId:%{public}s', roomId);
},
onChatroomJoined(roomId: string, info: ChatroomJoinedInfo): void {
hilog.info(0x0000, 'IM-App', 'onChatroomJoined roomId:%{public}s info:%{public}s', roomId, JSON.stringify(info));
},
onChatroomJoinFailed(roomId: string, code: EngineError): void {
hilog.info(0x0000, 'IM-App', 'onChatroomJoined roomId:%{public}s code:%{public}d', roomId, code);
},
onChatroomQuited(roomId: string): void {
hilog.info(0x0000, 'IM-App', 'onChatroomQuited roomId:%{public}s', roomId);
},
onChatroomDestroyed(roomId: string, type: ChatroomDestroyType): void {
hilog.info(0x0000, 'IM-App', 'onChatroomDestroyed roomId:%{public}s type:%{public}d', roomId, type);
},
}
IMEngine.getInstance().setChatroomStatusListener(listener);
监听
加入已经存在的聊天室
聊天室 ID
消息个数
结果
退出聊天室
聊天室 ID
结果
获取聊天室信息
聊天室 ID
配置
聊天室信息
IM SDK 核心类
Version
1.0.0