云会议SDK提供了一套用于加入视频会议的接口集合,开发者通过调用这些接口,可以在自己应用中快速集成云会议功能。通过阅读本文,您可以了解到云会议SDK的集成方法。
环境要求
类别 |
说明 |
系统版本 |
支持iOS 9.0及以上版本。 |
CPU架构 |
支持的ARM架构:armv7和arm64。
说明 armv7及iPhone 6以下设备只支持音频会议,不支持视频会议。
|
语言 |
支持Objective-C或Swift语言。 |
Xcode版本 |
支持Xcode 10.0及以上版本。 |
操作步骤
- 下载并解压UI SDK。下载地址请参见SDK下载。
- 添加UI SDK。
- 将解压好的AliMeetingUISDK.framework文件夹复制到工程目录中。
- 单击General页签,在Frameworks, Libraries, and Embedded Content区域单击+添加AliMeetingUISDK.framework。
- 单击Build Phases页签,在Copy Files区域,选择Destination为Frameworks。
- 添加Meeting SDK,即AliMeetingSDK.framework。具体操作,请参见步骤 2。
- 开启VoIP模式。
单击Signing & Capabilities页签,在Background Modes区域选中Voice over IP。
- 在info.plist中添加摄像头、麦克风权限以及网络权限。
- 单击Build Settings页签,在Build Options区域,设置Enable Bitcode为No。
- 集成业务代码。
- 构建入会信息,添加各项入会参数。
AliMeetingDetail *detail = AliMeetingDetail.new;
detail.subject = @"Test"; // 会议主题
detail.shareLink = @""; // 分享链接
detail.shareMessage = @""; // 分享信息
detail.beginDate = NSDate.date.timeIntervalSince1970 * 1000; // 开始时间
detail.endDate = NSDate.date.timeIntervalSince1970 * 1000; // 结束时间
NSDictionary *meetingConfig = @{
AliMeetingConfigKey.meetingCode: meetingCode, //会议码,必填,从ISV服务端获取
AliMeetingConfigKey.meetingToken: meetingToken, //会议token,必填,从ISV服务端获取
AliMeetingConfigKey.meetingUUID: meetingUUID, //会议唯一标识,必填,从ISV服务端获取
AliMeetingConfigKey.memberUUID: memberUUID, //入会企业成员 ID(企业内唯一标识),必填,从ISV服务端获取
AliMeetingConfigKey.meetingDomain:meetingDomain, //会议链接使用的domain,必填,从ISV服务端获取
AliMeetingConfigKey.clientAppID: clientAppID, //入会客户端ID,必填,从ISV服务端获取
AliMeetingConfigKey.userID: userID, //入会用户ID(用户唯一标识),必填,从ISV服务端获取
AliMeetingConfigKey.meetingPassword:password, //会议密码
AliMeetingConfigKey.openBeautifier:@(openBeautifer), //美颜
AliMeetingConfigKey.meetingDetail: detail // 会议详情
};
- 自定义邀请操作(根据实际情况选择实现)。
/// 会中单击会议标题,显示会议信息,返回YES表示跳转接入方页面
- (BOOL)showMeetingDetail:(UIViewController *)sourceVC {
return NO;
}
/// 聊天页面回调,granted 表示当前会议是否有聊天权限,返回YES表示跳转接入方页面
- (BOOL)showMeetingChat:(UIViewController *)sourceVC granted:(BOOL)chatPermissionGranted {
return NO;
}
/// 会中点击邀请人操作,接入方在外部自己处理邀请逻辑,返回YES表示跳转接入方页面
- (BOOL)onInviteAction:(UIViewController *)sourceVC {
return NO;
}
/// 加载人员头像,返回YES表示接入方处理图像加载逻辑
- (BOOL)loadAvatar:(AMSDKMeetingClient *)client imageView:(UIImageView *)imageView {
[imageView sd_setImageWithURL:[NSURL URLWithString:@"https://gss0.baidu.com/7Po3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/267f9e2f07082838685c484ab999a9014c08f11f.jpg"] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
}];
return YES;
}
- 会议回调(根据实际情况选择实现)。
#pragma mark - AliMeetingCallback
/// 加入会议成功
- (void)onMeetingJoined {
}
/// 加入会议成功之后,用户状态变化
- (void)onClientStatusChanged:(AMSDKMeetingClient *)client event:(AliMeetingClientStatusEvent)event {
}
/// 加入会议成功之后,会议中断
- (void)onMeetingFinished:(AMSDKFinishCode)code msg:(NSString *)msg {
}
/// 加入会议未成功之前,加入异常
- (void)onMeetingError:(AMSDKErrorCode)code msg:(NSString *)msg {
}
/// 用户主动离开会议
- (void)onUserLeaveMeeting {
}
/// 用户主动结束会议
- (void)onUserFinishMeeting {
}
- 最小化悬浮窗(根据实际情况选择实现)。
UI SDK支持最小化浮窗展示,可以通过实现回调来改动浮窗大小及位置。
/// 返回浮窗的父视图,如果返回nil,UISDK会将floatingView添加到当前的window上
- (UIView *)parentViewOfFloatingView;
/// 浮窗的在父视图中的边距
- (UIEdgeInsets)edgeInsetsOfFloatingView;
/// 浮窗的初始frame,默认[(screenWidth - 90, screenHeight - 160), (90,160)]
- (CGRect)frameOfFloatingView;
/// 当开启浮窗显示时用于模态显示MeetingVC的ViewController对象,如果返回nil,UISDK会使用rootViewController来模态显示 MeetingVC
- (UIViewController *)viewControllerToPresentMeetingVC;
- 设置日志等级。
///设置log等级
AliMeetingUISDKManager.shared.logLevel = AMSDKLoggingLevelError;
日志级别如下所示:
typedef NS_ENUM(NSUInteger, AMSDKLoggingLevel){
//! 关闭
AMSDKLoggingLevelOff = 0,
//! 输出Error日志
AMSDKLoggingLevelError = (AMSDKLoggingFlagError),
//! 输出Error、Warning日志
AMSDKLoggingLevelWarning = (AMSDKLoggingLevelError | AMSDKLoggingFlagWarning),
//! 输出Error、Warning、Info日志
AMSDKLoggingLevelInfo = (AMSDKLoggingLevelWarning | AMSDKLoggingFlagInfo),
//! 输出Error、Warning、Info、Debug日志
AMSDKLoggingLevelDebug = (AMSDKLoggingLevelInfo | AMSDKLoggingFlagDebug),
//! 输出Error、Warning、Info、Debug、Verbose日志
AMSDKLoggingLevelVerbose = (AMSDKLoggingLevelDebug | AMSDKLoggingFlagVerbose),
//! 输出所有日志
AMSDKLoggingLevelAll = NSUIntegerMax
};
- 支持横竖屏旋转。
- 在info.plist选中支持的方向。
- 在AppDelegate中实现以下回调。
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if (AliMeetingUISDKManager.shared.isInMeeting &&
!AliMeetingUISDKManager.shared.isInFloating) {
return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape);
}
return UIInterfaceOrientationMaskPortrait;
}
- 加入会议。
AliMeetingUISDKManager.shared.callback = meetingCallback; // 接收会议回调
AliMeetingUISDKManager.shared.UIController = uiController; // 定制部分UI事件
[AliMeetingSDKManager.shared joinMeetingWithConfig:meetingConfig sourceVC:sourceVC];
- 编译运行。