浏览 SDKs · Android
平台
SDKsAndroid

上报输入状态

上报当前用户在指定会话中的正在输入状态或停止输入状态。

复制

在会话中上报用户的输入状态。当用户正在编辑文本时,将 focus 设为 true 上报“正在输入”状态;当用户发送消息、清空输入框、输入框失去焦点或离开聊天页面时,将 focus 设为 false 及时清除输入状态。建议对输入事件进行适当防抖,避免频繁向服务端发送相同状态。

String conversationID = "si_user_a_user_b";

// 开始输入时上报
OpenIMClient.getInstance().conversationManager.changeInputState(
    new OnBase<String>() {
        @Override
        public void onSuccess(String data) {
            // 输入状态上报成功
        }

        @Override
        public void onError(int code, String error) {
            // 处理上报失败
        }
    },
    conversationID,
    true
);

// 停止输入或离开页面时清除
OpenIMClient.getInstance().conversationManager.changeInputState(
    null,
    conversationID,
    false
);

参数说明

参数类型是否必填说明
baseOnBase<String>是异步请求回调。
conversationIDString是目标会话全局唯一 ID。
focusboolean是是否处于正在输入状态:true 表示正在输入,false 表示停止输入。

返回结果

成功回调中的 data 返回确认信息。

监听对端输入状态

对端用户通过 OnConversationListener.onConversationUserInputStatusChanged 接收输入状态变化通知。Android SDK 以 JSON 字符串形式派发事件数据:

@Override
public void onConversationUserInputStatusChanged(String payload) {
    InputStatesChangedData state = JsonUtil.toObj(
        payload,
        InputStatesChangedData.class
    );
    if (state == null || state.getConversationID() == null) {
        return;
    }
    // state.getConversationID() 对应会话
    // state.getUserID() 对应正在输入的用户
    // state.getPlatformIDs() 正在输入的平台列表
}

如需主动查询某用户的实时输入状态,请参阅查询输入状态。