HyphenateSDK  3.6.1
构造函数 | 所有成员列表
<IEMConferenceManager>协议 参考

#import <IEMConferenceManager.h>

类 <IEMConferenceManager> 继承关系图:

构造函数

(void) - addDelegate:delegateQueue:
 
(void) - removeDelegate:
 
(void) - setAppkey:username:token:
 
(NSString *) - getMemberNameWithAppkey:username:
 
(void) - getConference:password:completion:
 
(void) - createAndJoinConferenceWithType:password:completion:
 
(void) - createAndJoinConferenceWithType:password:record:mergeStream:completion:
 
(void) - joinConferenceWithConfId:password:completion:
 
(void) - joinConferenceWithTicket:completion:
 
(void) - publishConference:streamParam:completion:
 
(void) - unpublishConference:streamId:completion:
 
(void) - subscribeConference:streamId:remoteVideoView:completion:
 
(void) - unsubscribeConference:streamId:completion:
 
(void) - changeMemberRoleWithConfId:member:role:completion:
 
(void) - kickMemberWithConfId:memberNames:completion:
 
(void) - destroyConferenceWithId:completion:
 
(void) - leaveConference:completion:
 
(void) - startMonitorSpeaker:timeInterval:completion:
 
(void) - stopMonitorSpeaker:
 
(void) - updateConferenceWithSwitchCamera:
 
(void) - updateConference:isMute:
 
(void) - updateConference:enableVideo:
 
(void) - updateConference:streamId:remoteVideoView:completion:
 
(void) - updateConference:maxVideoKbps:
 
(void) - inputVideoSampleBuffer:rotation:conference:publishedStreamId:completion:
 
(void) - inputVideoPixelBuffer:sampleBufferTime:rotation:conference:publishedStreamId:completion:
 
(void) - setConferenceAttribute:value:completion:
 
(void) - deleteAttributeWithKey:completion:
 
(EMError *) - startAudioMixing:loop:sendMix:
 
(EMError *) - stopAudioMixing
 
(EMError *) - adjustAudioMixingVolume:
 
(void) - muteRemoteAudio:mute:
 
(void) - muteRemoteVideo:mute:
 
(void) - enableStatistics:
 
(void) - inputVideoSampleBuffer:conference:publishedStreamId:format:rotation:completion:
 
(void) - inputVideoPixelBuffer:conference:publishedStreamId:format:rotation:completion:
 
(void) - inputVideoData:conference:publishedStreamId:widthInPixels:heightInPixels:format:rotation:completion:
 
(EMConferenceMode mode) - EM_DEPRECATED_IOS
 
(void) - createAndJoinConferenceWithPassword:completion:
 
(void) - inviteUserToJoinConference:userName:password:ext:error:
 
(void) - changeMemberRoleWithConfId:memberNames:role:completion:
 

详细描述

多人实时音频/视频通话相关操作

函数文档

- (void) addDelegate: (id< EMConferenceManagerDelegate >)  aDelegate
delegateQueue: (dispatch_queue_t)  aQueue 
optional

添加回调代理

参数
aDelegate要添加的代理
aQueue执行代理方法的队列
- (EMError *) adjustAudioMixingVolume: (int)  aVolume
optional

设置伴奏音量,请在加入会议成功后调用

参数
volume伴奏音量范围为 0~100。默认 100 为原始文件音量
返回
EMError#EM_NO_ERROR - 成功 EMError#CALL_CONFERENCE_NO_EXIST - 未加入会议
- (void) changeMemberRoleWithConfId: (NSString *)  aConfId
member: (EMCallMember *)  aMember
role: (EMConferenceRole)  toRole
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

改变成员角色,需要管理员权限 用户角色: Admin > Talker > Audience 当角色升级时,用户需要给管理员发送申请,管理通过该接口改变用户接口. 当角色降级时,用户直接调用该接口即可. 注意: 暂时不支持Admin降级自己

参数
aConfId会议ID(EMCallConference.confId)
aMember成员
aRole成员角色
aCompletionBlock完成的回调
- (void) changeMemberRoleWithConfId: (NSString *)  aConfId
memberNames: (NSArray< NSString * > *)  aMemberNameList
role: (EMConferenceRole)  aRole
completion: (3_5_0) 
(3_6_0) 
("Use -")  EM_DEPRECATED_IOS[changeMemberRoleWithConfId:memberName:role:completion] 
optional

改变成员角色,需要管理员权限

