互联网多人语音

1、语音会议             

语音会议是多人参加的基于互联网、或者基于电话或者网络和电话混合的会议。Sdk最多支持32方语音会议。                
1.1、接口逻辑               
接口调用是采取“请求回调”和“通知回调”的方式和服务端交互。在对应的sdk的方法参数中有“请求回调”方法,请求的结果直接在参数的回调方法中处理。会议中的成员收到服务端发送过来的消息通过“通知回调”方法-(void)onReceiveMultiVoiceMeetingMsg:(ECMultiVoiceMeetingMsg  *)msg来接收并进行处理。                
1.2、业务流程                
  • 用户A创建语音会议或者电话会议
  • 会议创建成功之后,邀请其他成员加入会议
  • 其他成员收到邀请,同意或拒绝加入会议
                    

2、语音会议操作代码示例                               

创建音频会议或电话会议

我们假设Tony要创建音频会议,其示例代码如下:                                       
  • 功能:创建语音、视频会议。
  • 参数:params 创建语音、视频会议的参数对象 参考ECCreateMeetingParams对象
  •       ecMultMeetingType 创建会议的类型,语音、视频会议二种 
  • 返回值:无

  • ECCreateMeetingParams *params =[[ECCreateMeetingParams alloc]init];
  •             params.meetingType = ECMeetingType_MultiVoice;
  •             params.meetingName = @"会议名称";
  •             params.meetingPwd = @"会议密码";
  •             params.square=@"创建几路视频";
  •             params.autoClose=@"创建者退出后会议是否解散";
  •             params.autoJoin= @"创建后,创建者是否自动加入会议";
  •             params.autoDelete= @"是否为永久会议";
  •             params.voiceMod= @"背景音乐";
  •             params.keywords=@"业务属性";
  • [[ECDevice sharedInstance].meetingManager createMultMeetingByType:params andType:More_Voice completion:^(NSUInteger error,NSString *meetingNo ){
  •                 //meetingNo 创建会议回调的会议号
  •        if (error.errorCode == ECErrorType_NoError)
  •        { 
  •            NSLog(@"会议创建成功,请讲话"); 
  •        }
  •        else
  •        {
  •            NSLog(@"会议创建失败,稍后重试"); 
  •        } 
  • }];                                        

邀请成员加入会议

我们假设Tony创建音频会议成功之后,邀请John和Smith加入音频会议,其代码如下:                                       
  • 功能:邀请用户加入语音会议
  • 参数: meetingNumber 会议号
  •       isLoadingCall用户登录的是电话号或者通讯号码 
  •       members被邀请加入语音会议的成员号
  • 返回值:无
  •       
  • NSString* meetingNumber=@”会议号”;
  •  
  • NSMutableArray *selectArray = [[NSMutableArray alloc] initWithObjects:@" John的电话号",@" Smith的电话号", nil];
  • [[ECDevice sharedInstance].meetingManager   inviteMembersJoinToVoiceMeeting: meetingNumber andIsLoandingCall:(alertView.tag==ChatRoomVIEW_addmember) andMembers: selectArray completion:^(ECError *error, NSString *meetingNumber) {        
  •        if (error.errorCode == ECErrorType_NoError)
  •        { 
  •           NSLog(@"邀请成员成功"); 
  •        }
  •        else
  •        {
  •           NSLog(@"邀请成员失败"); 
  •        } 
  • }];                 

主动加入会议

我们假设Eric要主动加入会议,其示例代码如下:                                 
  • 功能:通过会议类型加入会议。
  • 参数:meetingNumber 会议号
  •       meetingType 会议的类型
  •       meetingPwd 会议的密码
  • 返回值:无
  •       
  • NSString* roomNo =@”会议号”;
  • NSString* pwd =@”会议密码”;
  • [[ECDevice sharedInstance].meetingManager joinMeeting:roomNo ByMeetingType:ECMeetingType_MultiVoice andMeetingPwd:pwd completion:^(ECError *error, NSString *meetingNumber) { //meetingNo加入会议回调的会议号
  •         if (error.errorCode == ECErrorType_NoError)
  •         { 
  •             NSLog(@"加入会议成功"); 
  •         }
  •         else
  •         {
  •             NSLog(@"加入会议失败"); 
  •         } 
  • }];                        

通过会议类型解散语音

我们假设Tony要解散自己创建的一个语音会议,其示例代码如下:                                      
  • 功能:通过会议类型加入会议。
  • 参数:meetingNumber 会议号
  •       multMeetingType 会议的类型
  • 返回值:无

  • NSString* meetingNo =@”要解散的会议id”;
  • [[ECDevice sharedInstance].meetingManager deleteMultMeetingByMeetingType:ECMeetingType_MultiVoice andMeetingNumber: meetingNo completion:^(ECError *error, NSString *meetingNumber) {          
  •         if (error.errorCode == ECErrorType_NoError)
  •         { 
  •             NSLog(@"解散会议成功"); 
  •         }
  •         else
  •         {
  •             NSLog(@"解散会议失败"); 
  •         }
  • }];                          

退出会议

有人退出会议,其示例代码如下:                                        
  • 功能:退出会议 参数:无
  • [[ECDevice sharedInstance].meetingManager exitMeeting];                                

从语音会议踢出会议成员

