输入状态
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
参数说明
参数 | 类型 | 说明 |
---|---|---|
targetId | NSString | 超级群会话 targetId。 |
channelId | NSString | 超级群频道 channelId。 |
status | RCUltraGroupTypingStatus | 输入状态类型。 |
successBlock | Block | 成功的回调 |
errorBlock | Block | 失败的回调。status 包含失败的错误码 [RCErrorCode] |
示例代码
Objective C
[[RCChannelClient sharedChannelManager] sendUltraGroupTypingStatus:@"targetId"
channelId:@"channelId"
typingStatus:RCUltraGroupTypingStatusText success:^() {
} error:^(RCErrorCode status) {
}];
监听输入状态
为了减少服务端和客户端的压力,服务端会将一段时间内(例如 5 秒)用户输入事件汇总之后统一批量下发,所以回调以数组形式提供。客户端收到通知时可以在 UI 展示 “ xxx 正在输入”。
- 设置监听输入状态的代理:
Objective C
[[RCChannelClient sharedChannelManager] setRCUltraGroupTypingStatusDelegate:self];
- 实现监听输入状态的代理方法:
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