云会议SDK提供了一套用于加入视频会议的接口集合,开发者通过调用这些接口,可以在自己应用中快速集成云会议功能。通过阅读本文,您可以了解到云会议SDK的集成方法。

环境要求

类别 说明
系统版本 支持iOS 9.0及以上版本。
CPU架构 支持的ARM架构:armv7和arm64。
说明 armv7及iPhone 6以下设备只支持音频会议,不支持视频会议。
语言 支持Objective-C或Swift语言。
Xcode版本 支持Xcode 10.0及以上版本。

操作步骤

  1. 下载并解压UI SDK。下载地址请参见SDK下载
  2. 添加UI SDK。
    1. 将解压好的AliMeetingUISDK.framework文件夹复制到工程目录中。
      001
    2. 单击General页签,在Frameworks, Libraries, and Embedded Content区域单击+添加AliMeetingUISDK.framework。
      002
    3. 单击Build Phases页签,在Copy Files区域,选择DestinationFrameworks
      003
  3. 添加Meeting SDK,即AliMeetingSDK.framework。具体操作,请参见步骤 2
  4. 开启VoIP模式。

    单击Signing & Capabilities页签,在Background Modes区域选中Voice over IP

    004
  5. 在info.plist中添加摄像头、麦克风权限以及网络权限。
    005
  6. 单击Build Settings页签,在Build Options区域,设置Enable BitcodeNo
    006
  7. 集成业务代码。
    1. 构建入会信息,添加各项入会参数。
      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 // 会议详情
              };
    2. 自定义邀请操作(根据实际情况选择实现)。
      /// 会中单击会议标题,显示会议信息,返回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;
      }
    3. 会议回调(根据实际情况选择实现)。
      #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 {
      }
    4. 最小化悬浮窗(根据实际情况选择实现)。

      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;
    5. 设置日志等级。
       ///设置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
      };
    6. 支持横竖屏旋转。
      1. 在info.plist选中支持的方向。007
      2. 在AppDelegate中实现以下回调。
        - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
            if (AliMeetingUISDKManager.shared.isInMeeting &&
                !AliMeetingUISDKManager.shared.isInFloating) {
                return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape);
            }
            
            return UIInterfaceOrientationMaskPortrait;
        }
    7. 加入会议。
       AliMeetingUISDKManager.shared.callback = meetingCallback; // 接收会议回调
       AliMeetingUISDKManager.shared.UIController = uiController; // 定制部分UI事件
       [AliMeetingSDKManager.shared joinMeetingWithConfig:meetingConfig sourceVC:sourceVC];
  8. 编译运行。
    008