频道事件回调 编辑文档

功能描述

通过频道事件回调可以监听和报告指定频道的事件和数据。

接口描述

@protocol QttChannelEngineDelegate <NSObject>
@optional
/**
* 自己加入成功,实现加入频道成功的逻辑
* @param channelName 频道名字
* @param uid 用户id。如果用户加入频道前没有设置id,这位服务器自动分配的id
* @param role 加入频道的角色。TALKER表示主播,可说可听;AUDIENCE表示听众,只能听不能说
* @param muted 加入频道的静音状态。0表示未静音,1表示静音
*/
- (void)onJoinSuccess:(NSString*)channelName uid:(NSUInteger)uid role:(QttChannelRole)role muted:(bool)muted;

/**
* 自己重新加入频道成功
* @param channelName 频道名字
* @param uid 用户id。
* @param role 重新加入频道的角色。TALKER表示主播,可说可听;AUDIENCE表示听众,只能听不能说
* @param muted 重新加入频道的静音状态。0表示未静音,1表示静音
*/
- (void)onReJoinSuccess:(NSString*)channelName uid:(NSUInteger)uid role:(QttChannelRole)role muted:(bool)muted;

/**
* 其他用户加入,实现别人进入频道的逻辑
* @param uid 加入频道的用户id
* @param role 加入频道的角色。TALKER表示主播,可说可听;AUDIENCE表示听众,只能听不能说
* @param muted 加入频道的静音状态。0表示未静音,1表示静音
*/
- (void)onOtherJoin:(NSUInteger)uid role:(QttChannelRole)role muted:(bool)muted;

/**
* 自己加入失败,实现加入频道失败的逻辑
* @param code 失败状态
* @param message 失败信息
*/
- (void)onJoinFail:(int)code message:(NSString*)message;

/**
* 网络打断
*/
- (void)onConnectionBreak;

/**
* 网络失去连接
*/
- (void)onConnectionLost;

/**
* 运行过程中的警告信息,通常是网络或者音频设备相关的。一般情况下应用可以忽略,SDK会自己尝试恢复。
* @param warn 警告码
* @param message 警告描述
*/
- (void)onWarning:(int)warn message:(NSString*)message;

/**
* 运行过程中的错误信息,SDK无法自行恢复。一般情况下应用需要提示用户并进行对应的处理。
* @param err 错误码
* @param message 错误描述
*/
- (void)onError:(int)err message:(NSString*)message;

/**
* 实现退出频道的逻辑
*/
- (void)onLeave;

/**
* 其他用户离开,实现别人离开频道的逻辑
* @param uid 离开频道用户的id
* @param role 离开频道用户的角色
*/
- (void)onOtherLeave:(NSUInteger)uid role:(QttChannelRole)role;

/**
* 用户音量提示
* @param volumeInfos 用户音量信息集合
* @param userNum volumeInfos中用户个数
*/
- (void)onTalking:(NSArray<QttVolumeInfo*> *_Nonnull)volumeInfos userNum:(NSInteger)userNum;

/**
* 用户mute状态,实现静音状态改变的逻辑
* @param uid 用户id。如果为0,表示自己静音状态,否则表示他人静音状态
* @param muted 0表示未静音,1表示静音
*/
- (void)onMuteStatusChanged:(NSUInteger)uid muted:(bool) muted;

/**
* 用户角色状态,实现角色状态改变的逻辑
* @param uid 用户id。如果为0,表示自己角色状态,否则表示他人角色状态
* @param role TALKER表示主播,可说可听;AUDIENCE表示听众,只能听不能说
*/
- (void)onRoleStatusChanged:(NSUInteger)uid role:(QttChannelRole)role;

/**
* 当前通话网络统计回调,通话中每两秒触发一次
* @param uid 用户ID。表示该ID的用户的网络质量,如果为0,表示本地用户的网络质量
* @param txQuality 该用户的上行网络质量
* @param rxQuality 该用户的下行网络质量
* @param stat 通话相关的统计信息
*/
- (void)onNetworkStats:(NSUInteger)uid txQuality:(QttQualityType)txQuality rxQuality:(QttQualityType)rxQuality stat:(QttRtcStat*)stat;

/**
* 语音路由变更
* @param route 路由类型,见QttAudioRouteType:0,扬声器;2,有线耳机;3,蓝牙设备
*/
- (void)onAudioRouteChanged:(int)route;

/**
* 声音文件播放状态发生改变
* @param state 播放状态,见QttSoundPlayerStateType
*/
- (void)onSoundStateChanged:(int)state;

/**
* 音效文件播放完毕
* @param effectId 音效Id
*/
- (void)onEffectFinished:(int)effectId;

/**
* 远端用户开/关视频模块回调。
* 该回调是由远端用户调用 enableVideo 或 disableVideo 方法开启或关闭视频模块触发的。
* @param uid 用户 ID,提示是哪个用户的视频流
* @param enabled
true:该用户已启用视频功能。
false:该用户已关闭视频功能。
*/
- (void)onUserEnableVideo:(uint32_t)uid enabled:(bool) enabled;

/**
* 远端用户开/关本地视频采集回调。
* 该回调是由远端用户调用enableLocalVideo方法开启或关闭视频采集触发的。
* @param uid 用户ID,提示是哪个用户的视频流
* @param enabled
true:该用户已启用本地视频功能。启用后,其他用户可以接收到该用户的视频流
false:该用户已关闭视频功能。关闭后,该用户仍然可以接收其他用户的视频流,但其他用户接收不到该用户的视频流
*/
- (void)onUserEnableLocalVideo:(uint32_t)uid enabled:(bool) enabled;