参数
aConfId会议ID(EMCallConference.confId)
aMemberNameList成员名列表
aRole成员角色
aCompletionBlock完成的回调
- (void) createAndJoinConferenceWithPassword: (NSString *)  aPassword
completion: (3_1_0) 
(3_4_3) 
("Use -")  EM_DEPRECATED_IOS[EMConferenceManagerDelegate createAndJoinConferenceWithType:password:completion:] 
optional

创建并加入会议

参数
aPassword会议密码
aCompletionBlock完成的回调
- (void) createAndJoinConferenceWithType: (EMConferenceType)  aType
password: (NSString *)  aPassword
completion: (void(^)(EMCallConference *aCall, NSString *aPassword, EMError *aError))  aCompletionBlock 
optional

创建并加入会议

参数
aType会议类型
aPassword会议密码
aCompletionBlock完成的回调
- (void) createAndJoinConferenceWithType: (EMConferenceType)  aType
password: (NSString *)  aPassword
record: (BOOL)  isRecord
mergeStream: (BOOL)  isMerge
completion: (void(^)(EMCallConference *aCall, NSString *aPassword, EMError *aError))  aCompletionBlock 
optional

创建并加入会议

参数
aType会议类型
aPassword会议密码
isRecord是否开启服务端录制
isMerge录制时是否合并数据流
aCompletionBlock完成的回调
- (void) deleteAttributeWithKey: (NSString *)  aKey
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

删除频道属性,该会议中的所有人(包括自己)都会收到 EMConferenceManagerDelegate#conferenceAttributeUpdated:attributeAction:attributeKey:回调. 该方法需要在加入会议后调用.

参数
aKey
aCompletionBlock
- (void) destroyConferenceWithId: (NSString *)  aConfId
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

销毁会议,需要管理员权限

参数
aConfId会议ID(EMCallConference.confId)
aCompletionBlock完成的回调
- (EMConferenceMode mode) EM_DEPRECATED_IOS (3_1_0) 
(3_4_3) 
("Use -DELETE")   
readwriteoptionalnonatomicassign

多人会议场景

- (void) enableStatistics: (BOOL)  isEnable
optional

启用统计

参数
enable是否启用统计
- (void) getConference: (NSString *)  aConfId
password: (NSString *)  aPassword
completion: (void(^)(EMCallConference *aCall, EMError *aError))  aCompletionBlock 
optional

判断会议是否存在

参数
aConfId会议ID(EMCallConference.confId)
aPassword会议密码
aCompletionBlock完成的回调
- (NSString *) getMemberNameWithAppkey: (NSString *)  aAppkey
username: (NSString *)  aUserName 
optional

构建MemberName

参数
aAppkey应用在环信注册的Appkey
aUserName环信ID
返回
MemberName
- (void) inputVideoData: (NSData *)  aData
conference: (EMCallConference *)  aCall
publishedStreamId: (NSString *)  aPubStreamId
widthInPixels: (size_t)  aWidth
heightInPixels: (size_t)  aHeight
format: (EMCallVideoFormat)  aFormat
rotation: (int)  aRotation
completion: (3_2_2) 
(3_5_2) 
("Delete")  EM_DEPRECATED_IOS 
optional

自定义本地视频数据

