SDKsuni-app / uni-app x
接收和查询输入状态
使用 UniApp SDK 接收输入状态变化,并查询指定成员当前处于输入状态的平台。
进入会话、连接恢复或事件状态可能不完整时,可以查询指定成员当前处于输入状态的平台:
import { getInputStates } from '@/uni_modules/unix-openim-sdk'
const result = await getInputStates({
conversationID,
userID: memberUserID,
})
const platformIDs = result?.platforms ?? []
setTyping(memberUserID, platformIDs.length > 0)conversationID 是目标会话 ID,userID 是要查询的成员 ID。Promise 成功后返回 OpenIMGetInputStatesResult | null;非空结果的 platforms 是该成员仍处于输入状态的平台枚举值数组。空数组表示查询时没有任何平台正在输入。查询只建立当前状态,不会触发输入状态事件。
接收后续变化
完整事件监听集中在本页。事件载荷包含会话 ID、成员 ID 和当前仍在输入的平台 ID。用 conversationID:userID 作为成员输入状态的合并标识,不要使用昵称或列表位置。
import {
off,
onConversationUserInputStatusChanged,
OpenIMConversationInputStatusItem,
} from '@/uni_modules/unix-openim-sdk'
const handleInputStatusChanged = (
status: OpenIMConversationInputStatusItem | null,
) => {
if (status == null) return
updateTypingState(
status.conversationID,
status.userID,
status.platformIDs,
)
}
const inputStatusSubscription =
onConversationUserInputStatusChanged(handleInputStatusChanged)
// 页面卸载或账号切换时:
off(inputStatusSubscription)事件用于合并查询后的增量变化;它不替代首次查询,也不保证永久保留状态。连接恢复后应重新查询当前会话中需要展示的成员,群聊中不要持续轮询全部成员。
这个页面有帮助吗?