/**
* 远端用户取消或恢复发布视频流回调。
* 当远端用户调用muteLocalVideoStream取消或恢复发布视频流时,SDK会触发该回调向本地用户报告远端用户的发流状况。
* @param uid 远端用户UID。
* @param muted 远端用户是否取消发布视频流:
true:取消发布视频流。
false:发布视频流。
*/
- (void)onUserMuteVideo:(uint32_t)uid muted:(bool) muted;
@end

示例代码

@interface QttChannelEngineDelegateImpl : NSObject<QttChannelEngineDelegate>
- (void)onJoinSuccess:(NSString*)channelName uid:(NSUInteger)uid role:(QttChannelRole)role muted:(bool)muted;
- (void)onReJoinSuccess:(NSString*)channelName uid:(NSUInteger)uid role:(QttChannelRole)role muted:(bool)muted;
- (void)onOtherJoin:(NSUInteger)uid role:(QttChannelRole)role muted:(bool)muted;
- (void)onJoinFail:(int)code message:(NSString*)message;
- (void)onConnectionBreak;
- (void)onConnectionLost;
- (void)onWarning:(int)warn message:(NSString*)message;
- (void)onError:(int)err message:(NSString*)message;
- (void)onLeave;
- (void)onOtherLeave:(NSUInteger)uid role:(QttChannelRole)role;
- (void)onTalking:(NSArray<QttVolumeInfo*> *_Nonnull)volumeInfos userNum:(NSInteger)userNum;
- (void)onMuteStatusChanged:(NSUInteger)uid muted:(bool) muted;
- (void)onRoleStatusChanged:(NSUInteger)uid role:(QttChannelRole)role;
- (void)onNetworkStats:(NSUInteger)uid txQuality:(QttQualityType)txQuality rxQuality:(QttQualityType)rxQuality stat:(QttRtcStat*)stat;
- (void)onAudioRouteChanged:(int)route;
- (void)onSoundStateChanged:(int)state;
- (void)onEffectFinished:(int)effectId;
- (void)onUserEnableVideo:(uint32_t)uid enabled:(bool) enabled;
- (void)onUserEnableLocalVideo:(uint32_t)uid enabled:(bool) enabled;
- (void)onUserMuteVideo:(uint32_t)uid muted:(bool) muted;
@end

@implementation QttChannelEngineDelegateImpl
- (void)onJoinSuccess:(NSString*)channelName uid:(NSUInteger)uid role:(QttChannelRole)role muted:(bool)muted {
//自己加入成功,实现加入频道成功的逻辑
}
- (void)onReJoinSuccess:(NSString*)channelName uid:(NSUInteger)uid role:(QttChannelRole)role muted:(bool)muted {
//自己重新加入频道成功,实现重新加入频道成功的逻辑
}
- (void)onOtherJoin:(NSUInteger)uid role:(QttChannelRole)role muted:(bool)muted {
//其他用户加入,实现别人进入频道的逻辑
}
- (void)onJoinFail:(int)code message:(NSString*)message {
//自己加入失败,实现加入频道失败的逻辑
}
- (void)onConnectionBreak {
//实现网络打断的逻辑
}
- (void)onConnectionLost {
//实现网络失去连接的逻辑
}
- (void)onWarning:(int)warn message:(NSString*)message {
//实现处理警告信息的逻辑
}
- (void)onError:(int)err message:(NSString*)message {
//实现处理错误信息的逻辑
}
- (void)onLeave {
//实现退出频道的逻辑
}
- (void)onOtherLeave:(NSUInteger)uid role:(QttChannelRole)role {
//其他用户离开,实现别人离开频道的逻辑
}
- (void)onTalking:(NSArray<QttVolumeInfo*> *_Nonnull)volumeInfos userNum:(NSInteger)userNum {
//实现用户音量提示的逻辑
}
- (void)onMuteStatusChanged:(NSUInteger)uid muted:(bool) muted {
//用户mute状态,实现静音状态改变的逻辑
}
- (void)onRoleStatusChanged:(NSUInteger)uid role:(QttChannelRole)role {
//用户角色状态,实现角色状态改变的逻辑
}
- (void)onNetworkStats:(NSUInteger)uid txQuality:(QttQualityType)txQuality rxQuality:(QttQualityType)rxQuality stat:(QttRtcStat*)stat {
//实现通话网络统计逻辑
}
- (void)onAudioRouteChanged:(int)route {
//实现语音路由变更逻辑
}
- (void)onSoundStateChanged:(int)state {
//实现声音文件播放状态发生改变的逻辑
}
- (void)onEffectFinished:(int)effectId {
//实现音效文件播放完毕的逻辑
}
- (void)onUserEnableVideo:(uint32_t)uid enabled:(bool) enabled
{
//远端用户开/关视频模块回调
}
- (void)onUserEnableLocalVideo:(uint32_t)uid enabled:(bool) enabled
{
//远端用户取消或恢复发布视频流回调
}
- (void)onUserMuteVideo:(uint32_t)uid muted:(bool) muted
{
//远端用户取消或恢复发布视频流回调
}
@end

id<QttChannelEngineDelegate> delegate = [[QttChannelEngineDelegateImpl alloc] init];
QttChannelEngine* engine = [QttChannelEngine GetEngineInstance:@"your AppKey" delegate:delegate];
野狗新手?
立即注册,为你提供安全可靠的实时通信云服务。
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题