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
);参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
base | OnBase<String> | 是 | 异步请求回调。 |
conversationID | String | 是 | 目标会话全局唯一 ID。 |
focus | boolean | 是 | 是否处于正在输入状态: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() 正在输入的平台列表
}如需主动查询某用户的实时输入状态,请参阅查询输入状态。
这个页面有帮助吗?