参数
aData视频数据
aCall会议实例
aPubStreamId调用接口[EMConferenceManager publishConference:streamParam:completion],如果成功则会在回调中返回该值
aWidth宽度
aHeight高度
aFormat视频格式
aRotation旋转角度0~360,默认0
aCompletionBlock完成后的回调
- (void) inputVideoPixelBuffer: (CVPixelBufferRef)  aPixelBuffer
conference: (EMCallConference *)  aCall
publishedStreamId: (NSString *)  aPubStreamId
format: (EMCallVideoFormat)  aFormat
rotation: (int)  aRotation
completion: (3_2_2) 
(3_5_2) 
(")  Delete
(Use-inputVideoPixelBuffer:sampleBufferTime:rotation:conference:publishedStreamId:completion:")  EM_DEPRECATED_IOS 
optional

自定义本地视频数据

参数
aPixelBuffer视频像素缓冲区
aCall会议实例
aPubStreamId调用接口[EMConferenceManager publishConference:streamParam:completion],如果成功则会在回调中返回该值
aFormat视频格式
aRotation旋转角度0~360,默认0
aCompletionBlock完成后的回调
- (void) inputVideoPixelBuffer: (CVPixelBufferRef)  aPixelBuffer
sampleBufferTime: (CMTime)  aTime
rotation: (UIDeviceOrientation)  aRotation
conference: (EMCallConference *)  aCall
publishedStreamId: (NSString *)  aPubStreamId
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

自定义本地视频数据

参数
aPixelBuffer视频像素缓冲区
aTime视频原始数据时间戳,CMTime time = CMSampleBufferGetPresentationTimeStamp((CMSampleBufferRef)sampleBuffer);
aRotation旋转方向
aCall会议实例
aPubStreamId调用接口[EMConferenceManager publishConference:streamParam:completion],如果成功则会在回调中返回该值
aCompletionBlock完成后的回调
- (void) inputVideoSampleBuffer: (CMSampleBufferRef)  aSampleBuffer
conference: (EMCallConference *)  aCall
publishedStreamId: (NSString *)  aPubStreamId
format: (EMCallVideoFormat)  aFormat
rotation: (int)  aRotation
completion: (3_2_2) 
(3_5_2) 
(")  Delete
(Use-inputVideoSampleBuffer:rotation:conference:publishedStreamId:completion:")  EM_DEPRECATED_IOS 
optional

自定义本地视频数据

参数
aSampleBuffer视频采样缓冲区
aCall会议实例
aPubStreamId调用接口[EMConferenceManager publishConference:streamParam:completion],如果成功则会在回调中返回该值
aFormat视频格式
aRotation旋转角度0~360,默认0
aCompletionBlock完成后的回调
- (void) inputVideoSampleBuffer: (CMSampleBufferRef)  aSampleBuffer
rotation: (UIDeviceOrientation)  aRotation
conference: (EMCallConference *)  aCall
publishedStreamId: (NSString *)  aPubStreamId
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

自定义本地视频数据

参数
aSampleBuffer视频采样缓冲区
aRotation旋转方向
aCall会议实例
aPubStreamId调用接口[EMConferenceManager publishConference:streamParam:completion],如果成功则会在回调中返回该值
aCompletionBlock完成后的回调
- (void) inviteUserToJoinConference: (EMCallConference *)  aCall
userName: (NSString *)  aUserName
password: (NSString *)  aPassword
ext: (NSString *)  aExt
error: (3_1_0) 
(3_4_3) 
("Use -)  DELETE
(在demo层自定义实现")  EM_DEPRECATED_IOS 
optional

邀请人加入会议

参数
aCall会议实例(自己创建的无效)
aUserName被邀请人的环信ID
aPassword会议密码
aExt扩展信息
aCompletionBlock完成的回调
- (void) joinConferenceWithConfId: (NSString *)  aConfId
password: (NSString *)  aPassword
completion: (void(^)(EMCallConference *aCall, EMError *aError))  aCompletionBlock 
optional

加入已有会议

参数
aConfId会议ID(EMCallConference.confId)
aPassword会议密码
aCompletionBlock完成的回调
- (void) joinConferenceWithTicket: (NSString *)  aTicket
completion: (void(^)(EMCallConference *aCall, EMError *aError))  aCompletionBlock 
optional

加入已有会议

参数
aTicket加入会议的凭证
aCompletionBlock完成的回调
- (void) kickMemberWithConfId: (NSString *)  aConfId
memberNames: (NSArray< NSString * > *)  aMemberNameList
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

踢人,需要管理员权限

参数
aConfId会议ID(EMCallConference.confId)
aMemberNameList成员名列表
aCompletionBlock完成的回调
- (void) leaveConference: (EMCallConference *)  aCall
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

离开会议(创建者可以离开,最后一个人离开,会议销毁)

参数
aCall会议实例(自己创建的无效)
aCompletionBlock完成的回调
- (void) muteRemoteAudio: (NSString *)  aStreamId
mute: (BOOL)  isMute 
optional

mute远端音频

参数
aStreamId要操作的Steam id
isMute是否静音
- (void) muteRemoteVideo: (NSString *)  aStreamId
mute: (BOOL)  isMute 
optional

mute远端视频

参数
aStreamId要操作的Steam id
isMute是否显示
- (void) publishConference: (EMCallConference *)  aCall
streamParam: (EMStreamParam *)  aStreamParam
completion: (void(^)(NSString *aPubStreamId, EMError *aError))  aCompletionBlock 
optional

上传本地摄像头的数据流

参数
aCall会议实例(自己创建的无效)
aStreamParam数据流的配置项
aCompletionBlock完成的回调
- (void) removeDelegate: (id< EMConferenceManagerDelegate >)  aDelegate
optional

移除回调代理

参数
aDelegate要移除的代理
- (void) setAppkey: (NSString *)  aAppkey
username: (NSString *)  aUsername
token: (NSString *)  aToken 
optional

设置应用Appkey, 环信ID, 环信ID对应的Token

参数
aAppkey应用在环信注册的Appkey
aUserName环信ID
aToken环信ID对应的Token
- (void) setConferenceAttribute: (NSString *)  attrKey
value: (NSString *)  attrValue
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

设置频道属性,该会议中的所有人(包括自己)都会收到 EMConferenceManagerDelegate#conferenceAttributeUpdated:attributeAction:attributeKey:回调. 该方法需要在加入会议后调用.

参数
attrKey
attrValue
aCompletionBlock
- (EMError *) startAudioMixing: (NSURL *)  aFileURL
loop: (int)  aLoop
sendMix: (BOOL)  isSendMix 
optional

开启本地伴音功能,请在加入会议成功后调用,该伴音配置只存在于该会议存在期间.

参数
filePath文件路径
loop指定音频文件循环播放的次数: 正整数:循环的次数 -1:无限循环
isSendMix是否启动远端伴音 启动后播放的音乐对方也可以听到
返回
EMError#EM_NO_ERROR - 成功 EMError#CALL_CONFERENCE_NO_EXIST - 未加入会议 EMError#CALL_INVALID_PARAMS - 路径参数下的音频文件不存在
- (void) startMonitorSpeaker: (EMCallConference *)  aCall
timeInterval: (long long)  aTimeMillisecond
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

开始监听说话者

参数
aCall会议实例(自己创建的无效)
aTimeMillisecond返回回调的间隔,单位毫秒,传0使用300毫秒[EMConferenceManagerDelegate conferenceTalkerDidChange:talkingStreamIds:]
aCompletionBlock完成的回调
- (EMError *) stopAudioMixing
optional

关闭本地混音功能,请在加入会议成功后调用

返回
EMError#EM_NO_ERROR - 成功 EMError#CALL_CONFERENCE_NO_EXIST - 未加入会议
- (void) stopMonitorSpeaker: (EMCallConference *)  aCall
optional

结束监听说话者

参数
aCall会议实例(自己创建的无效)
- (void) subscribeConference: (EMCallConference *)  aCall
streamId: (NSString *)  aStreamId
remoteVideoView: (EMCallRemoteVideoView *)  aRemoteView
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

订阅其他人的数据流

参数
aCall会议实例(自己创建的无效)
aStreamId数据流ID (在[EMConferenceManagerDelegate streamDidUpdate:addStream]中返回)
aRemoteView视频显示页面
aCompletionBlock完成的回调
- (void) unpublishConference: (EMCallConference *)  aCall
streamId: (NSString *)  aStreamId
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

取消上传本地摄像头的数据流

参数
aCall会议实例(自己创建的无效)
aStreamId数据流ID(在[IEMConferenceManager publishConference:pubConfig:completion:]返回)
aCompletionBlock完成的回调
- (void) unsubscribeConference: (EMCallConference *)  aCall
streamId: (NSString *)  aStreamId
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

取消订阅的数据流

参数
aCall会议实例(自己创建的无效)
aStreamId数据流ID
aCompletionBlock完成的回调
- (void) updateConference: (EMCallConference *)  aCall
enableVideo: (BOOL)  aEnableVideo 
optional

设置视频是否可用

参数
aCall会议实例(自己创建的无效)
aEnableVideo视频是否可用
- (void) updateConference: (EMCallConference *)  aCall
isMute: (BOOL)  aIsMute 
optional

设置是否静音

参数
aCall会议实例(自己创建的无效)
aIsMute是否静音
- (void) updateConference: (EMCallConference *)  aCall
maxVideoKbps: (int)  aMaxVideoKbps 
optional

更新视频最大码率

参数
aCall会议实例
aMaxVideoKbps最大码率
- (void) updateConference: (EMCallConference *)  aCall
streamId: (NSString *)  aStreamId
remoteVideoView: (EMCallRemoteVideoView *)  aRemoteView
completion: (void(^)(EMError *aError))  aCompletionBlock 
optional

更新视频显示页面

参数
aCall会议实例
aStreamId数据流ID
aRemoteView显示页面
aCompletionBlock完成的回调
- (void) updateConferenceWithSwitchCamera: (EMCallConference *)  aCall
optional

切换前后摄像头

参数
aCall会议实例(自己创建的无效)

该协议的文档由以下文件生成: