MeetingKit 是一个进程内只存在一个实例的单例对象,只承载账号级与设备级能力:登录、即时通讯、本地采集与预览、音频路由、屏幕采集进程侧接入,以及会议的查询与预约。
会中的一切操作与事件都属于房间维度,通过 createRoomWithDelegate: 创建 MeetingKitRoom 实例进行。同一账号可以同时创建并加入多个房间,各房间的媒体与业务状态相互独立。
核心基础接口
sharedInstance()
+ (MeetingKit *)sharedInstance
创建 MeetingKit 实例(单例模式)。
version()
- (NSString *)version
获取 MeetingKit 版本号。
addDelegate:()
- (void)addDelegate:(id <MeetingKitDelegate>)delegate
设置全局事件回调
您可以通过 MeetingKitDelegate 获得音频路由变更与应用性能两类全局事件通知。房间内的事件请实现 MeetingKitRoomDelegate 并在创建房间时传入。
createRoomWithDelegate:()
- (nullable MeetingKitRoom *)createRoomWithDelegate:(nullable id<MeetingKitRoomDelegate>)delegate
创建独立会议房间实例
每次调用都会返回一个新的 MeetingKitRoom 实例,实例之间互不影响。需要同时加入多个房间时,多次调用并分别持有各自的实例即可。
调用房间的 exitRoom: 后该实例即失效,需要重新创建。
getRooms()
- (NSArray<MeetingKitRoom *> *)getRooms
获取当前已经加入的会议房间列表
已创建但尚未入会、或者已经退出的实例不会出现在结果中。
loginWithToken:appGroup:onSuccess:onFailed:()
- (void)loginWithToken:(NSString *)token appGroup:(NSString *)appGroup onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
登录接口,您需要先初始化用户信息后才能进入房间,并进行一系列的操作。
该接口默认启用全进程本地日志采集。
loginWithToken:appGroup:logConfig:onSuccess:onFailed:()
- (void)loginWithToken:(NSString *)token appGroup:(NSString *)appGroup logConfig:(SEALogConfig *)logConfig onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
使用自定义日志配置登录。您需要先初始化用户信息后才能进入房间,并进行一系列的操作。
logout()
- (void)logout
退出登录接口,会离开并销毁全部房间实例、销毁资源,业务层无需逐个调用房间实例的 exitRoom:。
即时通讯接口
enableImWithDelegate:onSuccess:onFailed:()
- (void)enableImWithDelegate:(nullable id<MeetingKitIMDelegate>)delegate onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
启用即时通讯
调用该接口开启 SDK 即时通讯服务,开发者可以利用该服务实现,如会前呼叫、通知等业务功能。
disableIm()
- (void)disableIm
停用即时通讯
当您不再需要即时通讯服务时,可通过该接口进行停用。
会议操作接口
getMeetingList:onFailed:()
- (void)getMeetingList:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
获取会议列表
getMoreMeetingList:onFailed:()
- (void)getMoreMeetingList:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
获取更多会议列表(翻页操作)
getHistoryMeetingList:onFailed:()
- (void)getHistoryMeetingList:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
获取历史会议列表
getMoreHistoryMeetingList:onFailed:()
- (void)getMoreHistoryMeetingList:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
获取更多历史会议列表(翻页操作)
getMeetingDetailsWithMeetingId:onSuccess:onFailed:()
- (void)getMeetingDetailsWithMeetingId:(NSString *)meetingId onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
获取会议详情
getMeetingDetailsWithRoomNo:onSuccess:onFailed:()
- (void)getMeetingDetailsWithRoomNo:(NSString *)roomNo onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
获取会议详情
getParticipantListsWithMeetingId:onSuccess:onFailed:()
- (void)getParticipantListsWithMeetingId:(NSString *)meetingId onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
获取参会人员列表
getMoreParticipantListsWithMeetingId:onSuccess:onFailed:()
- (void)getMoreParticipantListsWithMeetingId:(NSString *)meetingId onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
获取更多参会人员列表(翻页操作)
requestCancelMeetingWithMeetingId:onSuccess:onFailed:()
- (void)requestCancelMeetingWithMeetingId:(NSString *)meetingId onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
请求取消会议
createRoom:onSuccess:onFailed:()
- (void)createRoom:(SEAMeetingParam *)params onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
创建房间
updateRoom:onSuccess:onFailed:()
- (void)updateRoom:(SEAMeetingParam *)params onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
修改房间数据
用户操作接口
getAgentList:keyword:onSuccess:onFailed:()
- (void)getAgentList:(NSArray <NSNumber *> *)typesList keyword:(nullable NSString *)keyword onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
获取设备列表
getMoreAgentList:keyword:onSuccess:onFailed:()
- (void)getMoreAgentList:(NSArray <NSNumber *> *)typesList keyword:(nullable NSString *)keyword onSuccess:(nullable SEASuccessBlock)onSuccess onFailed:(nullable SEAFailedBlock)onFailed
获取更多设备列表(翻页操作)
本地采集相关接口
updateLocalView:()
- (void)updateLocalView:(VIEW_CLASS *)view
更新本地摄像头的预览画面
switchCamera()
- (void)switchCamera
切换摄像头前后置
setLocalPreviewMirror:()
- (void)setLocalPreviewMirror:(BOOL)mirror
设置前置摄像头本地预览镜像偏好
仅作用于本地预览画面,不影响推流数据。前置摄像头按 mirror 取值设置镜像,后置摄像头始终不镜像;切换摄像头后 SDK 会自动应用对应策略。
currentCameraDirection()
- (SEACameraDirection)currentCameraDirection
获取当前摄像头方向
调用该接口,SDK 会返回当前采集使用的摄像头方向,参考 SEACameraDirection。
音频路由相关接口
switchAudioRoute:()
- (void)switchAudioRoute:(SEAAudioRoute)route
切换音频路由
该接口用于请求切换内置音频播放设备,如扬声器、听筒。存在蓝牙或有线耳机时,外设选择由 iOS 决定。最终实际路由以 currentAudioRoute 和 MeetingKitDelegate 中的 onAudioRouteChange:previousRoute:() 回调为准。
currentAudioRoute()
- (SEAAudioRoute)currentAudioRoute
获取系统当前实际音频路由
调用该接口,SDK 会返回系统当前实际使用的音频路由,如扬声器、听筒、蓝牙或有线耳机。参考 SEAAudioRoute。
headphoneDeviceAvailable()
- (BOOL)headphoneDeviceAvailable
是否存在有线耳机设备
调用该接口,SDK 会通过该接口返回是否存在有线耳机设备。
bluetoothDeviceAvailable()
- (BOOL)bluetoothDeviceAvailable
是否存在蓝牙耳机设备
调用该接口,SDK 会通过该接口返回是否存在蓝牙耳机设备。
虚拟背景接口
虚拟背景作用于进程内唯一的共享摄像头采集链路,属设备级能力,设置会同时作用于全部房间。会中切换摄像头、断线重连后 SDK 会自动把当前配置重新应用,调用方不必自己补。用法详见 虚拟背景。installVirtualBackground:()
- (SEAError)installVirtualBackground:(nullable NSString *)modelPath
装载虚拟背景组件
建议在进入房间、打开摄像头之前调用;装载后需要再调 enabledVirtualBackground:() 才会生效。
uninstallVirtualBackground()
- (void)uninstallVirtualBackground
卸载虚拟背景组件
释放推理会话与相关缓冲。
enabledVirtualBackground:()
- (SEAError)enabledVirtualBackground:(BOOL)enabled
虚拟背景功能开关
装载后默认不开启,需要显式打开。关闭后是零开销直通,不再跑推理。组件未装载时调用返回 SEAErrorConflict。
setVirtualBackgroundBlur:()
- (void)setVirtualBackgroundBlur:(NSInteger)level
设置背景虚化
与 setVirtualBackgroundImage:() 互斥,后调用的生效。
setVirtualBackgroundImage:()
- (void)setVirtualBackgroundImage:(nullable UIImage *)image
设置背景替换
与 setVirtualBackgroundBlur:() 互斥,后调用的生效。
setVirtualBackgroundInferenceInterval:()
- (void)setVirtualBackgroundInferenceInterval:(NSInteger)interval
设置分割推理间隔
给调用方按机型下发的性能档,不建议暴露给终端用户。
setVirtualBackgroundMaskSync:()
- (void)setVirtualBackgroundMaskSync:(BOOL)enabled
设置蒙版对齐
消除挥手时的错位拖影,代价是画面更新率降到蒙版率。interval 为 1 时开与不开没有任何区别,它只在调大推理间隔后才起作用。
isVirtualBackgroundEnabled()
- (BOOL)isVirtualBackgroundEnabled
获取虚拟背景开启状态
屏幕共享接口
broadcastStartedWithAppGroup:delegate:()
- (void)broadcastStartedWithAppGroup:(NSString *)appGroup delegate:(id<MeetingKitScreenDelegate>)delegate
扩展程序开启屏幕录制方法,并绑定委托代理
此方法在扩展程序SampleHandler中使用。
关闭屏幕采集后,SDK 会通过 MeetingKitRoomDelegate 中的 meetingRoom:onScreenRecordStatus:() 回调通知您当前设备采集状态。此时,需要根据回调状态选择调用 请求开启共享 还是 关闭共享。
sendSampleBuffer:withType:()
- (void)sendSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType
扩展程序发送屏幕采集帧数据
此方法在扩展程序SampleHandler中使用