跳到主要内容

输入状态

提示

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;
}
// 发送成功

});
参数类型说明
conIdConversationIdentifier会话标识。该接口仅支持单聊会话类型。
objectNameString正在输入的消息的类型名。如文本消息,应该传类型名 "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;
}