全部产品
云市场
云游戏

iOS UISDK集成手册

更新时间:2020-04-15 09:53:56

1 概述

云视频会议 AliMeetingUISDK 提供了一套用于加入视频会议的接口集合,开发者可以通过调用 AliMeetingUISDK(以下简称 SDK),可以在自己的 iOS 软件中快速集成阿里音视频会议。

2 SDK 文件结构

首先下载 AliMeetingUISDK.framework + AliMeetingSDK.framework 到本地,sdk+Demo下载地址:

SDK:SDKFramework.zip

其中:

  • AliMeetingUISDK.framework

    云视频会议UISDK核心库文件

  • AliMeetingSDK.framework

    云视频会议MeetingSDK核心库文件

Demo Code:

AliMeetingUISDKSample-OC.zip

AliMeetingUISDKSample-Swift.zip

3 快速入门教程

3.1 描述

本文面向有一定的 cocoa 以及 Objective-C 或者 Swift 基础的开发者,旨在引导读者快速接入 SDK。

3.2 依赖及环境配置

AliMeetingUISDK需要Xcode10.0及以上版本

AliMeetingUISDK支持iOS9.0及以上版本

AliMeetingUISDK支持使用 Objective-C、Swift 语言接入,支持 armv7 & arm64

限制:armv7 及 iPhone 6 以下设备只支持音频会议,不支持视频会议

3.3 工程创建

1. 添加AliMeetingUISDK.framework

创建工程先把下载好的AliMeetingUISDK.framework和AliMeetingSDK.framework文件加入工程目录中

添加路径为 Xcode - General - Frameworks, Libraries, and Embedded Content

添加framework

添加路径为 Xcode - Build Phases - Copy Files,同时将Destination选项改为Frameworks

复制文件

2. 开启 VOIP 模式

需要打开 Background Modes 开关,并勾选“Voice over IP”选项以允许应用在后台时能够正常通话

VOIP

3. 在 info.plist 添加照相机和麦克风权限和网络权限

infoplist

4. 修改Enable Bitcode为NO

修改路径为 Xcode - Build Setting 搜索Enable Bitcode

bitcode

3.4 业务代码集成

3.4.1 swift 版本

1. 构建入会信息,添加各项入会参数

  1. let meetingConfig: [String: Any] = [
  2. AliMeetingConfigKey.meetingCode: meetingCode,
  3. AliMeetingConfigKey.meetingToken: meetingToken,
  4. AliMeetingConfigKey.meetingUUID: meetingUUID,
  5. AliMeetingConfigKey.memberUUID: memberUUID,
  6. AliMeetingConfigKey.meetingDomain: meetingDomain,
  7. AliMeetingConfigKey.clientAppID: clientAppID,
  8. AliMeetingConfigKey.userID: userID
  9. ]

注:meetingConfig以下参数需要从ISV 服务端获取:

