消息正在输入
更新时间: 2024/03/07 11:45:58
网易云信即时通讯 NIM SDK 中的QChatMessageService
接口,提供sendTypingEvent
方法发送“正在输入事件”。接收方只有在监听该事件且订阅消息所在频道后,才能在消息输入方发送该事件后,接收到该事件。
前提条件
发送方和接收方都在频道内,即频道对两者都可见, 且发送方拥有发送频道消息权限(即QChatRoleResource
中的 sendMsg
)。
实现流程
流程概览
流程说明
本节仅对上图中标为橙色的流程进行说明,其他流程请参考相关文档。例如:
-
接收方调用
onReceiveTypingEvent
方法监听正在输入事件(QChatTypingEvent
)。 -
接收方调用
subscribeChannel
方法,调用时将入参QChatSubscribeType
设为channelMsgTyping
,实现对正在输入事件的订阅。如果断线重连,SDK 会自动再次订阅正在输入事件。但如果用户调用
logout
方法切断与圈组服务端的连接或销毁 SDK 实例后重建实例,那么用户需要再度调subscribeChannel
方法重新订阅该事件。 -
发送方调用
sendTypingEvent
方法发送正在输入事件。发送该事件后,SDK 会触发用户A 在
onReceiveTypingEvent
方法中设置的回调,将QChatTypingEvent
投递至用户A。该方法有调用频率上限,目前默认 3000 ms 一次。
示例代码
//************************接收方设置正在输入事件监听回调************************/
NimCore.instance.qChatObserver.onReceiveTypingEvent.listen((event) {
//todo
})
//************************接收方订阅某正在输入事件************************/
var param = QChatSubscribeChannelParam(type: QChatSubscribeType.channelMsgTyping,
operateType: QChatSubscribeOperateType.sub,channelIdInfos: [channel])
NimCore.instance.qChatChannelService.subscribeChannel(param).then((value){
});
//************************发送方发送正在输入事件************************/
var param = QChatSendTypingEventParam(serverId: serverId,channelId: channelId);
NimCore.instance.qChatMessageService.sendTypingEvent(param).then((value){
//todo
});
API 参考
API |
说明 |
---|---|
onReceiveTypingEvent |
监听正在输入事件 |
subscribeChannel |
订阅频道 |
sendTypingEvent |
发送正在输入事件 |
此文档是否对你有帮助?