输入状态
提示
SDK 从 1.1.0 版本开始支持输入状态。
应用程序可以在单聊会话中发送当前用户输入状态。对端收到通知后可以在 UI 展示 “xxx 正在输入”。
设置输入状态更新时间间隔
设置输入状态更新时间间隔,可以控制输入状态发送频率。在规定时间内,多次调用发送输入状态方法,最终只会发送一次输入状态,例如输入状态时间间隔为 6000 毫秒,在这段时间多次调用输入状态方法,只会发出一次输入状态,对方也只会收到一次输入状态。
/**
* @param interval 时间间隔,单位毫秒,默认为 6000 毫秒
* @returns
* @version 1.1.0
*/
public setTypingStatusInterval(interval: number): Promise<IAsyncResult<void>>
let interval = 8000;
IMEngine.getInstance().setTypingStatusInterval(interval).then(result => {
if (EngineError.Success !== result.code) {
// 设置输入状态间隔失败
return;
}
// 设置成功
});
发送输入状态消息
在当前用户输入文本时调用 sendTypingStatus
,发送当前用户输入状态。
let conId = new ConversationIdentifier();
conId.conversationType = ConversationType.Private;
conId.targetId = "会话 ID";
let objectName = TextMessageObjectName;
IMEngine.getInstance().sendTypingStatus(conId, objectName).then(result => {
if (EngineError.Success !== result.code) {
// 发送失败
return;
}
// 发送成功
});
参数 | 类型 | 说明 |
---|---|---|
conId | ConversationIdentifier | 会话标识 。该接口仅支持单聊会话类型。 |
objectName | String | 正在输入的消息的类型名。如文本消息,应该传类型名 "RC:TxtMsg"。为了兼容其他平台老版本 SDK,objectName 为 RC:VcMsg 代表是普通语音消息或者高清语音消息。 |
监听输入状态
应用程序可以使用 setTypingStatusListener
监听在单聊类型的会话收到的输入状态通知。在收到对端发来的输入状态通知时,SDK 会返回当前正在输入的用户列表和消息类型。
// 为了兼容其他平台老版本 SDK,objectName 为 RC:VcMsg 代表是普通语音消息或者高清语音消息
IMEngine.getInstance().
setTypingStatusListener((conId: ConversationIdentifier, typingStatusList: List<TypingStatus>) => {
hilog.info(0x0000, 'IM-App', 'setTypingStatusListener conId:%{public}s typingStatusList:%{public}s',
JSON.stringify(conId), JSON.stringify(typingStatusList));
});
TypingStatus
的信息如下:
/**
* 输入状态信息
* @version 1.1.0
*/
class TypingStatus {
/**
* 用户 ID
*/
userId: string = "";
/**
* 消息 ObjectName ,文本消息代表 userId 正在输入消息,语音消息就代表 userId 正在说话。
*/
objectName: string = "";
/**
* 输入状态的时间,毫秒时间戳
*/
sentTime: number = 0;
}