跳到主要内容

输入状态

IMLib SDK 可以向超级群中发送当前用户输入状态。超级群内收到通知的用户可以在 UI 展示 “ xxx 正在输入”。

提示

为保证最佳体验,建议仅在人数小于 10,000 的超级群中使用该功能。

发送输入状态

您可以在当前用户输入文本时调用 sendUltraGroupTypingStatus,发送当前用户输入状态。

接口原型

Objective C
- (void)sendUltraGroupTypingStatus:(NSString *)targetId
channleId:(NSString *)channelId
typingStatus:(RCUltraGroupTypingStatus)status
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode status))errorBlock

参数说明

参数类型说明
targetIdNSString超级群会话 targetId。
channelIdNSString超级群频道 channelId。
statusRCUltraGroupTypingStatus输入状态类型。
successBlockBlock成功的回调
errorBlockBlock失败的回调。status 包含失败的错误码 [RCErrorCode]

示例代码

Objective C
[[RCChannelClient sharedChannelManager] sendUltraGroupTypingStatus:@"targetId"
channelId:@"channelId"
typingStatus:RCUltraGroupTypingStatusText success:^() {
} error:^(RCErrorCode status) {

}];

监听输入状态

为了减少服务端和客户端的压力,服务端会将一段时间内(例如 5 秒)用户输入事件汇总之后统一批量下发,所以回调以数组形式提供。客户端收到通知时可以在 UI 展示 “ xxx 正在输入”。

  1. 设置监听输入状态的代理:
Objective C
[[RCChannelClient sharedChannelManager] setRCUltraGroupTypingStatusDelegate:self];
  1. 实现监听输入状态的代理方法:
Objective C
/*!
用户输入状态变化的回调

@param infoArr 正在输入的RCUltraGroupTypingStatusInfo列表(nil 表示当前没有用户正在输入)

@discussion
当客户端收到用户输入状态的变化时,会回调此接口,通知发生变化的会话以及当前正在输入的RCUltraGroupTypingStatusInfo列表。
*/
- (void)onUltraGroupTypingStatusChanged:(NSArray<RCUltraGroupTypingStatusInfo*>*)infoArr {

}

监听回调中 RCUltraGroupTypingStatusInfo 的属性说明:

Objective C
@interface RCUltraGroupTypingStatusInfo : NSObject
/*!
会话 ID
*/
@property (nonatomic, copy) NSString *targetId;

/*!
所属会话的业务标识
*/
@property (nonatomic, copy) NSString *channelId;

/*!
用户id
*/
@property (nonatomic, copy) NSString *userId;

/*!
用户数
*/
@property (nonatomic, assign) NSInteger userNumbers;

/*!
输入状态
*/
@property (nonatomic, assign) RCUltraGroupTypingStatus status;

/*!
服务端收到用户操作的上行时间.
*/
@property (nonatomic, assign) long long timestamp;

@end