功能描述
通过频道事件回调可以监听和报告指定频道的事件和数据。
接口描述
@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; @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; @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 { //实现音效文件播放完毕的逻辑 } @end
id<QttChannelEngineDelegate> delegate = [[QttChannelEngineDelegateImpl alloc] init]; QttChannelEngine* engine = [QttChannelEngine GetEngineInstance:@"your AppKey" delegate:delegate];
|