(关于云视频会议的开发流程请参考文档:https://help.aliyun.com/document_detail/145896.html

AliMeetingConfigKey.meetingCode /// 会议码,必填项

AliMeetingConfigKey.meetingToken /// 会议 token,必填项

AliMeetingConfigKey.meetingUUID /// 会议唯一标识,必填项

AliMeetingConfigKey.memberUUID /// 入会企业成员 ID(企业内唯一标识),必填项

AliMeetingConfigKey.meetingDomain /// 会议链接使用的 domain,必填项

AliMeetingConfigKey.clientAppID /// 入会客户端 ID,必填项

AliMeetingConfigKey.userID /// 入会用户 ID (用户唯一标识),必填项

2. 自定义分享操作

  1. ///自定义分享操作
  2. AliMeetingUISDKManager.shared.copyAction = {
  3. print("copy share")
  4. }
  5. AliMeetingUISDKManager.shared.dingTalkShareAction = {
  6. print("ding talk share")
  7. }
  8. AliMeetingUISDKManager.shared.wechatShareAction = {
  9. print("wechat share")
  10. }

3. 自定义会后评价

  1. // 自定义会后评价默认不展示,配置后展示)
  2. AliMeetingUISDKManager.shared.feedbackURL = URL(feedbackURL)
  3. AliMeetingUISDKManager.shared.feedbackCustomCookie = "version=ga"

4. 邀请入会

  1. ///邀请入会(不实现就不展示邀请入口)
  2. AliMeetingUISDKManager.shared.sendAnInvitation = {
  3. print("邀请入会")
  4. }

5. 用户入会/离开回调

  1. ///用户入会/离开回调
  2. AliMeetingUISDKManager.shared.onMeetingUserStatusChange = {
  3. (clicent, event) in
  4. print(clicent.name)
  5. print(event)
  6. }

注:用户状态改变类型

  1. ///Meeting User状态事件
  2. @objc public enum AliMeetingSDKUserStatusEvent : Int {
  3. ///成员上线
  4. case Online
  5. ///成员离线
  6. case Offline
  7. ///静音
  8. case AudioMute
  9. ///取消静音
  10. case AudioUnMute
  11. ///禁视频
  12. case VideoMute
  13. ///打开视频
  14. case VideoUnMute
  15. ///说话中
  16. case StartTalking
  17. ///结束说话
  18. case StopTalking
  19. ///主讲人切换
  20. case MainSpeaker
  21. ///网络变化
  22. case NerworkChange
  23. }

6. 只有发起人才可以静音他人设置

  1. /// 只有发起人才可以静音他人(默认false)
  2. AliMeetingUISDKManager.shared.onlyMasterCanMuteAudio = true

7. 只有发起人才可以静音他人设置

  1. /// 只有发起人才可以挂断他人(默认false)
  2. AliMeetingUISDKManager.shared.onlyMasterCanHangUp = true

8. 入会成功回调

  1. ///入会成功回调
  2. AliMeetingUISDKManager.shared.onMeetingJoinedSuccess = {
  3. print("入会成功")
  4. }

9. 退会成功回调

  1. ///退会成功回调
  2. AliMeetingUISDKManager.shared.onMeetingEnding = {
  3. (code,reason) in
  4. print(code.rawValue)
  5. print(reason)
  6. }

注:会议结束原因枚举

  1. ///会议结束原因枚举
  2. @objc public enum ALiMeetingSDKFinishCode : Int {
  3. ///用户主动退会
  4. case NORMAL_QUIT
  5. ///信令错误
  6. case SIGNALING_ERROR
  7. ///会议已取消
  8. case MEETING_CANCELLED
  9. ///用户被移除会议
  10. case REMOVED_FROM_MEETING
  11. ///用户通过其它端入会,当前端被强制退会
  12. case HANGUP_BY_SELF
  13. ///用户被其他人挂断
  14. case HANGUP_BY_SERVER
  15. ///信令连接失败
  16. case SIGNALING_CONNECT_FAILED
  17. ///ICE连接失败
  18. case ICE_CONNECT_FAILED
  19. }

10. 设置日志等级

  1. ///设置日志等级
  2. AliMeetingUISDKManager.shared.logLevel = .All

注:日志等级

  1. /// 日志级别
  2. @objc public enum LoggingLevel : Int {
  3. /// 关闭
  4. case Off
  5. /// 输出Error日志
  6. case Error
  7. /// 输出Error、Warning日志
  8. case Warning
  9. /// 输出Error、Warning、Info日志
  10. case Info
  11. /// 输出Error、Warning、Info、Debug日志
  12. case Debug
  13. /// 输出Error、Warning、Info、Debug、Verbose日志
  14. case Verbose
  15. /// 输出所有日志
  16. case All
  17. }

11. 加入会议

  1. AliMeetingUISDKManager.shared.joinMeeting(withConfig: meetingConfig)

3.4.2 OC 版本

1. 构建入会信息,添加各项入会参数

  1. NSDictionary *meetingConfig = @{AliMeetingConfigKey.meetingCode: meetingCode,
  2. AliMeetingConfigKey.meetingToken: meetingToken,
  3. AliMeetingConfigKey.meetingUUID: meetingUUID,
  4. AliMeetingConfigKey.memberUUID: memberUUID,
  5. AliMeetingConfigKey.meetingDomain:meetingDomain,
  6. AliMeetingConfigKey.clientAppID: clientAppID,
  7. AliMeetingConfigKey.userID: userID};

注:meetingConfig以下参数需要从ISV 服务端获取:

(关于云视频会议的开发流程请参考文档:https://help.aliyun.com/document_detail/145896.html

AliMeetingConfigKey.meetingCode /// 会议码,必填项

AliMeetingConfigKey.meetingToken /// 会议 token,必填项

AliMeetingConfigKey.meetingUUID /// 会议唯一标识,必填项

AliMeetingConfigKey.memberUUID /// 入会企业成员 ID(企业内唯一标识),必填项

AliMeetingConfigKey.meetingDomain /// 会议链接使用的 domain,必填项

AliMeetingConfigKey.clientAppID /// 入会客户端 ID,必填项

AliMeetingConfigKey.userID /// 入会用户 ID (用户唯一标识),必填项

2. 自定义分享操作

  1. ///自定义分享操作
  2. AliMeetingUISDKManager.shared.copyAction = ^{
  3. NSLog(@"copy share");
  4. };
  5. AliMeetingUISDKManager.shared.dingTalkShareAction = ^{
  6. NSLog(@"ding talk share");
  7. };
  8. AliMeetingUISDKManager.shared.wechatShareAction = ^{
  9. NSLog(@"wechat share");
  10. };

3. 自定义会后评价

  1. // 自定义会后评价(默认不展示,配置后展示)
  2. NSString *urlStr = [NSString stringWithFormat:urlStr];
  3. AliMeetingUISDKManager.shared.feedbackURL = [NSURL URLWithString:urlStr];
  4. AliMeetingUISDKManager.shared.feedbackCustomCookie = @"version=ga";

4. 邀请入会

  1. ///邀请入会(不实现就不展示邀请入口)
  2. AliMeetingUISDKManager.shared.sendAnInvitation = ^{
  3. NSLog(@"邀请入会");
  4. };

5. 用户入会/离开回调

  1. ///用户入会/离开回调
  2. AliMeetingUISDKManager.shared.onMeetingUserStatusChange = ^(ALiMeetingSDKMeetingClient * _Nonnull client, enum AliMeetingSDKUserStatusEvent event) {
  3. NSLog(@"%@",client.name);
  4. NSLog(@"%ld",event);
  5. };

注:用户状态改变类型

  1. /// Meeting User状态事件
  2. typedef SWIFT_ENUM(NSInteger, AliMeetingSDKUserStatusEvent, closed) {
  3. ///成员上线
  4. AliMeetingSDKUserStatusEventOnline = 0,
  5. ///成员离线
  6. AliMeetingSDKUserStatusEventOffline = 1,
  7. ///静音
  8. AliMeetingSDKUserStatusEventAudioMute = 2,
  9. ///取消静音
  10. AliMeetingSDKUserStatusEventAudioUnMute = 3,
  11. ///禁视频
  12. AliMeetingSDKUserStatusEventVideoMute = 4,
  13. ///打开视频
  14. AliMeetingSDKUserStatusEventVideoUnMute = 5,
  15. ///说话中
  16. AliMeetingSDKUserStatusEventStartTalking = 6,
  17. ///结束说话
  18. AliMeetingSDKUserStatusEventStopTalking = 7,
  19. ///主讲人切换
  20. AliMeetingSDKUserStatusEventMainSpeaker = 8,
  21. /// 网络变化
  22. AliMeetingSDKUserStatusEventNerworkChange = 9,
  23. };

6. 只有发起人才可以静音他人设置

  1. /// 只有发起人才可以静音他人(默认false)
  2. AliMeetingUISDKManager.shared.onlyMasterCanMuteAudio = YES;

7. 只有发起人才可以静音他人设置

  1. /// 只有发起人才可以挂断他人(默认false)
  2. AliMeetingUISDKManager.shared.onlyMasterCanHangUp = YES;

8. 入会成功回调

  1. ///入会成功回调
  2. AliMeetingUISDKManager.shared.onMeetingJoinedSuccess = ^{
  3. NSLog(@"加入会议成功");
  4. };

9. 退会成功回调

  1. ///退会成功回调
  2. AliMeetingUISDKManager.shared.onMeetingEnding = ^(enum ALiMeetingSDKFinishCode code, NSString * _Nonnull reson) {
  3. NSLog(@"%ld",code);
  4. NSLog(@"%@",reson);
  5. };

注:会议结束原因枚举

  1. /// 会议结束原因枚举
  2. typedef SWIFT_ENUM(NSInteger, ALiMeetingSDKFinishCode, closed) {
  3. /// 用户主动退会
  4. ALiMeetingSDKFinishCodeNORMAL_QUIT = 0,
  5. /// 信令错误
  6. ALiMeetingSDKFinishCodeSIGNALING_ERROR = 1,
  7. /// 会议已取消
  8. ALiMeetingSDKFinishCodeMEETING_CANCELLED = 2,
  9. /// 用户被移除会议
  10. ALiMeetingSDKFinishCodeREMOVED_FROM_MEETING = 3,
  11. /// 用户通过其它端入会,当前端被强制退会
  12. ALiMeetingSDKFinishCodeHANGUP_BY_SELF = 4,
  13. /// 用户被其他人挂断
  14. ALiMeetingSDKFinishCodeHANGUP_BY_SERVER = 5,
  15. /// 信令连接失败
  16. ALiMeetingSDKFinishCodeSIGNALING_CONNECT_FAILED = 6,
  17. /// ICE连接失败
  18. ALiMeetingSDKFinishCodeICE_CONNECT_FAILED = 7,
  19. };

10. 设置日志等级

  1. ///设置log等级
  2. AliMeetingUISDKManager.shared.logLevel = LoggingLevelAll;

注:log等级

  1. /// 日志级别
  2. typedef SWIFT_ENUM(NSInteger, LoggingLevel, closed) {
  3. /// 关闭
  4. LoggingLevelOff = 0,
  5. /// 输出Error日志
  6. LoggingLevelError = 1,
  7. /// 输出Error、Warning日志
  8. LoggingLevelWarning = 2,
  9. /// 输出Error、Warning、Info日志
  10. LoggingLevelInfo = 3,
  11. /// 输出Error、Warning、Info、Debug日志
  12. LoggingLevelDebug = 4,
  13. /// 输出Error、Warning、Info、Debug、Verbose日志
  14. LoggingLevelVerbose = 5,
  15. /// 输出所有日志
  16. LoggingLevelAll = 6,
  17. };

11. 加入会议

  1. [AliMeetingSDKManager.shared joinMeetingWithConfig:meetingConfig];

3.5 编译、运行

运行截图

疑难解答

  • swfitCore库无法找到问题

    如果运行出现以下错误:

    1. dyld: Library not loaded: @rpath/libswiftCore.dylib

    请进行以下操作:

    • 在工程设置Build Settings中进行以下设置:swift
    • 按command + shift + k清理工程文件,重新编译运行

SDK ReleaseNote

1.0.0.1 (2020-01-17)

sdk 初始化版本

1.0.0.2 (2020-03-04)

添加疑难解答

1.0.0.3 (2020-03-19)

添加入会成员会中状态回调

将会议评价设置为可选回调

增加加人UI入口(可开放给ISV自定义窗口邀请)

1.0.0.4 (2020-04-10)

添加只有发起人才可以静音他人设置

添加只有发起人才可以静音他人设置

添加入会成功回调

添加退会成功回调

1.0.0.5 (2020-04-14)

修复上传App Store报错ERROR ITMS-90034

修复昵称过长覆盖麦克风图标

修复用户未设置头像时头像展示错误