|
|
|
# 云直播观看端SDK开发指南
|
|
|
|
|
|
# 1.概述
|
|
# 1.概述
|
|
|
|
|
|
## 1.1 阅读对象
|
|
## 1.1 阅读对象
|
... | @@ -35,7 +37,7 @@ |
... | @@ -35,7 +37,7 @@ |
|
## 2.1 开发环境
|
|
## 2.1 开发环境
|
|
|
|
|
|
- Xcode 10.0 或以上版本
|
|
- Xcode 10.0 或以上版本
|
|
- 支持 iOS 9.0 或以上版本的 iOS 设备
|
|
- 支持 iOS 10.0 或以上版本的 iOS 设备
|
|
- 有效的 获得场景视频 云直播账号
|
|
- 有效的 获得场景视频 云直播账号
|
|
|
|
|
|
## 2.2 SDK配置
|
|
## 2.2 SDK配置
|
... | @@ -254,9 +256,9 @@ Destination 选择 "Frameworks" -> |
... | @@ -254,9 +256,9 @@ Destination 选择 "Frameworks" -> |
|
```
|
|
```
|
|
ERROR_SERVICE_TYPE
|
|
ERROR_SERVICE_TYPE
|
|
|
|
|
|
ERROR_ROOM_STATE = 1001 直播间状态不可用,可能没有开始推流
|
|
ERROR_ROOM_STATE = 1001 直播间状态不可用,可能没有开始推流
|
|
ERROR_USELESS_INFO = 1002 没有获取到有用的视频信息
|
|
ERROR_USELESS_INFO = 1002 没有获取到有用的视频信息
|
|
ERROR_PASSWORD = 1003 密码错误
|
|
ERROR_PASSWORD = 1003 密码错误
|
|
```
|
|
```
|
|
|
|
|
|
系统错误类型
|
|
系统错误类型
|
... | @@ -264,23 +266,29 @@ Destination 选择 "Frameworks" -> |
... | @@ -264,23 +266,29 @@ Destination 选择 "Frameworks" -> |
|
```
|
|
```
|
|
ERROR_SYSTEM_TYPE
|
|
ERROR_SYSTEM_TYPE
|
|
|
|
|
|
ERROR_RETURNDATA = 1004 返回内容格式错误
|
|
ERROR_RETURNDATA = 1004 返回内容格式错误
|
|
ERROR_PARAMETER = 1005 直播间信息填写错误
|
|
ERROR_PARAMETER = 1005 直播间信息填写错误
|
|
ERROR_NETWORK = 1006 网络异常
|
|
ERROR_NETWORK = 1006 网络异常
|
|
ERROR_LOGINDATA = 1007 登录
|
|
ERROR_LOGINDATA = 1007 登录
|
|
ERROR_PLAYERURL = 1008 视频播放地址
|
|
ERROR_PLAYERURL = 1008 视频播放地址
|
|
ERROR_QUESTIONLIST = 1009 问卷列表
|
|
ERROR_QUESTIONLIST = 1009 问卷列表
|
|
ERROR_STATISTICAL = 1010 问卷统计
|
|
ERROR_STATISTICAL = 1010 问卷统计
|
|
ERROR_DOCLIST = 1011 文档列表
|
|
ERROR_DOCLIST = 1011 文档列表
|
|
ERROR_HISTORY = 1012 历史信息
|
|
ERROR_HISTORY = 1012 历史信息
|
|
PRACTICE_LIST = 1013 随堂测试
|
|
PRACTICE_LIST = 1013 随堂测试
|
|
PRACTICECOMMIT = 1014 提交随堂测试
|
|
PRACTICECOMMIT = 1014 提交随堂测试
|
|
PRACTICESTATIS = 1015 获取随堂测统计
|
|
PRACTICESTATIS = 1015 获取随堂测统计
|
|
PRACTICERANK = 1016 获取随堂测排名
|
|
PRACTICERANK = 1016 获取随堂测排名
|
|
ERROR_SOCKET = 1017 socket加载失败
|
|
ERROR_SOCKET = 1017 socket加载失败
|
|
ERROR_PUNCH = 1018 获取打卡信息失败
|
|
ERROR_PUNCH = 1018 获取打卡信息失败
|
|
ERROR_PUNCHCOMMIT = 1019 获取打卡提交结果失败
|
|
ERROR_PUNCHCOMMIT = 1019 获取打卡提交结果失败
|
|
ERROR_DRMURL = 1020 获取加密地址失败
|
|
ERROR_DRMURL = 1020 获取加密地址失败
|
|
|
|
ERROR_QUERYLOTTERY = 1021 抽奖2.0 查询抽奖信息失败
|
|
|
|
ERROR_QUERYPERSIONALLOTTERY = 1022 抽奖2.0 查询个人中奖失败"
|
|
|
|
ERROR_COMMITWINNERINFO = 1023 抽奖2.0 提交中奖信息"
|
|
|
|
ERROR_REQUESTMETADATA = 1024 获取元数据异常
|
|
|
|
ERROR_DOCINITERROR = 1025 文档初始化失败
|
|
|
|
ERROR_GETSUMMARYINFO = 1026 获取摘要接口失败
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
... | @@ -346,7 +354,7 @@ done |
... | @@ -346,7 +354,7 @@ done |
|
|
|
|
|
3.1.1 调用方法
|
|
3.1.1 调用方法
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 登录房间
|
|
* @brief 登录房间
|
|
* @param parameter 配置参数信息
|
|
* @param parameter 配置参数信息
|
... | @@ -354,39 +362,41 @@ done |
... | @@ -354,39 +362,41 @@ done |
|
* 必填参数 roomId; //房间ID
|
|
* 必填参数 roomId; //房间ID
|
|
* 必填参数 viewerName; //用户名
|
|
* 必填参数 viewerName; //用户名
|
|
* 必填参数 token; //房间密码
|
|
* 必填参数 token; //房间密码
|
|
* (已弃用!) security //是否使用https
|
|
|
|
* (选填参数) viewercustomua; //用户自定义参数,需和后台协商,没有定制传@""
|
|
* (选填参数) viewercustomua; //用户自定义参数,需和后台协商,没有定制传@""
|
|
*/
|
|
*/
|
|
- (id)initLoginWithParameter:(PlayParameter *)parameter;
|
|
- (id)initLoginWithParameter:(PlayParameter *)parameter;
|
|
/**
|
|
|
|
* @brief 进入房间,并请求画图聊天数据并播放视频(可以不登陆,直接从此接口进入直播间)
|
|
/// 初始化SDK 3.18.0 new
|
|
* @param parameter 配置参数信息
|
|
/// @param parameter 参数
|
|
* 必填参数 userId; //用户ID
|
|
/// 必填参数 userId; //用户ID
|
|
* 必填参数 roomId; //房间ID
|
|
/// 必填参数 roomId; //房间ID
|
|
* 必填参数 viewerName; //用户名称
|
|
/// 必填参数 viewerName; //用户名称
|
|
* 必填参数 token; //房间密码
|
|
/// 必填参数 token; //房间密码
|
|
* 必填参数 docParent; //文档父类窗口
|
|
/// 必填参数 docParent; //文档父类窗口
|
|
* 必填参数 docFrame; //文档区域
|
|
/// 必填参数 docFrame; //文档区域
|
|
* 必填参数 playerParent; //视频父类窗口
|
|
/// 必填参数 scalingMode; //屏幕适配方式
|
|
* 必填参数 playerFrame; //视频区域
|
|
/// 必填参数 defaultColor; //ppt默认底色,不写默认为白色(16进制颜色字符串)
|
|
* 必填参数 scalingMode; //屏幕适配方式
|
|
/// 必填参数 PPTScalingMode; //PPT适配方式
|
|
* (已弃用!) security //是否使用https
|
|
//PPT适配模式分为四种,
|
|
* 必填参数 defaultColor; //ppt默认底色,不写默认为白色
|
|
//1.拉伸填充,PPT内容全部展示在显示区域,会被拉伸或压缩,不会存在黑边
|
|
* 必填参数 PPTScalingMode; //PPT适配方式
|
|
//2.等比居中,PPT内容保持原始比例,适应窗口展示在显示区域,会存在黑边
|
|
PPT适配模式分为四种,
|
|
//3.等比填充,PPT内容保持原始比例,以横向或纵向适应显示区域,另一方向将会超出显示区域,超出部分会被裁减,不会存在黑边
|
|
1.拉伸填充,PPT内容全部展示在显示区域,会被拉伸或压缩,不会存在黑边
|
|
//4.根据直播间文档显示模式的返回值进行设置(推荐)
|
|
2.等比居中,PPT内容保持原始比例,适应窗口展示在显示区域,会存在黑边
|
|
/// 必填参数 pauseInBackGround; //后台是否继续播放,
|
|
3.等比填充,PPT内容保持原始比例,以横向或纵向适应显示区域,另一方向将会超出显示区域,超出部分会被裁减,不会存在黑边
|
|
/// 注意:如果开启后台播放需要打开 xcode->Capabilities->Background Modes->on->Audio,AirPlay,and Picture in Picture
|
|
4.根据直播间文档显示模式的返回值进行设置(推荐)
|
|
/// (选填参数)viewercustomua; //用户自定义参数,需和后台协商,没有定制传@""
|
|
* 必填参数 pauseInBackGround; //后台是否继续播放,注意:如果开启后台播放需要打开 xcode->Capabilities->Background Modes->on->Audio,AirPlay,and Picture in Picture
|
|
/// @param succed 初始化成功回调
|
|
* (选填参数)viewercustomua; //用户自定义参数,需和后台协商,没有定制传@""
|
|
/// @param player 播放视图回调 (流视图异步回调,存在回调多次;无延迟直播无需关注。)
|
|
*/
|
|
/// @param failed 初始化失败回调
|
|
- (id)initWithParameter:(PlayParameter *)parameter;
|
|
- (id)initSDKWithParameter:(PlayParameter *)parameter
|
|
|
|
succed:(initSuccedClosure)succed
|
|
|
|
player:(HDSPlayerViewClosure)player
|
|
|
|
failed:(initFailedClosure)failed;
|
|
```
|
|
```
|
|
|
|
|
|
代理方法
|
|
代理方法
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 登录成功
|
|
* @brief 登录成功
|
|
*/
|
|
*/
|
... | @@ -404,6 +414,10 @@ done |
... | @@ -404,6 +414,10 @@ done |
|
* @brief 登录请求失败
|
|
* @brief 登录请求失败
|
|
*/
|
|
*/
|
|
-(void)requestFailed:(NSError *)error reason:(NSString *)reason;
|
|
-(void)requestFailed:(NSError *)error reason:(NSString *)reason;
|
|
|
|
|
|
|
|
/// 3.18.0 new 错误回调
|
|
|
|
/// @param model 错误信息
|
|
|
|
- (void)onError:(HDSOnErrorModel *)model;
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
... | @@ -412,19 +426,19 @@ done |
... | @@ -412,19 +426,19 @@ done |
|
|
|
|
|
导入头文件
|
|
导入头文件
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
#import "CCSDK/RequestData.h"//SDK
|
|
#import "CCSDK/RequestData.h"//SDK
|
|
```
|
|
```
|
|
|
|
|
|
声明变量
|
|
声明变量
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
@property (nonatomic,strong)RequestData * requestData;//sdk
|
|
@property (nonatomic,strong)RequestData * requestData;//sdk
|
|
```
|
|
```
|
|
|
|
|
|
配置参数:PlayParameter的属性如下
|
|
配置参数:PlayParameter的属性如下
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 用户ID
|
|
* @brief 用户ID
|
|
*/
|
|
*/
|
... | @@ -471,18 +485,6 @@ done |
... | @@ -471,18 +485,6 @@ done |
|
* @brief 文档区域
|
|
* @brief 文档区域
|
|
*/
|
|
*/
|
|
@property(nonatomic,assign)CGRect docFrame;//文档区域
|
|
@property(nonatomic,assign)CGRect docFrame;//文档区域
|
|
/**
|
|
|
|
* @brief 视频父类窗口
|
|
|
|
*/
|
|
|
|
@property(nonatomic,strong)UIView *playerParent;//视频父类窗口
|
|
|
|
/**
|
|
|
|
* @brief 视频区域
|
|
|
|
*/
|
|
|
|
@property(nonatomic,assign)CGRect playerFrame;//视频区域
|
|
|
|
/**
|
|
|
|
* @brief 是否使用https
|
|
|
|
*/
|
|
|
|
@property(nonatomic,assign)BOOL security;//是否使用https(已弃用!)
|
|
|
|
/**
|
|
/**
|
|
* @brief 屏幕适配方式
|
|
* @brief 屏幕适配方式
|
|
* 0:IJKMPMovieScalingModeNone
|
|
* 0:IJKMPMovieScalingModeNone
|
... | @@ -492,9 +494,9 @@ done |
... | @@ -492,9 +494,9 @@ done |
|
*/
|
|
*/
|
|
@property(assign, nonatomic)NSInteger scalingMode;//屏幕适配方式,含义见上面
|
|
@property(assign, nonatomic)NSInteger scalingMode;//屏幕适配方式,含义见上面
|
|
/**
|
|
/**
|
|
* @brief ppt默认底色,不写默认为白色
|
|
* @brief ppt默认底色,不写默认为白色(@"#FFFFFF")
|
|
*/
|
|
*/
|
|
@property(nonatomic,strong)UIColor *defaultColor;//ppt默认底色,不写默认为白色
|
|
@property(nonatomic, copy) NSString *defaultColor;//ppt默认底色,不写默认为白色(@"#FFFFFF")
|
|
/**
|
|
/**
|
|
* @brief /后台是否继续播放,注意:如果开启后台播放需要打开 xcode->Capabilities->Background Modes->on->Audio,AirPlay,and Picture in Picture
|
|
* @brief /后台是否继续播放,注意:如果开启后台播放需要打开 xcode->Capabilities->Background Modes->on->Audio,AirPlay,and Picture in Picture
|
|
*/
|
|
*/
|
... | @@ -585,7 +587,7 @@ typedef NS_ENUM(NSUInteger, HDMovieFinishReason) { |
... | @@ -585,7 +587,7 @@ typedef NS_ENUM(NSUInteger, HDMovieFinishReason) { |
|
|
|
|
|
新增 RemindModel 类 (用户进出直播间代理模型类)
|
|
新增 RemindModel 类 (用户进出直播间代理模型类)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* 用户进出通知
|
|
* 用户进出通知
|
|
* HDUSER_IN_REMIND 进入直播间
|
|
* HDUSER_IN_REMIND 进入直播间
|
... | @@ -618,7 +620,7 @@ typedef NS_ENUM(NSUInteger, HDUSER_REMIND) { |
... | @@ -618,7 +620,7 @@ typedef NS_ENUM(NSUInteger, HDUSER_REMIND) { |
|
|
|
|
|
新增 BanChatModel 类(用户禁言群发消息通知模型类)
|
|
新增 BanChatModel 类(用户禁言群发消息通知模型类)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/** 用户id */
|
|
/** 用户id */
|
|
@property (nonatomic, copy) NSString *userId;
|
|
@property (nonatomic, copy) NSString *userId;
|
|
/** 昵称 */
|
|
/** 昵称 */
|
... | @@ -633,7 +635,7 @@ typedef NS_ENUM(NSUInteger, HDUSER_REMIND) { |
... | @@ -633,7 +635,7 @@ typedef NS_ENUM(NSUInteger, HDUSER_REMIND) { |
|
|
|
|
|
新增 NewLotteryMessageModel 类 (抽奖2.0 该功能需要单独开启)
|
|
新增 NewLotteryMessageModel 类 (抽奖2.0 该功能需要单独开启)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* 抽奖2.0 抽奖消息类别
|
|
* 抽奖2.0 抽奖消息类别
|
|
* NEW_LOTTERY_NULL 无抽奖
|
|
* NEW_LOTTERY_NULL 无抽奖
|
... | @@ -670,7 +672,7 @@ typedef NS_ENUM(NSUInteger, NEW_LOTTERY) { |
... | @@ -670,7 +672,7 @@ typedef NS_ENUM(NSUInteger, NEW_LOTTERY) { |
|
|
|
|
|
新增 LineModel 类 (切换线路清晰度类)(已废弃)
|
|
新增 LineModel 类 (切换线路清晰度类)(已废弃)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/** 清晰度 0-原画;200-流畅;300-标清; */
|
|
/** 清晰度 0-原画;200-流畅;300-标清; */
|
|
@property (nonatomic, copy) NSArray * _Nonnull quality;
|
|
@property (nonatomic, copy) NSArray * _Nonnull quality;
|
|
/** 视频线路数 */
|
|
/** 视频线路数 */
|
... | @@ -681,7 +683,7 @@ typedef NS_ENUM(NSUInteger, NEW_LOTTERY) { |
... | @@ -681,7 +683,7 @@ typedef NS_ENUM(NSUInteger, NEW_LOTTERY) { |
|
|
|
|
|
新增 **HDQualityModel** 类 (切换线路清晰度)
|
|
新增 **HDQualityModel** 类 (切换线路清晰度)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/** 清晰度 */
|
|
/** 清晰度 */
|
|
@property (nonatomic, copy) NSString * _Nonnull quality;
|
|
@property (nonatomic, copy) NSString * _Nonnull quality;
|
|
/** 描述 */
|
|
/** 描述 */
|
... | @@ -711,11 +713,131 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -711,11 +713,131 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
};
|
|
};
|
|
```
|
|
```
|
|
|
|
|
|
|
|
新增枚举类型
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/**
|
|
|
|
* 操作调用状态
|
|
|
|
* HDOperationCallStatusSuccess 操作成功
|
|
|
|
* HDOperationCallStatusFailedNotLogin 操作失败未登录
|
|
|
|
* HDOperationCallStatusFailedInLoading 操作失败加载中
|
|
|
|
* HDOperationCallStatusFailedAllReadyLoaded 操作失败已加载
|
|
|
|
*/
|
|
|
|
typedef NS_ENUM(NSInteger, HDOperationCallStatus) {
|
|
|
|
HDOperationCallStatusSuccess,//操作成功
|
|
|
|
HDOperationCallStatusFailedNotLogin,//操作失败未登录
|
|
|
|
HDOperationCallStatusFailedInLoading,//操作失败加载中
|
|
|
|
HDOperationCallStatusFailedAllReadyLoaded,//操作失败已加载
|
|
|
|
};
|
|
|
|
```
|
|
|
|
|
|
|
|
新增 HDReplayDotModel (回放打点)类
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/** 打点时间:单位:S */
|
|
|
|
@property (nonatomic, assign) NSInteger time;
|
|
|
|
/** 打点描述 */
|
|
|
|
@property (nonatomic, copy) NSString * _Nullable desc;
|
|
|
|
```
|
|
|
|
|
|
开始配置
|
|
新增枚举类型
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 申请连麦类型
|
|
|
|
typedef NS_ENUM(NSInteger, HDSMediaCallType) {
|
|
|
|
HDSMediaCallTypeAudio, /// 音频连麦
|
|
|
|
HDSMediaCallTypeAudioVideo, /// 视频连麦
|
|
|
|
};
|
|
|
|
|
|
|
|
/// 连麦错误类型
|
|
|
|
typedef NS_ENUM(NSInteger, HDSMediaCallError) {
|
|
|
|
HDSMediaCallErrorInCalling, /// 连麦失败
|
|
|
|
HDSMediaCallErrorConnectTimeOut, /// 连麦申请超时
|
|
|
|
HDSMediaCallErrorRoomTypeDidChange, /// 连麦房间类型改变(需要退出重进)
|
|
|
|
HDSMediaCallErroronMumberLimit, /// 连麦人数已达上限
|
|
|
|
HDSMediaCallErrorAbilityDown, /// 连麦功能不可用(需要退出重进)
|
|
|
|
HDSMediaCallErrorPullStreamFailed, /// 拉流失败
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef void(^initSuccedClosure)(BOOL succed); //初始化SDK成功回调
|
|
|
|
typedef void(^HDSPlayerViewClosure)(UIView * _Nonnull playerView); // 流视图回调
|
|
|
|
typedef void(^initFailedClosure)(NSError * _Nullable error, NSString * _Nonnull reason); //初始化SDK失败回调
|
|
|
|
typedef void(^hangupClosure)(BOOL succed); // 挂断回调
|
|
|
|
|
|
|
|
/// 连麦房间类型
|
|
|
|
typedef NS_ENUM(NSInteger, HDSRoomCallType) {
|
|
|
|
HDSRoomCallTypeAudio, /// 音频连麦房间 (多人连麦情况下只能申请音频连麦)
|
|
|
|
HDSRoomCallTypeAudioVideo, /// 视频连麦房间 (单人连麦可申请音频或视频连麦)
|
|
|
|
};
|
|
|
|
/// 连麦功能不可用原因
|
|
|
|
typedef NS_ENUM(NSUInteger, HDSMediaCallAbilityDisableReason) {
|
|
|
|
HDSMediaCallAbilityDisableReasonNone, /// 无
|
|
|
|
HDSMediaCallAbilityDisableReasonRoomNotOpen, /// 房间未开启
|
|
|
|
HDSMediaCallAbilityDisableReasonTeacherClose, /// 讲师关闭
|
|
|
|
HDSMediaCallAbilityDisableReasonLiveEnd, /// 直播结束
|
|
|
|
HDSMediaCallAbilityDisableReasonLiveBan, /// 直播封禁
|
|
|
|
HDSMediaCallAbilityDisableReasonNotNetwork, /// 无网络
|
|
|
|
};
|
|
|
|
```
|
|
|
|
|
|
|
|
新增 HDSRoomCallInfo (房间连麦信息)类
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 是否是多人连麦房间
|
|
|
|
@property (nonatomic, assign) BOOL isMultiMediaCallRoom;
|
|
|
|
/// 是否开启连麦功能
|
|
|
|
@property (nonatomic, assign) BOOL isMediaCallFuncEnable;
|
|
|
|
/// 房间连麦功能未开启原因
|
|
|
|
@property (nonatomic, assign) HDSMediaCallAbilityDisableReason disableReason;
|
|
|
|
/// 连麦类型
|
|
|
|
@property (nonatomic, assign) HDSRoomCallType roomCallType;
|
|
```
|
|
```
|
|
|
|
|
|
|
|
新增 HDSStreamUserInfoModel (流用户信息)类
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 用户ID
|
|
|
|
@property (nonatomic, copy) NSString * _Nullable userId;
|
|
|
|
/// 用户名
|
|
|
|
@property (nonatomic, copy) NSString * _Nonnull userName;
|
|
|
|
/// 用户角色
|
|
|
|
@property (nonatomic, assign) NSInteger userRole;
|
|
|
|
/// 声音是否可用
|
|
|
|
@property (nonatomic, assign) BOOL isAudioEnable;
|
|
|
|
/// 视频是否可用
|
|
|
|
@property (nonatomic, assign) BOOL isVideoEnable;
|
|
|
|
```
|
|
|
|
|
|
|
|
新增 HDSStreamModel (流信息)类
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 远端流视图
|
|
|
|
@property (nonatomic, strong) UIView * _Nonnull hds_remoteView;
|
|
|
|
/// 流用户信息
|
|
|
|
@property (nonatomic, strong) HDSStreamUserInfoModel * _Nonnull userInfo;
|
|
|
|
```
|
|
|
|
|
|
|
|
新增拉远端流回调
|
|
|
|
|
|
|
|
```objc
|
|
|
|
typedef void (^pullStreamSuccedClosure)(HDSStreamModel * _Nullable stModel); // 拉远端流成功回调
|
|
|
|
typedef void (^pullStreamFailedClosure)(HDSMediaCallError error); // 拉远端流失败回调
|
|
|
|
```
|
|
|
|
|
|
|
|
新增 HDSOnErrorModel (错误信息)类
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 错误类型
|
|
|
|
@property (nonatomic, assign) OnErrorType type;
|
|
|
|
/// 错误信息
|
|
|
|
@property (nonatomic, copy) NSString * _Nullable message;
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
开始配置
|
|
|
|
|
|
|
|
```objc
|
|
第一步:实例化参数类
|
|
第一步:实例化参数类
|
|
PlayParameter *parameter = [[PlayParameter alloc] init];
|
|
PlayParameter *parameter = [[PlayParameter alloc] init];
|
|
//配置PlayParameter里面的属性,如userId,roomId等!
|
|
//配置PlayParameter里面的属性,如userId,roomId等!
|
... | @@ -727,13 +849,13 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -727,13 +849,13 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
添加代理
|
|
添加代理
|
|
|
|
|
|
```
|
|
```objc
|
|
@interface 您的控制器 ()<RequestDataDelegate>
|
|
@interface 您的控制器 ()<RequestDataDelegate>
|
|
```
|
|
```
|
|
|
|
|
|
实现代理
|
|
实现代理
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 请求成功
|
|
* @brief 请求成功
|
|
*/
|
|
*/
|
... | @@ -746,6 +868,10 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -746,6 +868,10 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
-(void)requestFailed:(NSError *)error reason:(NSString *)reason {
|
|
-(void)requestFailed:(NSError *)error reason:(NSString *)reason {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// 3.18.0 new 错误回调
|
|
|
|
/// @param model 错误信息
|
|
|
|
- (void)onError:(HDSOnErrorModel *)model;
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
... | @@ -758,7 +884,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -758,7 +884,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
3.2.1 代理方法(可选)
|
|
3.2.1 代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 主讲开始推流
|
|
* @brief 主讲开始推流
|
|
*/
|
|
*/
|
... | @@ -850,7 +976,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -850,7 +976,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
3.2.2 主动方法(可选)
|
|
3.2.2 主动方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 改变播放器frame
|
|
* @brief 改变播放器frame
|
|
*/
|
|
*/
|
... | @@ -906,7 +1032,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -906,7 +1032,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
3.3.1 代理方法(可选)
|
|
3.3.1 代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 获取文档内白板或者文档本身的宽高,来进行屏幕适配用的
|
|
* @brief 获取文档内白板或者文档本身的宽高,来进行屏幕适配用的
|
|
*/
|
|
*/
|
... | @@ -964,22 +1090,12 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -964,22 +1090,12 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
3.3.2 主动方法(可选)
|
|
3.3.2 主动方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 获取文档区域内白板或者文档本身的宽高比,返回值即为宽高比,做屏幕适配用
|
|
* @brief 获取文档区域内白板或者文档本身的宽高比,返回值即为宽高比,做屏幕适配用
|
|
*/
|
|
*/
|
|
- (CGFloat)getDocAspectRatio;
|
|
- (CGFloat)getDocAspectRatio;
|
|
|
|
|
|
/**
|
|
|
|
* @brief 改变文档区域大小,主要用在文档生成后改变文档窗口的frame
|
|
|
|
*/
|
|
|
|
- (void)changeDocFrame:(CGRect) docFrame;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief 改变文档父窗口
|
|
|
|
*/
|
|
|
|
- (void)changeDocParent:(UIView *) docParent;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* @brief 切换当前的文档模式
|
|
* @brief 切换当前的文档模式
|
|
* 1.切换至跟随模式(默认值)值为0,
|
|
* 1.切换至跟随模式(默认值)值为0,
|
... | @@ -1007,17 +1123,6 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1007,17 +1123,6 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
* 获取ppt列表(只能在登陆成功后调用)
|
|
* 获取ppt列表(只能在登陆成功后调用)
|
|
*/
|
|
*/
|
|
- (void)getDocsList;
|
|
- (void)getDocsList;
|
|
/**
|
|
|
|
* @brief 主动调用方法 用于调整PPT缩放模式 (已废弃)
|
|
|
|
* @param docFrame 文档的frame
|
|
|
|
* @param PPTScalingMode PPT缩放模式
|
|
|
|
* 1 = 拉伸填充:PPT内容全部展示在显示区域,会被拉伸或压缩,不会存在黑边
|
|
|
|
* 2 = 等比居中:PPT内容保持原始比例,适应窗口展示在显示区域,会存在黑边
|
|
|
|
* 3 = 等比填充:PPT内容保持原始比例,以横向或纵向适应显示区域,另一方向将会超出显示区域,超出部分会被裁减,不会存在黑边
|
|
|
|
*
|
|
|
|
* 需要调整docFrame 请直接调用 - (void)changeDocFrame:(CGRect)docFrame;方法
|
|
|
|
*/
|
|
|
|
- (void)changeDocFrame:(CGRect)docFrame withPPTScalingMode:(NSInteger)PPTScalingMode;
|
|
|
|
/**
|
|
/**
|
|
* @brief 主动调用方法 用于调整PPT缩放模式
|
|
* @brief 主动调用方法 用于调整PPT缩放模式
|
|
* @param pptScalingMode PPT缩放模式
|
|
* @param pptScalingMode PPT缩放模式
|
... | @@ -1034,7 +1139,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1034,7 +1139,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 获取房间信息,主要是要获取直播间模版来类型,根据直播间模版类型来确定界面布局
|
|
* @brief 获取房间信息,主要是要获取直播间模版来类型,根据直播间模版类型来确定界面布局
|
|
* 房间简介:dic[@"desc"];
|
|
* 房间简介:dic[@"desc"];
|
... | @@ -1077,7 +1182,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1077,7 +1182,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 历史聊天数据 (会多次回调)
|
|
* @brief 历史聊天数据 (会多次回调)
|
|
* @param chatLogArr [{ chatId //聊天ID
|
|
* @param chatLogArr [{ chatId //聊天ID
|
... | @@ -1161,7 +1266,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1161,7 +1266,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
主动方法(可选)
|
|
主动方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 发送公聊信息
|
|
* @brief 发送公聊信息
|
|
* @param message 发送的消息内容
|
|
* @param message 发送的消息内容
|
... | @@ -1185,7 +1290,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1185,7 +1290,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 收到提问,用户观看时和主讲的互动问答信息
|
|
* @brief 收到提问,用户观看时和主讲的互动问答信息
|
|
* @param questionDic { groupId //分组ID
|
|
* @param questionDic { groupId //分组ID
|
... | @@ -1236,7 +1341,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1236,7 +1341,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
主动方法(可选)
|
|
主动方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 提问
|
|
* @brief 提问
|
|
* @param message 提问内容
|
|
* @param message 提问内容
|
... | @@ -1248,82 +1353,486 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1248,82 +1353,486 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
## 3.7 连麦功能
|
|
## 3.7 连麦功能
|
|
|
|
|
|
代理方法(可选)
|
|
|
|
|
|
|
|
```objective-c
|
|
|
|
/**
|
|
|
|
* @brief 本房间为允许连麦的房间,会回调此方法,在此方法中主要设置UI的逻辑,
|
|
|
|
* 在断开推流,登录进入直播间和改变房间是否允许连麦状态的时候,都会回调此方法
|
|
|
|
*/
|
|
|
|
- (void)allowSpeakInteraction:(BOOL)isAllow;
|
|
|
|
/**
|
|
|
|
* @brief WebRTC连接成功,在此代理方法中主要做一些界面的更改
|
|
|
|
*/
|
|
|
|
- (void)connectWebRTCSuccess;
|
|
|
|
/**
|
|
|
|
* @brief 当前是否可以连麦
|
|
|
|
*/
|
|
|
|
- (void)whetherOrNotConnectWebRTCNow:(BOOL)connect;
|
|
|
|
/**
|
|
|
|
* @brief 主播端接受连麦请求,在此代理方法中,要调用DequestData对象的
|
|
|
|
* - (void)saveUserInfo:(NSDictionary *)dict remoteView:(UIView *)remoteView;方法
|
|
|
|
* 把收到的字典参数和远程连麦页面的view传进来,这个view需要自己设置并发给SDK,SDK将要在这个view上进行渲染
|
|
|
|
*
|
|
|
|
* @param dict {type //audio 音频 audiovideo 音视频
|
|
|
|
* videosize //视频尺寸
|
|
|
|
* viewerId //申请连麦ID
|
|
|
|
* viewerName //申请连麦名}
|
|
|
|
*/
|
|
|
|
- (void)acceptSpeak:(NSDictionary *)dict;
|
|
|
|
/**
|
|
|
|
* @brief 主播端发送断开连麦的消息,收到此消息后做断开连麦操作
|
|
|
|
*/
|
|
|
|
-(void)speak_disconnect:(BOOL)isAllow;
|
|
|
|
|
|
|
|
|
|
### 房间连麦信息
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 房间连麦状态(代理)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| --------------------------- | ---------------- |
|
|
|
|
| onMediaCallStatusDidChange: | 房间是否允许连麦 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 房间是否允许连麦
|
|
|
|
/// @param callInfo 房间信息
|
|
|
|
- (void)onMediaCallStatusDidChange:(HDSRoomCallInfo *)callInfo;
|
|
|
|
```
|
|
|
|
|
|
|
|
##### HDSRoomCallInfo
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| --------------------- | ------------------------------------------------------------ |
|
|
|
|
| isMultiMediaCallRoom | 是否是多人连麦房间( YES 多人连麦 / NO 单人连麦 ) |
|
|
|
|
| isMediaCallFuncEnable | 是否开启连麦功能 ( YES 房间连麦功能开启 / NO 房间连麦功能未开启 ) |
|
|
|
|
| disableReason | 房间连麦功能未开启原因 |
|
|
|
|
| roomCallType | 连麦类型 ( HDSRoomCallType ) |
|
|
|
|
|
|
|
|
```objc
|
|
|
|
typedef NS_ENUM(NSInteger, HDSRoomCallType) {
|
|
|
|
HDSRoomCallTypeAudio, /// 音频连麦房间 (多人连麦情况下只能申请音频连麦)
|
|
|
|
HDSRoomCallTypeAudioVideo, /// 视频连麦房间 (单人连麦可申请音频或视频连麦)
|
|
|
|
};
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 连麦模式切换(多人连麦)(代理)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ------------------------------- | ---------------------------------- |
|
|
|
|
| (void)onMediaCallModeDidChange: | 连麦模式切换 只有多人连麦才会触发 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 连麦模式切换 只有多人连麦才会触发
|
|
|
|
/// @param mode 模式 7 无延迟 / 8 低延迟 / 9 普通
|
|
|
|
- (void)onMediaCallModeDidChange:(int)mode;
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 主动发起上麦操作
|
|
|
|
|
|
|
|
#### 主动申请上麦(主动)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| -------------------------------------------- | ------------ |
|
|
|
|
| (void)callInPreviewWithType: succed: failed: | 主动申请上麦 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 主动申请上麦
|
|
|
|
/// @param type 类型
|
|
|
|
/// @param succedClosure 成功回调 (preview 为自己的预览视图,仅在多人连麦使用)
|
|
|
|
/// @param failedClosure 失败回调
|
|
|
|
- (void)callInPreviewWithType:(HDSMediaCallType)type
|
|
|
|
succed:(void(^)(UIView *preview))succedClosure
|
|
|
|
failed:(void(^)(HDSMediaCallError error))failedClosure;
|
|
|
|
```
|
|
|
|
|
|
|
|
| 参数 | | 说明 |
|
|
|
|
| ------------- | -------------------------- | -------------- |
|
|
|
|
| type | HDSMediaCallTypeAudio | 音频连麦 |
|
|
|
|
| | HDSMediaCallTypeAudioVideo | 视频连麦 |
|
|
|
|
| succedClosure | preview | 本人的预览视图 |
|
|
|
|
| failedClosure | error | 连麦错误信息 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 主动挂断(下课也需要调用)(主动)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ------------- | -------- |
|
|
|
|
| (void)hangup: | 主动挂断 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 挂断
|
|
|
|
/// @param closure 回调
|
|
|
|
/// 主动挂断连麦,用户主动点击下麦按钮时需要关心finishClosure的返回值,退出直播间、下课等调用hangup时不需要关心callback
|
|
|
|
- (void)hangup:(hangupClosure)closure;
|
|
|
|
```
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| ------- | -------- |
|
|
|
|
| closure | 挂断回调 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 被挂断(多人连麦)(代理)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| --------------------- | ------ |
|
|
|
|
| (void)onCallWasHangup | 被挂断 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 被挂断
|
|
|
|
- (void)onCallWasHangup;
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 被邀请上麦操作
|
|
|
|
|
|
|
|
#### 被邀请上麦(多人连麦)(代理)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ------------------ | -------- |
|
|
|
|
| (void)onInviteCall | 邀请上麦 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 邀请上麦
|
|
|
|
- (void)onInviteCall;
|
|
```
|
|
```
|
|
|
|
|
|
主动方法(可选)
|
|
|
|
|
|
|
|
```objective-c
|
|
|
|
/**
|
|
|
|
* @brief 设置远程连麦窗口的大小,连麦成功后调用才生效,连麦不成功调用不生效
|
|
|
|
*/
|
|
|
|
-(void)setRemoteVideoFrameA:(CGRect)remoteVideoFrame;
|
|
|
|
/**
|
|
|
|
* @brief 设置本地预览窗口的大小,连麦成功后调用才生效,连麦不成功调用不生效
|
|
|
|
*/
|
|
|
|
-(void)setLocalVideoFrameA:(CGRect)localVideoFrame;
|
|
|
|
/**
|
|
|
|
* @brief 当观看端主动申请连麦时,需要调用这个接口,并把本地连麦预览窗口传给SDK,SDK会在这个view上
|
|
|
|
* 进行远程画面渲染
|
|
|
|
* param localView:本地预览窗口,传入本地view,连麦准备时间将会自动绘制预览画面在此view上
|
|
|
|
* param isAudioVideo:是否是音视频连麦,不是音视频即是纯音频连麦(YES表示音视频连麦,NO表示音频连麦)
|
|
|
|
*/
|
|
|
|
-(void)requestAVMessageWithLocalView:(UIView *)localView isAudioVideo:(BOOL)isAudioVideo;
|
|
|
|
/**
|
|
|
|
* @brief 当收到- (void)acceptSpeak:(NSDictionary *)dict;回调方法后,调用此方法
|
|
|
|
* dict 正是- (void)acceptSpeak:(NSDictionary *)dict;接收到的的参数
|
|
|
|
* remoteView 是远程连麦页面的view,需要自己设置并发给SDK,SDK将要在这个view上进行远程画面渲染
|
|
|
|
*/
|
|
|
|
- (void)saveUserInfo:(NSDictionary *)dict remoteView:(UIView *)remoteView;
|
|
|
|
/**
|
|
|
|
* @brief 将要连接WebRTC
|
|
|
|
*/
|
|
|
|
-(void)gotoConnectWebRTC;
|
|
|
|
/**
|
|
|
|
* @brief 观看端主动断开连麦时候需要调用的接口
|
|
|
|
*/
|
|
|
|
- (void)disConnectSpeak;
|
|
|
|
|
|
|
|
|
|
#### 同意邀请(多人连麦)(主动)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| --------------------------------- | -------- |
|
|
|
|
| (void)agreeCallInPreview: failed: | 同意上麦 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 同意上麦
|
|
|
|
/// @param succedClosure 成功回调 (preview 为自己的预览视图,仅在多人连麦使用)
|
|
|
|
/// @param failedClosure 失败回调
|
|
|
|
- (void)agreeCallInPreview:(void(^)(UIView *preview))succedClosure
|
|
|
|
failed:(void(^)(HDSMediaCallError error))failedClosure;
|
|
|
|
```
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| ------------- | ----------------------------------------------------- |
|
|
|
|
| succedClosure | 成功回调 (preview 为自己的预览视图,仅在多人连麦使用) |
|
|
|
|
| failedClosure | 失败回调 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 邀请被取消(多人连麦)(代理)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ---------------------- | ---------- |
|
|
|
|
| (void)onInviteCanceled | 邀请被取消 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 邀请被取消
|
|
|
|
- (void)onInviteCanceled;
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 拒绝邀请(多人连麦)(主动)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ---------------- | -------- |
|
|
|
|
| (void)rejectCall | 拒接邀请 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 拒接邀请
|
|
|
|
- (void)rejectCall;
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 远端流相关操作
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 远端流可用(代理)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| --------------------------- | ---------- |
|
|
|
|
| (void)onRemoteStreamEnable: | 远端流可用 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 远端流可用
|
|
|
|
/// @param streamModel 流信息
|
|
|
|
- (void)onRemoteStreamEnable:(HDSStreamModel *)streamModel;
|
|
|
|
```
|
|
|
|
|
|
|
|
##### HDSStreamModel
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| -------------- | ----------------------------------- |
|
|
|
|
| hds_remoteView | 远端流视图 |
|
|
|
|
| userInfo | 用户信息 (HDSStreamUserInfoModel) |
|
|
|
|
|
|
|
|
##### HDSStreamUserInfoModel
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ------------- | --------------------- |
|
|
|
|
| userId | 用户ID |
|
|
|
|
| userName | 用户名 |
|
|
|
|
| userRole | 用户角色 (0 :老师) |
|
|
|
|
| isAudioEnable | 声音是否可用 |
|
|
|
|
| isVideoEnable | 视频是否可用 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 拉远端流(主动)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| --------------------------------------- | -------- |
|
|
|
|
| (void)pullRemoteStream: succed: failed: | 拉远端流 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 拉远端流
|
|
|
|
/// @param userId 用户ID
|
|
|
|
/// @param succedClosure 成功
|
|
|
|
/// @param failedClosure 失败
|
|
|
|
- (void)pullRemoteStream:(NSString *)userId
|
|
|
|
succed:(pullStreamSuccedClosure)succedClosure
|
|
|
|
failed:(pullStreamFailedClosure)failedClosure;
|
|
|
|
```
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| ------------- | -------------------------- |
|
|
|
|
| userId | 用户ID |
|
|
|
|
| succedClosure | 成功回调(HDSStreamModel) |
|
|
|
|
| failedClosure | 错误回调 |
|
|
|
|
|
|
|
|
##### HDSStreamModel
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| -------------- | ----------------------------------- |
|
|
|
|
| hds_remoteView | 远端流视图 |
|
|
|
|
| userInfo | 用户信息 (HDSStreamUserInfoModel) |
|
|
|
|
|
|
|
|
##### HDSStreamUserInfoModel
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ------------- | --------------------- |
|
|
|
|
| userId | 用户ID |
|
|
|
|
| userName | 用户名 |
|
|
|
|
| userRole | 用户角色 (0 :老师) |
|
|
|
|
| isAudioEnable | 声音是否可用 |
|
|
|
|
| isVideoEnable | 视频是否可用 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 远端流不可用(多人连麦)(代理)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ---------------------------- | ------------ |
|
|
|
|
| (void)onRemoteStreamDisable: | 远端流不可用 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 远端流不可用
|
|
|
|
/// @param streamModel 流信息
|
|
|
|
- (void)onRemoteStreamDisable:(HDSStreamModel *)streamModel;
|
|
|
|
```
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| ----------- | ------ |
|
|
|
|
| streamModel | 流信息 |
|
|
|
|
|
|
|
|
##### HDSStreamModel
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| -------------- | ----------------------------------- |
|
|
|
|
| hds_remoteView | 远端流视图 |
|
|
|
|
| userInfo | 用户信息 (HDSStreamUserInfoModel) |
|
|
|
|
|
|
|
|
##### HDSStreamUserInfoModel
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ------------- | --------------------- |
|
|
|
|
| userId | 用户ID |
|
|
|
|
| userName | 用户名 |
|
|
|
|
| userRole | 用户角色 (0 :老师) |
|
|
|
|
| isAudioEnable | 声音是否可用 |
|
|
|
|
| isVideoEnable | 视频是否可用 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 移除远端流(多人连麦)(主动)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ------------------------- | ---------- |
|
|
|
|
| (void)removeRemoteStream: | 移除远端流 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 移除远端流
|
|
|
|
/// @param userId 远端流用户id
|
|
|
|
- (void)removeRemoteStream:(NSString *)userId;
|
|
|
|
```
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| ------ | -------------------- |
|
|
|
|
| userId | 远端流不可用的用户ID |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 连麦中相关操作
|
|
|
|
|
|
|
|
#### 设置本地视频开启 (开始直播之后生效)(多人连麦)(主动)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| -------------------------- | ----------------------------------- |
|
|
|
|
| (BOOL)setLocalVideoEnable: | 设置本地视频开启 (开始直播之后生效) |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 设置本地视频开启 (开始直播之后生效)
|
|
|
|
/// @param enable 是否开启 YES 开启/ NO 关闭
|
|
|
|
/// @return 是否操作成功
|
|
|
|
- (BOOL)setLocalVideoEnable:(BOOL)enable;
|
|
|
|
```
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| ------ | -------------------------- |
|
|
|
|
| enable | 是否开启 YES 开启/ NO 关闭 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 视频状态改变(多人连麦)(代理)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ------------------------------------- | ------------ |
|
|
|
|
| (void)onVideoStatusDidChange: userId: | 视频状态改变 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 视频状态改变
|
|
|
|
/// @param status 是否可用
|
|
|
|
/// @param userId 用户id
|
|
|
|
- (void)onVideoStatusDidChange:(BOOL)status userId:(NSString *)userId;
|
|
|
|
```
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| ------ | -------- |
|
|
|
|
| status | 是否可用 |
|
|
|
|
| userId | 用户id |
|
|
|
|
|
|
|
|
<font color = '#ff2200'>**注:自己主动操作本地视频状态也会回调此代理**</font>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 设置本地音频开启(开始直播之后生效)(多人连麦)(主动)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| -------------------------- | ---------------------------------- |
|
|
|
|
| (BOOL)setLocalAudioEnable: | 设置本地音频开启(开始直播之后生效) |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 设置本地音频开启(开始直播之后生效)
|
|
|
|
/// @param enable 是否开启 YES 开启/ NO 关闭
|
|
|
|
/// @return 是否操作成功
|
|
|
|
- (BOOL)setLocalAudioEnable:(BOOL)enable;
|
|
```
|
|
```
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| ------ | -------------------------- |
|
|
|
|
| enable | 是否开启 YES 开启/ NO 关闭 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 音频状态改变(多人连麦)(代理)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ------------------------------------------------ | ------------ |
|
|
|
|
| (void)onAudioStatusDidChange: userId: byTeacher: | 音频状态改变 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 音频状态改变
|
|
|
|
/// @param status 是否可用
|
|
|
|
/// @param userId 用户id
|
|
|
|
/// @param byTeacher 是否是老师操作
|
|
|
|
- (void)onAudioStatusDidChange:(BOOL)status userId:(NSString *)userId byTeacher:(BOOL)byTeacher;
|
|
|
|
```
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| --------- | -------------- |
|
|
|
|
| status | 是否可用 |
|
|
|
|
| userId | 用户id |
|
|
|
|
| byTeacher | 是否是老师操作 |
|
|
|
|
|
|
|
|
<font color = '#ff2200'> **注:自己主动操作本地音频状态也会回调此代理**</font>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 切换本地摄像头,默认前置(多人连麦)(主动)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ------------------- | ------------------------ |
|
|
|
|
| (BOOL)switchCamera; | 切换本地摄像头,默认前置 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 切换本地摄像头,默认前置
|
|
|
|
/// @return 是否操作成功
|
|
|
|
- (BOOL)switchCamera;
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 连麦异常(代理)
|
|
|
|
|
|
|
|
| 方法 | 说明 |
|
|
|
|
| ---------------------- | -------- |
|
|
|
|
| onConnectionException: | 异常挂断 |
|
|
|
|
|
|
|
|
示例代码
|
|
|
|
|
|
|
|
```objc
|
|
|
|
/// 异常挂断
|
|
|
|
/// @param error 错误原因
|
|
|
|
- (void)onConnectionException:(HDSMediaCallError)error;
|
|
|
|
```
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|
| ---------------------------------- | -------------------------------- |
|
|
|
|
| HDSMediaCallErrorInCalling | 连麦失败 |
|
|
|
|
| HDSMediaCallErrorRoomTypeDidChange | 连麦房间类型改变(需要退出重进) |
|
|
|
|
| HDSMediaCallErroronMumberLimit | 连麦人数已达上限 |
|
|
|
|
| HDSMediaCallErrorAbilityDown | 连麦功能不可用(需要退出重进) |
|
|
|
|
| HDSMediaCallErrorPullStreamFailed | 拉流失败 |
|
|
|
|
| HDSMediaCallErrorConnectTimeOut | 连麦申请超时 |
|
|
|
|
|
|
|
|
### <font color = '#ff2200'>特别注意多人连麦需要退出房间重新登陆的事件</font>
|
|
|
|
|
|
|
|
| 房间配置事件 | 说明 |
|
|
|
|
| ------------------------------- | ------------------------------ |
|
|
|
|
| OnErrorType_LoginFailed | 登陆失败(需要退出重进) |
|
|
|
|
| initFailedClosure | 初始化SDK失败(需要退出重进) |
|
|
|
|
| OnErrorType_GetPlaySourceFailed | 获取播放源失败(需要退出重进) |
|
|
|
|
| OnErrorType_GetSummaryFailed | 获取摘要失败(需要退出重进) |
|
|
|
|
|
|
|
|
| 连麦事件 | 说明 |
|
|
|
|
| ---------------------------------- | -------------------------------- |
|
|
|
|
| HDSMediaCallErrorRoomTypeDidChange | 连麦房间类型改变(需要退出重进) |
|
|
|
|
| HDSMediaCallErrorAbilityDown | 连麦功能不可用(需要退出重进) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 3.8 切换线路和清晰度
|
|
## 3.8 切换线路和清晰度
|
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 房间的音视频线路 (已废弃)
|
|
* @brief 房间的音视频线路 (已废弃)
|
|
* @param model LineModel 详情
|
|
* @param model LineModel 详情
|
... | @@ -1373,22 +1882,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1373,22 +1882,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
主动方法(可选)
|
|
主动方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
|
|
* @brief 切换线路 监听HDReceivedVideoAudioLinesWithModel代理获取线路/清晰度等信息 (已废弃)
|
|
|
|
* @param quality 清晰度 0-原画;200-流畅;300-标清;音频传空字符串
|
|
|
|
* @param stream 线路 从0开始,如两条线路则传0或1
|
|
|
|
* results { //切换结果
|
|
|
|
* success 0 切换成功 -1切换失败 -2 切换频繁
|
|
|
|
* reason 错误原因
|
|
|
|
* }
|
|
|
|
* 废弃版本 3.14.0
|
|
|
|
* 兼容版本 2021年11月08日之后将不再维护
|
|
|
|
* 新方法 切换播放器类型 - (void)changePlayMode:(PLAY_MODE_TYEP)mode;
|
|
|
|
* 切换清晰度 - (void)changeQuality:(NSString *)quality completion:(void (^)(NSDictionary * results))completion;
|
|
|
|
* 切换线路 - (void)changeLine:(NSInteger)index completion:(void (^)(NSDictionary * results))completion;
|
|
|
|
*/
|
|
|
|
- (void)changeLineWithQuality:(NSString *)quality Stream:(NSInteger)stream completion:(void (^)(NSDictionary * results))completion;
|
|
|
|
/**
|
|
/**
|
|
* The New Method (3.14.0)
|
|
* The New Method (3.14.0)
|
|
* @brief 切换播放类型
|
|
* @brief 切换播放类型
|
... | @@ -1435,7 +1929,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1435,7 +1929,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 开始答题
|
|
* @brief 开始答题
|
|
*/
|
|
*/
|
... | @@ -1494,7 +1988,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1494,7 +1988,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
主动方法(可选)
|
|
主动方法(可选)
|
|
|
|
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 答单选题
|
|
* @brief 答单选题
|
|
*/
|
|
*/
|
... | @@ -1512,7 +2006,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1512,7 +2006,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 发布问卷
|
|
* @brief 发布问卷
|
|
*/
|
|
*/
|
... | @@ -1551,7 +2045,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1551,7 +2045,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
主动方法(可选)
|
|
主动方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 提交问卷结果
|
|
* @brief 提交问卷结果
|
|
* @param dic{subjectsAnswer[{selectedOptionId //选中选项ID
|
|
* @param dic{subjectsAnswer[{selectedOptionId //选中选项ID
|
... | @@ -1570,7 +2064,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1570,7 +2064,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 接收到发送的广播
|
|
* @brief 接收到发送的广播
|
|
* @param dic {content //广播内容
|
|
* @param dic {content //广播内容
|
... | @@ -1606,7 +2100,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1606,7 +2100,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 开始签到
|
|
* @brief 开始签到
|
|
*/
|
|
*/
|
... | @@ -1615,7 +2109,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1615,7 +2109,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
主动方法(可选)
|
|
主动方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 签到
|
|
* @brief 签到
|
|
*/
|
|
*/
|
... | @@ -1638,7 +2132,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1638,7 +2132,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 开始抽奖
|
|
* @brief 开始抽奖
|
|
*/
|
|
*/
|
... | @@ -1660,7 +2154,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1660,7 +2154,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 修改昵称
|
|
* @brief 修改昵称
|
|
*/
|
|
*/
|
... | @@ -1669,7 +2163,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1669,7 +2163,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
主动方法(可选)
|
|
主动方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 修改昵称
|
|
* @brief 修改昵称
|
|
* @param nickName 修改后的昵称
|
|
* @param nickName 修改后的昵称
|
... | @@ -1683,7 +2177,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1683,7 +2177,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 收到在线人数
|
|
* @brief 收到在线人数
|
|
*/
|
|
*/
|
... | @@ -1704,11 +2198,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1704,11 +2198,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
主动放法(可选)
|
|
主动放法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
|
|
* @brief 获取在线房间人数,当登录成功后即可调用此接口,登录不成功或者退出登录后就不可以调用了,如果要求实时性比较强的话,可以写一个定时器,不断调用此接口,几秒钟发一次就可以,然后在代理回调函数中,处理返回的数据,15秒响应一次
|
|
|
|
*/
|
|
|
|
- (void)roomUserCount;
|
|
|
|
/**
|
|
/**
|
|
获取老师列表
|
|
获取老师列表
|
|
*/
|
|
*/
|
... | @@ -1721,7 +2211,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1721,7 +2211,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 接收到随堂测
|
|
* @brief 接收到随堂测
|
|
* rseultDic 随堂测内容
|
|
* rseultDic 随堂测内容
|
... | @@ -1823,7 +2313,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1823,7 +2313,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
主动方法(可选)
|
|
主动方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 提交随堂测
|
|
* @brief 提交随堂测
|
|
* @param practiceId 随堂测ID
|
|
* @param practiceId 随堂测ID
|
... | @@ -1851,7 +2341,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1851,7 +2341,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 公告
|
|
* @brief 公告
|
|
*/
|
|
*/
|
... | @@ -1868,7 +2358,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1868,7 +2358,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 跑马灯
|
|
* @brief 跑马灯
|
|
* @param dic action [{ //事件
|
|
* @param dic action [{ //事件
|
... | @@ -1899,7 +2389,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
... | @@ -1899,7 +2389,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
|
|
|
播放器状态类型
|
|
播放器状态类型
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* 视频播放状态
|
|
* 视频播放状态
|
|
* HDMoviePlaybackStateStopped 播放停止
|
|
* HDMoviePlaybackStateStopped 播放停止
|
... | @@ -1935,7 +2425,7 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
... | @@ -1935,7 +2425,7 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 视频状态改变
|
|
* @brief 视频状态改变
|
|
* @param state
|
|
* @param state
|
... | @@ -1966,7 +2456,7 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
... | @@ -1966,7 +2456,7 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 视频加载速度
|
|
* @brief 视频加载速度
|
|
* @param speed 视频加载速度字符串
|
|
* @param speed 视频加载速度字符串
|
... | @@ -1978,7 +2468,7 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
... | @@ -1978,7 +2468,7 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 用户进出直播间提示
|
|
* @brief 用户进出直播间提示
|
|
* @param model RemindModel 详情
|
|
* @param model RemindModel 详情
|
... | @@ -1992,7 +2482,7 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
... | @@ -1992,7 +2482,7 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
|
|
|
|
|
代理方法(可选)
|
|
代理方法(可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 抽奖2.0 抽奖信息回调 (该功能需要单独开启)
|
|
* @brief 抽奖2.0 抽奖信息回调 (该功能需要单独开启)
|
|
* @param model NewLotteryMessageModel 详情
|
|
* @param model NewLotteryMessageModel 详情
|
... | @@ -2002,7 +2492,7 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
... | @@ -2002,7 +2492,7 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
|
|
|
|
|
主动方法 (可选)
|
|
主动方法 (可选)
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 抽奖2.0 查询抽奖状态
|
|
* @brief 抽奖2.0 查询抽奖状态
|
|
*/
|
|
*/
|
... | @@ -2033,13 +2523,13 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
... | @@ -2033,13 +2523,13 @@ typedef NS_ENUM(NSUInteger, HDMovieLoadState) { |
|
|
|
|
|
HD云直播的页面跳转均是采用模态形式跳转
|
|
HD云直播的页面跳转均是采用模态形式跳转
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^ __nullable)(void))completion NS_AVAILABLE_IOS(5_0);
|
|
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^ __nullable)(void))completion NS_AVAILABLE_IOS(5_0);
|
|
```
|
|
```
|
|
|
|
|
|
在每个控制器或者基类控制器设置旋转选项
|
|
在每个控制器或者基类控制器设置旋转选项
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
#pragma mark - 屏幕旋转
|
|
#pragma mark - 屏幕旋转
|
|
- (BOOL)shouldAutorotate{
|
|
- (BOOL)shouldAutorotate{
|
|
return NO;//该旋转的页面自己变量控制
|
|
return NO;//该旋转的页面自己变量控制
|
... | @@ -2074,7 +2564,7 @@ player.delegate = self |
... | @@ -2074,7 +2564,7 @@ player.delegate = self |
|
|
|
|
|
首先: 在AppDelegate中写如下代码(仅限CCSDK);
|
|
首先: 在AppDelegate中写如下代码(仅限CCSDK);
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
[[SaveLogUtil sharedInstance]isNeedToSaveLog:YES];
|
|
[[SaveLogUtil sharedInstance]isNeedToSaveLog:YES];
|
|
```
|
|
```
|
|
|
|
|
... | @@ -2111,7 +2601,7 @@ error: Bundle only contains bitcode-marker /var/folders/s5/lnk362pd4cs0lmtn_43pp |
... | @@ -2111,7 +2601,7 @@ error: Bundle only contains bitcode-marker /var/folders/s5/lnk362pd4cs0lmtn_43pp |
|
-(void)commitQuestionnaire:(NSDictionary *)dic
|
|
-(void)commitQuestionnaire:(NSDictionary *)dic
|
|
```
|
|
```
|
|
|
|
|
|
```
|
|
```objc
|
|
{
|
|
{
|
|
subjectsAnswer = (
|
|
subjectsAnswer = (
|
|
{
|
|
{
|
... | @@ -2135,7 +2625,7 @@ error: Bundle only contains bitcode-marker /var/folders/s5/lnk362pd4cs0lmtn_43pp |
... | @@ -2135,7 +2625,7 @@ error: Bundle only contains bitcode-marker /var/folders/s5/lnk362pd4cs0lmtn_43pp |
|
|
|
|
|
## 4.6 关于api回调所在线程问题
|
|
## 4.6 关于api回调所在线程问题
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 文档加载状态(会在子线程回调)
|
|
* @brief 文档加载状态(会在子线程回调)
|
|
* index
|
|
* index
|
... | @@ -2150,7 +2640,7 @@ error: Bundle only contains bitcode-marker /var/folders/s5/lnk362pd4cs0lmtn_43pp |
... | @@ -2150,7 +2640,7 @@ error: Bundle only contains bitcode-marker /var/folders/s5/lnk362pd4cs0lmtn_43pp |
|
- (void)docLoadCompleteWithIndex:(NSInteger)index;
|
|
- (void)docLoadCompleteWithIndex:(NSInteger)index;
|
|
```
|
|
```
|
|
|
|
|
|
```objective-c
|
|
```objc
|
|
/**
|
|
/**
|
|
* @brief 获取ppt当前页数和总页数 (会多次回调) (会在子线程回调)
|
|
* @brief 获取ppt当前页数和总页数 (会多次回调) (会在子线程回调)
|
|
*
|
|
*
|
... | @@ -2162,4 +2652,4 @@ error: Bundle only contains bitcode-marker /var/folders/s5/lnk362pd4cs0lmtn_43pp |
... | @@ -2162,4 +2652,4 @@ error: Bundle only contains bitcode-marker /var/folders/s5/lnk362pd4cs0lmtn_43pp |
|
- (void)onPageChange:(NSDictionary *) dictionary;
|
|
- (void)onPageChange:(NSDictionary *) dictionary;
|
|
```
|
|
```
|
|
|
|
|
|
PS:直播、在线回放只有上述api会在子线程回调,其余的api均在主线程进行回调。 |
|
PS:直播、在线回放只有上述api会在子线程回调,其余的api均在主线程进行回调。 |
|
\ No newline at end of file |
|
|