只有会议创建者才能踢出成员,我们假设Tony要踢出John,其示例代码如下:                                       
  • 功能:从语音、视频会议移除成员 
  • 参数:meetingNumber 会议号
  •      multMeetingType 会议的类型; 会议的类型 、语音或者视频
  •      membervVoip 被移除成员的账号
  • 返回值:无

  • NSString* curRoomNo =@”当前的会议id”;
  • NSString* meetingnumber =@”要踢出的成员”;
  • [[ECDevice sharedInstance].meetingManager removeMemberFromMultMeetingByMeetingType:ECMeetingType_MultiVoice andMeetingNumber: curRoomNo andMember: meetingnumber completion:^(ECError *error, ECVoIPAccount *membervVoip) { //member被移除会议成员的号码
  •         if (error.errorCode == ECErrorType_NoError)
  •            { 
  •                NSLog(@"踢出会议成员"); 
  •            }
  •         else
  •           {
  •                NSLog(@"踢出会议成员失败"); 
  •           }
  • }];                               

音频会议通知消息

当对音频会议进行操作(如邀请,主动加入、退出、解散、踢出成员)时,会议室中的相关成员通过音频会议的“通知回调”接口 onReceiveMultiVoiceMeetingMsg接收相关信息,并进行处理,其代码示例如下:                                       
  • - (void)onReceiveMultiVoiceMeetingMsg:(ECMultiVoiceMeetingMsg *)msg{
  •      ECMultiVoiceMeetingMsgType *msgType= msg.type;
  •     if(msgType== MultiVoice_JOIN)
  •     {
  •         NSLog(@"有人加入");
  •     }
  •     else if(msgType== MultiVoice_EXIT)
  •     {
  •         NSLog(@"有人退出"); 
  •     }
  •     else if(msgType== MultiVoice_DELETE)
  •     {
  •         NSLog(@"房间被删除退出");
  •     }
  •     else if(msgType== MultiVoice_REMOVEMEMBER){
  •         NSLog(@"有人被移除");
  •     } else if(msgType== MultiVoice_REFUSE)
  •     { 
  •         NSLog(@"会议释放掉");
  •     }
  • }                            

获取语音会议列表

通过“获取音频会议列表”接口,可以获得应用下的所有音频会议列表,其示例代码如下:                
                        
  • 功能:获取应用下面的语音或视频会议列表。
  • 参数: keywords 业务属性
  •       multMeetingType 会议类型
  • 返回值:无

  • NSString *NSString = @”业务属性”;
  • [[ECDevice sharedInstance].meetingManager listAllMultMeetingsByMeetingType:(ECMeetingType)multMeetingType andKeywords:(NSString *)keywords completion:(void(^)(ECError *error, NSArray * meetingList))completion  {   
  •        if (error.errorCode == ECErrorType_NoError)
  •        { 
  •            NSLog(@"获取列表成功"); 
  •        }
  •        else
  •        {
  •            NSLog(@"获取列表失败"); 
  •        }
  • }];                                                                    

查询当前音频会议成员

用户加入会议后,需要获取当前音频会议中的所有成员,接口和获取视频会议成员的接口一致,只是传入的会议类型参数不同,其示例代码如下:                
                       
  • 功能:根据会议类型查询当前会议的成员 
  • 参数:meetingNumber 会议号
  •       meetingtype 会议类型
  • 返回值:无

  • NSString *meetingNumber =@”当前的会议id”;
  • [[ECDevice sharedInstance].meetingManager queryMeetingMembersByMeetingType:(ECMeetingType)meetingtype andMeetingNumber:(NSString *)meetingNumber completion:(void(^)(ECError *error, NSArray* members))completion {//members参与会议的成员数组
  •         if (error.errorCode == ECErrorType_NoError)
  •            { 
  •                NSLog(@"查询会议成员成功"); 
  •            }
  •         else
  •           {
  •                NSLog(@"查询失败"); 
  •           }
  • }];                             
                                

禁言禁听功能

管理员有权限决定会议成员是否可听可讲,当不需要某一成员说话或者可听时,此接口可以帮助用户实现。              
                        
  • /**
  •  @brief 设置会议某成员是否可听可讲
  •  @param memberVoip    成员通讯账号
  •  @param speakListen   是否可听可讲 1、禁言 2、可讲 3、禁听 4、可听
  •  @param meetingType   会议房间的类型
  •  @param meetingNumber 房间号
  •  @param completion    执行结果回调block
  •  */
  • ECVoIPAccount *account = “是否是通讯账号”;
  • NSInteger speakListen = “是否可听可讲”;//1、禁言 2、可讲 3、禁听 4、可听
  • ECMeetingType meetingType = “会议的类型”;
  • NSString *meetingNumber = “会议号”;
  • [[ECDevice sharedInstance].meetingManager setMember:account 
  • speakListen: speakListen ofMeetingType: meetingType andMeetingNumber: meetingNumber 
  • completion:^(ECError *error, NSString *meetingNumber) {
  • }];        
                                
禁言禁听设置后,服务器会下发一条通知消息,通知所有人,谁被禁言禁听了。通知消息体增加属性speakListen,语音群聊的通知是-(void)onReceiveMultiVoiceMeetingMsg:(ECMultiVoiceMeetingMsg  *)msg