... | ... | @@ -11,6 +11,33 @@ PS. 关于Xcode12最低版本支持 iOS 9.0 ,如何联调 iOS 8.0 设备? |
|
|
|
|
|
|
|
|
|
|
|
## 3.16.2
|
|
|
|
|
|
发布日期:2021.06.10
|
|
|
|
|
|
1.更改跑马灯时间单位为毫秒
|
|
|
|
|
|
2.在线回放 "请求回放地址成功" API 变更
|
|
|
|
|
|
3.统一在线回放,聊天 问答 广播 随堂测 数据格式
|
|
|
|
|
|
### RequestDataPlayBack.h "请求回放地址成功" API 变更
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 请求回放地址成功 (已废弃)
|
|
|
*
|
|
|
* 废弃版本 3.16.2
|
|
|
* 兼容版本 2021年12月1日后将不再维护
|
|
|
* 新方法: - (void)mediaPrepared;
|
|
|
*/
|
|
|
- (void)requestSucceed;
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 3.16.1
|
|
|
|
|
|
发布日期:2021.05.27
|
... | ... | @@ -37,14 +64,14 @@ PS. 关于Xcode12最低版本支持 iOS 9.0 ,如何联调 iOS 8.0 设备? |
|
|
```objc
|
|
|
/**
|
|
|
* 新增 id 新版聊天id
|
|
|
* 原有 chatId 旧版聊天id
|
|
|
* 原有 chatId 旧版聊天id
|
|
|
*/
|
|
|
- (void)onParserChat:(NSArray *)arr;
|
|
|
```
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* 新增 userRole 新版回答角色
|
|
|
* 新增 userRole 新版回答角色
|
|
|
* 原有 answerUserRole 旧版回答角色
|
|
|
*/
|
|
|
- (void)onParserQuestionArr:(NSArray *)questionArr onParserAnswerArr:(NSArray *)answerArr;
|
... | ... | @@ -182,11 +209,7 @@ PS. 关于Xcode12最低版本支持 iOS 9.0 ,如何联调 iOS 8.0 设备? |
|
|
**RequestData.h RequestDataPlayBack.h OfflinePlayBack.h** 新增api
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 设置防录屏功能
|
|
|
* @param isEnable YES 开启 NO 关闭(默认)
|
|
|
*/
|
|
|
- (void)setAntiRecordScreen:(BOOL)isEnable;
|
|
|
/** * @brief 设置防录屏功能 * @param isEnable YES 开启 NO 关闭(默认) */- (void)setAntiRecordScreen:(BOOL)isEnable;
|
|
|
```
|
|
|
|
|
|
2.直播、在线回放、离线回放数据增加排序
|
... | ... | @@ -206,21 +229,13 @@ PS. 关于Xcode12最低版本支持 iOS 9.0 ,如何联调 iOS 8.0 设备? |
|
|
**RequestDataPlayBack.h 新增**
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 回放打点数据
|
|
|
* @param dotList 打点信息
|
|
|
* @[HDReplayDotModel,HDReplayDotModel]
|
|
|
*/
|
|
|
- (void)HDReplayDotList:(NSArray *)dotList;
|
|
|
/** * @brief 回放打点数据 * @param dotList 打点信息 * @[HDReplayDotModel,HDReplayDotModel] */- (void)HDReplayDotList:(NSArray *)dotList;
|
|
|
```
|
|
|
|
|
|
**PlayParameter 新增 HDReplayDotModel**
|
|
|
|
|
|
```objc
|
|
|
/** 打点时间:单位:S */
|
|
|
@property (nonatomic, assign) NSInteger time;
|
|
|
/** 打点描述 */
|
|
|
@property (nonatomic, copy) NSString * _Nullable desc;
|
|
|
/** 打点时间:单位:S */@property (nonatomic, assign) NSInteger time;/** 打点描述 */@property (nonatomic, copy) NSString * _Nullable desc;
|
|
|
```
|
|
|
|
|
|
2.优化播放器侧边栏交互
|
... | ... | @@ -262,10 +277,7 @@ api变更: |
|
|
**PlayParameter.h** 废弃liveid
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 直播ID,回放时才用到(已废弃)
|
|
|
*/
|
|
|
@property(nonatomic, copy)NSString *liveId;
|
|
|
/** * @brief 直播ID,回放时才用到(已废弃) */@property(nonatomic, copy)NSString *liveId;
|
|
|
```
|
|
|
|
|
|
**RequestData.h**
|
... | ... | @@ -273,125 +285,13 @@ api变更: |
|
|
废弃api
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 房间的音视频线路 (已废弃)
|
|
|
* @param model LineModel 详情
|
|
|
*
|
|
|
* 废弃版本 3.14.0
|
|
|
* 兼容版本 2021年11月08日之后将不再维护
|
|
|
* 新方法 清晰度回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict;
|
|
|
* 线路回调 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
*/
|
|
|
- (void)HDReceivedVideoAudioLinesWithModel:(LineModel *)model;
|
|
|
/**
|
|
|
* @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;
|
|
|
/** * @brief 房间的音视频线路 (已废弃) * @param model LineModel 详情 * * 废弃版本 3.14.0 * 兼容版本 2021年11月08日之后将不再维护 * 新方法 清晰度回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict; * 线路回调 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict; */- (void)HDReceivedVideoAudioLinesWithModel:(LineModel *)model;/** * @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;
|
|
|
```
|
|
|
|
|
|
新增api
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* The New Method (3.14.0)
|
|
|
* @brief 是否开启音频模式
|
|
|
* @param hasAudio HAVE_AUDIO_LINE_TURE 有音频 HAVE_AUDIO_LINE_FALSE 无音频
|
|
|
*
|
|
|
* 触发回调条件 1.初始化SDK登录成功后
|
|
|
*/
|
|
|
- (void)HDAudioMode:(HAVE_AUDIO_LINE)hasAudio;
|
|
|
/**
|
|
|
* The New Method (3.14.0)
|
|
|
* @brief 房间所包含的清晰度 (会多次回调)
|
|
|
* @param dict 清晰度数据
|
|
|
* 清晰度数据 key(包含的键值) type(数据类型) description(描述)
|
|
|
* qualityList(清晰度列表) array @[HDQualityModel(清晰度详情),HDQualityModel(清晰度详情)]
|
|
|
* currentQuality(当前清晰度) object HDQualityModel(清晰度详情)
|
|
|
*
|
|
|
* 触发回调条件 1.初始化SDK登录成功后
|
|
|
* 2.主动调用切换清晰度方法
|
|
|
* 3.主动调用切换视频模式回调
|
|
|
*/
|
|
|
- (void)HDReceivedVideoQuality:(NSDictionary *)dict;
|
|
|
/**
|
|
|
* The New Method (3.14.0)
|
|
|
* @brief 房间包含的音视频线路 (会多次回调)
|
|
|
* @param dict 线路数据
|
|
|
* 线路数据 key(包含的键值) type(数据类型) description(描述)
|
|
|
* lineList(线路列表) array @[@"line1",@"line2"]
|
|
|
* indexNum(当前线路下标) integer 0
|
|
|
*
|
|
|
* 触发回调条件 1.初始化SDK登录成功后
|
|
|
* 2.主动调用切换清晰度方法
|
|
|
* 3.主动调用切换线路方法
|
|
|
* 4.主动调用切换音视频模式回调
|
|
|
*/
|
|
|
- (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
|
|
|
/**
|
|
|
* @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)
|
|
|
* @brief 切换播放类型
|
|
|
* @param mode PLAY_MODE_TYEP_VIDEO 视频模式(默认)
|
|
|
* PLAY_MODE_TYEP_AUDIO 音频模式(当前回放包含音频线路)
|
|
|
* @param completion 切换结果
|
|
|
* { success 0 切换成功 -1切换失败 -2 切换频繁
|
|
|
* reason 错误原因 }
|
|
|
*
|
|
|
* 切换播放器类型 切换为音频,回调 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
* 切换为视频,回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict;
|
|
|
* - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
*
|
|
|
*/
|
|
|
- (void)changePlayMode:(PLAY_MODE_TYEP)mode completion:(void (^)(NSDictionary * results))completion;
|
|
|
/**
|
|
|
* The New Method (3.14.0)
|
|
|
* @brief 切换清晰度
|
|
|
* @param quality 清晰度
|
|
|
* @param completion 切换结果
|
|
|
* { success 0 切换成功 -1切换失败 -2 切换频繁
|
|
|
* reason 错误原因 }
|
|
|
*
|
|
|
* 切换清晰度回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict;
|
|
|
* - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
*/
|
|
|
- (void)changeQuality:(NSString *)quality completion:(void (^)(NSDictionary * results))completion;
|
|
|
/**
|
|
|
* The New Method (3.14.0)
|
|
|
* @brief 切换线路
|
|
|
* @param index 选择线路下标
|
|
|
* @param completion 切换结果
|
|
|
* { success 0 切换成功 -1切换失败 -2 切换频繁
|
|
|
* reason 错误原因 }
|
|
|
*
|
|
|
* 切换线路回调方法 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
*/
|
|
|
- (void)changeLine:(NSInteger)index completion:(void (^)(NSDictionary * results))completion;
|
|
|
/** * The New Method (3.14.0) * @brief 是否开启音频模式 * @param hasAudio HAVE_AUDIO_LINE_TURE 有音频 HAVE_AUDIO_LINE_FALSE 无音频 * * 触发回调条件 1.初始化SDK登录成功后 */- (void)HDAudioMode:(HAVE_AUDIO_LINE)hasAudio;/** * The New Method (3.14.0) * @brief 房间所包含的清晰度 (会多次回调) * @param dict 清晰度数据 * 清晰度数据 key(包含的键值) type(数据类型) description(描述) * qualityList(清晰度列表) array @[HDQualityModel(清晰度详情),HDQualityModel(清晰度详情)] * currentQuality(当前清晰度) object HDQualityModel(清晰度详情) * * 触发回调条件 1.初始化SDK登录成功后 * 2.主动调用切换清晰度方法 * 3.主动调用切换视频模式回调 */- (void)HDReceivedVideoQuality:(NSDictionary *)dict;/** * The New Method (3.14.0) * @brief 房间包含的音视频线路 (会多次回调) * @param dict 线路数据 * 线路数据 key(包含的键值) type(数据类型) description(描述) * lineList(线路列表) array @[@"line1",@"line2"] * indexNum(当前线路下标) integer 0 * * 触发回调条件 1.初始化SDK登录成功后 * 2.主动调用切换清晰度方法 * 3.主动调用切换线路方法 * 4.主动调用切换音视频模式回调 */- (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;/** * @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) * @brief 切换播放类型 * @param mode PLAY_MODE_TYEP_VIDEO 视频模式(默认) * PLAY_MODE_TYEP_AUDIO 音频模式(当前回放包含音频线路) * @param completion 切换结果 * { success 0 切换成功 -1切换失败 -2 切换频繁 * reason 错误原因 } * * 切换播放器类型 切换为音频,回调 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict; * 切换为视频,回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict; * - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict; * */- (void)changePlayMode:(PLAY_MODE_TYEP)mode completion:(void (^)(NSDictionary * results))completion;/** * The New Method (3.14.0) * @brief 切换清晰度 * @param quality 清晰度 * @param completion 切换结果 * { success 0 切换成功 -1切换失败 -2 切换频繁 * reason 错误原因 } * * 切换清晰度回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict; * - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict; */- (void)changeQuality:(NSString *)quality completion:(void (^)(NSDictionary * results))completion;/** * The New Method (3.14.0) * @brief 切换线路 * @param index 选择线路下标 * @param completion 切换结果 * { success 0 切换成功 -1切换失败 -2 切换频繁 * reason 错误原因 } * * 切换线路回调方法 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict; */- (void)changeLine:(NSInteger)index completion:(void (^)(NSDictionary * results))completion;
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -417,149 +317,31 @@ api变更: |
|
|
**PlayParameter.h** 新增枚举类型
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* 音视频模式
|
|
|
* PLAY_MODE_TYEP_VIDEO 视频
|
|
|
* PLAY_MODE_TYEP_AUDIO 音频
|
|
|
*/
|
|
|
typedef NS_ENUM(NSUInteger, PLAY_MODE_TYEP) {
|
|
|
PLAY_MODE_TYEP_VIDEO,//视频
|
|
|
PLAY_MODE_TYEP_AUDIO,//音频
|
|
|
};
|
|
|
/**
|
|
|
* 是否有音频线路
|
|
|
* HAVE_AUDIO_LINE_TURE 有音频线路
|
|
|
* HAVE_AUDIO_LINE_FALSE 无音频线路
|
|
|
*/
|
|
|
typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) {
|
|
|
HAVE_AUDIO_LINE_TURE,//有音频线路
|
|
|
HAVE_AUDIO_LINE_FALSE,//无音频线路
|
|
|
};
|
|
|
/** * 音视频模式 * PLAY_MODE_TYEP_VIDEO 视频 * PLAY_MODE_TYEP_AUDIO 音频 */typedef NS_ENUM(NSUInteger, PLAY_MODE_TYEP) { PLAY_MODE_TYEP_VIDEO,//视频 PLAY_MODE_TYEP_AUDIO,//音频};/** * 是否有音频线路 * HAVE_AUDIO_LINE_TURE 有音频线路 * HAVE_AUDIO_LINE_FALSE 无音频线路 */typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { HAVE_AUDIO_LINE_TURE,//有音频线路 HAVE_AUDIO_LINE_FALSE,//无音频线路};
|
|
|
```
|
|
|
|
|
|
新增 **HDQualityModel** 类
|
|
|
|
|
|
```objc
|
|
|
/** 清晰度 */
|
|
|
@property (nonatomic, copy) NSString * _Nonnull quality;
|
|
|
/** 描述 */
|
|
|
@property (nonatomic, copy) NSString * _Nonnull desc;
|
|
|
/** 清晰度 */@property (nonatomic, copy) NSString * _Nonnull quality;/** 描述 */@property (nonatomic, copy) NSString * _Nonnull desc;
|
|
|
```
|
|
|
|
|
|
**RequestDataPlayBack.h** 废弃api
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 接收到播放线路 (已废弃)
|
|
|
* 例:videoArray元素个数 2 代表2条线路 changeLineWithPlayParameter传0或1
|
|
|
*
|
|
|
* 废弃版本 3.13.0
|
|
|
* 兼容版本 2021年10月08日之后将不再维护
|
|
|
* 新方法 清晰度回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict;
|
|
|
* 线路回调 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
*
|
|
|
*/
|
|
|
-(void)numberOfReceivedLinesWithVideo:(NSArray *)videoArray audio:(NSArray *)audioArray;
|
|
|
/**
|
|
|
* @brief 切换线路 (已废弃)
|
|
|
* param
|
|
|
* disableVideo 视频传no,音频传yes(账号开启音频模式下才可以传yes)
|
|
|
* lineNum 线路 例:-(void)numberOfReceivedLinesWithVideo:(NSArray *)videoArray audio:(NSArray *)audioArray;中videoArray元素个数为2 则传0或1
|
|
|
* results:
|
|
|
success 0 切换成功 -1切换失败 -2 切换频繁
|
|
|
currentIndex 当前播放线路
|
|
|
*
|
|
|
* 废弃版本 3.13.0
|
|
|
* 兼容版本 2021年10月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)changeLineWithPlayParameter:(PlayParameter *)param completion:(void (^)(NSDictionary * results))completion;
|
|
|
/** * @brief 接收到播放线路 (已废弃) * 例:videoArray元素个数 2 代表2条线路 changeLineWithPlayParameter传0或1 * * 废弃版本 3.13.0 * 兼容版本 2021年10月08日之后将不再维护 * 新方法 清晰度回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict; * 线路回调 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict; * */-(void)numberOfReceivedLinesWithVideo:(NSArray *)videoArray audio:(NSArray *)audioArray;/** * @brief 切换线路 (已废弃) * param * disableVideo 视频传no,音频传yes(账号开启音频模式下才可以传yes) * lineNum 线路 例:-(void)numberOfReceivedLinesWithVideo:(NSArray *)videoArray audio:(NSArray *)audioArray;中videoArray元素个数为2 则传0或1 * results: success 0 切换成功 -1切换失败 -2 切换频繁 currentIndex 当前播放线路 * * 废弃版本 3.13.0 * 兼容版本 2021年10月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)changeLineWithPlayParameter:(PlayParameter *)param completion:(void (^)(NSDictionary * results))completion;
|
|
|
```
|
|
|
|
|
|
**RequestDataPlayBack.h** 新增api回调
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* The New Method (3.13.0)
|
|
|
* @brief 是否开启音频模式
|
|
|
* @param hasAudio HAVE_AUDIO_LINE_TURE 有音频 HAVE_AUDIO_LINE_FALSE 无音频
|
|
|
*
|
|
|
* 触发回调条件 1.初始化SDK登录成功后
|
|
|
*/
|
|
|
- (void)HDAudioMode:(HAVE_AUDIO_LINE)hasAudio;
|
|
|
/**
|
|
|
* The New Method (3.13.0)
|
|
|
* @brief 房间所包含的清晰度 (会多次回调)
|
|
|
* @param dict 清晰度数据
|
|
|
* 清晰度数据 key(包含的键值) type(数据类型) description(描述)
|
|
|
* qualityList(清晰度列表) array @[HDQualityModel(清晰度详情),HDQualityModel(清晰度详情)]
|
|
|
* currentQuality(当前清晰度) object HDQualityModel(清晰度详情)
|
|
|
*
|
|
|
* 触发回调条件 1.初始化SDK登录成功后
|
|
|
* 2.主动调用切换清晰度方法
|
|
|
* 3.主动调用切换视频模式回调
|
|
|
*/
|
|
|
- (void)HDReceivedVideoQuality:(NSDictionary *)dict;
|
|
|
/**
|
|
|
* The New Method (3.13.0)
|
|
|
* @brief 房间包含的音视频线路 (会多次回调)
|
|
|
* @param dict 线路数据
|
|
|
* 线路数据 key(包含的键值) type(数据类型) description(描述)
|
|
|
* lineList(线路列表) array @[@"line1",@"line2"]
|
|
|
* indexNum(当前线路下标) integer 0
|
|
|
*
|
|
|
* 触发回调条件 1.初始化SDK登录成功后
|
|
|
* 2.主动调用切换清晰度方法
|
|
|
* 3.主动调用切换线路方法
|
|
|
* 4.主动调用切换音视频模式回调
|
|
|
*/
|
|
|
- (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
/** * The New Method (3.13.0) * @brief 是否开启音频模式 * @param hasAudio HAVE_AUDIO_LINE_TURE 有音频 HAVE_AUDIO_LINE_FALSE 无音频 * * 触发回调条件 1.初始化SDK登录成功后 */- (void)HDAudioMode:(HAVE_AUDIO_LINE)hasAudio;/** * The New Method (3.13.0) * @brief 房间所包含的清晰度 (会多次回调) * @param dict 清晰度数据 * 清晰度数据 key(包含的键值) type(数据类型) description(描述) * qualityList(清晰度列表) array @[HDQualityModel(清晰度详情),HDQualityModel(清晰度详情)] * currentQuality(当前清晰度) object HDQualityModel(清晰度详情) * * 触发回调条件 1.初始化SDK登录成功后 * 2.主动调用切换清晰度方法 * 3.主动调用切换视频模式回调 */- (void)HDReceivedVideoQuality:(NSDictionary *)dict;/** * The New Method (3.13.0) * @brief 房间包含的音视频线路 (会多次回调) * @param dict 线路数据 * 线路数据 key(包含的键值) type(数据类型) description(描述) * lineList(线路列表) array @[@"line1",@"line2"] * indexNum(当前线路下标) integer 0 * * 触发回调条件 1.初始化SDK登录成功后 * 2.主动调用切换清晰度方法 * 3.主动调用切换线路方法 * 4.主动调用切换音视频模式回调 */- (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
```
|
|
|
|
|
|
**RequestDataPlayBack.h** 新增api主动调用方法
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* The New Method (3.13.0)
|
|
|
* @brief 切换播放类型
|
|
|
* @param mode PLAY_MODE_TYEP_VIDEO 视频模式(默认)
|
|
|
* PLAY_MODE_TYEP_AUDIO 音频模式(当前回放包含音频线路)
|
|
|
* @param completion 切换结果
|
|
|
* { success 0 切换成功 -1切换失败 -2 切换频繁
|
|
|
* reason 错误原因 }
|
|
|
*
|
|
|
* 切换播放器类型 切换为音频,回调 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
* 切换为视频,回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict;
|
|
|
* - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
*
|
|
|
*/
|
|
|
- (void)changePlayMode:(PLAY_MODE_TYEP)mode completion:(void (^)(NSDictionary * results))completion;
|
|
|
/**
|
|
|
* The New Method (3.13.0)
|
|
|
* @brief 切换清晰度
|
|
|
* @param quality 清晰度
|
|
|
* @param completion 切换结果
|
|
|
* { success 0 切换成功 -1切换失败 -2 切换频繁
|
|
|
* reason 错误原因 }
|
|
|
*
|
|
|
* 切换清晰度回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict;
|
|
|
* - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
*/
|
|
|
- (void)changeQuality:(NSString *)quality completion:(void (^)(NSDictionary * results))completion;
|
|
|
/**
|
|
|
* The New Method (3.13.0)
|
|
|
* @brief 切换线路
|
|
|
* @param index 选择线路下标
|
|
|
* @param completion 切换结果
|
|
|
* { success 0 切换成功 -1切换失败 -2 切换频繁
|
|
|
* reason 错误原因 }
|
|
|
*
|
|
|
* 切换线路回调方法 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict;
|
|
|
*/
|
|
|
- (void)changeLine:(NSInteger)index completion:(void (^)(NSDictionary * results))completion;
|
|
|
/** * The New Method (3.13.0) * @brief 切换播放类型 * @param mode PLAY_MODE_TYEP_VIDEO 视频模式(默认) * PLAY_MODE_TYEP_AUDIO 音频模式(当前回放包含音频线路) * @param completion 切换结果 * { success 0 切换成功 -1切换失败 -2 切换频繁 * reason 错误原因 } * * 切换播放器类型 切换为音频,回调 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict; * 切换为视频,回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict; * - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict; * */- (void)changePlayMode:(PLAY_MODE_TYEP)mode completion:(void (^)(NSDictionary * results))completion;/** * The New Method (3.13.0) * @brief 切换清晰度 * @param quality 清晰度 * @param completion 切换结果 * { success 0 切换成功 -1切换失败 -2 切换频繁 * reason 错误原因 } * * 切换清晰度回调 - (void)HDReceivedVideoQuality:(NSDictionary *)dict; * - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict; */- (void)changeQuality:(NSString *)quality completion:(void (^)(NSDictionary * results))completion;/** * The New Method (3.13.0) * @brief 切换线路 * @param index 选择线路下标 * @param completion 切换结果 * { success 0 切换成功 -1切换失败 -2 切换频繁 * reason 错误原因 } * * 切换线路回调方法 - (void)HDReceivedVideoAudioLines:(NSDictionary *)dict; */- (void)changeLine:(NSInteger)index completion:(void (^)(NSDictionary * results))completion;
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -571,10 +353,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
**1.更新 “ 收到播放直播状态api ”,恢复成和3.12之前版本保持一致**
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 收到播放直播状态 0.正在直播 1.未开始直播
|
|
|
*/
|
|
|
- (void)getPlayStatue:(NSInteger)status;
|
|
|
/** * @brief 收到播放直播状态 0.正在直播 1.未开始直播 */- (void)getPlayStatue:(NSInteger)status;
|
|
|
```
|
|
|
|
|
|
#### **注:v3.12.2此次更新针对已对接3.12.0、3.12.1版本SDK,老版本的SDK无需修改。**
|
... | ... | @@ -597,28 +376,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
1. 支持抽奖2.0,新增显示抽奖名称、查看中奖用户、中奖信息收集等功能
|
|
|
|
|
|
```objc
|
|
|
代理方法(可选)
|
|
|
|
|
|
/**
|
|
|
* @brief 抽奖2.0 抽奖信息回调 (该功能需要单独开启)
|
|
|
* @param model NewLotteryMessageModel 详情
|
|
|
*/
|
|
|
- (void)HDOnLotteryWithModel:(NewLotteryMessageModel *)model;
|
|
|
|
|
|
主动调用(可选)
|
|
|
|
|
|
/**
|
|
|
* @brief 抽奖2.0 查询抽奖状态
|
|
|
*/
|
|
|
- (void)queryLotteryStatus;
|
|
|
/**
|
|
|
* @brief 抽奖2.0 提交中奖用户信息
|
|
|
* @param collectInfos 用户信息
|
|
|
* collectInfos = @[@{@"index":@(0),@"value":@""}];
|
|
|
* @param lotteryId 中奖订单ID (非必选)
|
|
|
* @param completion 请求结果回调
|
|
|
*/
|
|
|
- (void)commitLottery:(NSArray *)collectInfos lotteryId:(NSString *)lotteryId completion:(void (^)(BOOL success))completion;
|
|
|
代理方法(可选)/** * @brief 抽奖2.0 抽奖信息回调 (该功能需要单独开启) * @param model NewLotteryMessageModel 详情 */- (void)HDOnLotteryWithModel:(NewLotteryMessageModel *)model;主动调用(可选)/** * @brief 抽奖2.0 查询抽奖状态 */- (void)queryLotteryStatus;/** * @brief 抽奖2.0 提交中奖用户信息 * @param collectInfos 用户信息 * collectInfos = @[@{@"index":@(0),@"value":@""}]; * @param lotteryId 中奖订单ID (非必选) * @param completion 请求结果回调 */- (void)commitLottery:(NSArray *)collectInfos lotteryId:(NSString *)lotteryId completion:(void (^)(BOOL success))completion;
|
|
|
```
|
|
|
|
|
|
2. 优化直播播放逻辑
|
... | ... | @@ -630,21 +388,13 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
5. 播放器状态新增api
|
|
|
|
|
|
```objc
|
|
|
代理方法(可选)
|
|
|
/**
|
|
|
* @brief 播放器初始化完成 (会多次回调)
|
|
|
*/
|
|
|
- (void)HDMediaPlaybackIsPreparedToPlayDidChange:(NSDictionary *)dict;
|
|
|
代理方法(可选)/** * @brief 播放器初始化完成 (会多次回调) */- (void)HDMediaPlaybackIsPreparedToPlayDidChange:(NSDictionary *)dict;
|
|
|
```
|
|
|
|
|
|
6. 收到直播状态api更改
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 收到播放直播状态 1.正在直播 0.未开始直播
|
|
|
*/
|
|
|
- (void)getPlayStatue:(NSInteger)status;
|
|
|
注:原有直播状态 0 正在直播 1 未开始直播
|
|
|
/** * @brief 收到播放直播状态 1.正在直播 0.未开始直播 */- (void)getPlayStatue:(NSInteger)status;注:原有直播状态 0 正在直播 1 未开始直播
|
|
|
```
|
|
|
|
|
|
7. 切换线路及清晰度api变更
|
... | ... | @@ -652,40 +402,13 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
已删除
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 切换源,firRoadNum表示一共有几个线路,secRoadKeyArray表示每个线路对应的清晰度
|
|
|
*/
|
|
|
- (void)firRoad:(NSInteger)firRoadNum secRoadKeyArray:(NSArray *)secRoadKeyArray;
|
|
|
/**
|
|
|
* @brief 切换播放线路和清晰度
|
|
|
* firIndex表示第几个线路
|
|
|
* key表示该线路对应的secRoadKeyArray里面的元素
|
|
|
*/
|
|
|
- (void)switchToPlayUrlWithFirIndex:(NSInteger)firIndex key:(NSString *)key;
|
|
|
/** * @brief 切换源,firRoadNum表示一共有几个线路,secRoadKeyArray表示每个线路对应的清晰度 */- (void)firRoad:(NSInteger)firRoadNum secRoadKeyArray:(NSArray *)secRoadKeyArray;/** * @brief 切换播放线路和清晰度 * firIndex表示第几个线路 * key表示该线路对应的secRoadKeyArray里面的元素 */- (void)switchToPlayUrlWithFirIndex:(NSInteger)firIndex key:(NSString *)key;
|
|
|
```
|
|
|
|
|
|
新增
|
|
|
|
|
|
```objc
|
|
|
代理方法(可选)
|
|
|
|
|
|
/**
|
|
|
* @brief 房间的音视频线路
|
|
|
* @param model LineModel 详情
|
|
|
*/
|
|
|
- (void)HDReceivedVideoAudioLinesWithModel:(LineModel *)model;
|
|
|
|
|
|
主动调用(可选)
|
|
|
/**
|
|
|
* @brief 切换线路 监听HDReceivedVideoAudioLinesWithModel代理获取线路/清晰度等信息
|
|
|
* @param quality 清晰度 0-原画;200-流畅;300-标清;音频传空字符串
|
|
|
* @param stream 线路 从0开始,如两条线路则传0或1
|
|
|
* results { //切换结果
|
|
|
* success 0 切换成功 -1切换失败 -2 切换频繁
|
|
|
* reason 错误原因
|
|
|
* }
|
|
|
*/
|
|
|
- (void)changeLineWithQuality:(NSString *)quality Stream:(NSInteger)stream completion:(void (^)(NSDictionary * results))completion;
|
|
|
代理方法(可选)/** * @brief 房间的音视频线路 * @param model LineModel 详情 */- (void)HDReceivedVideoAudioLinesWithModel:(LineModel *)model;主动调用(可选)/** * @brief 切换线路 监听HDReceivedVideoAudioLinesWithModel代理获取线路/清晰度等信息 * @param quality 清晰度 0-原画;200-流畅;300-标清;音频传空字符串 * @param stream 线路 从0开始,如两条线路则传0或1 * results { //切换结果 * success 0 切换成功 -1切换失败 -2 切换频繁 * reason 错误原因 * } */- (void)changeLineWithQuality:(NSString *)quality Stream:(NSInteger)stream completion:(void (^)(NSDictionary * results))completion;
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -723,51 +446,25 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
1.直播打卡支持自定义打卡提示语
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 收到开始打卡
|
|
|
* dic {
|
|
|
"punchId": "punchId",
|
|
|
"expireTime": "2019-10-26 10:00:00",
|
|
|
"remainDuration": 124
|
|
|
"tips" // 没有提示语则不返回该字段 (新增)
|
|
|
}
|
|
|
* 当没有设置时长,即无过期时间时
|
|
|
* {
|
|
|
"punchId": "asasdasdasdasd",
|
|
|
"remainDuration": -1 //其中-1表示剩余无限时间。
|
|
|
}
|
|
|
*/
|
|
|
-(void)hdReceivedStartPunchWithDict:(NSDictionary *)dic;
|
|
|
/** * @brief 收到开始打卡 * dic { "punchId": "punchId", "expireTime": "2019-10-26 10:00:00", "remainDuration": 124 "tips" // 没有提示语则不返回该字段 (新增) } * 当没有设置时长,即无过期时间时 * { "punchId": "asasdasdasdasd", "remainDuration": -1 //其中-1表示剩余无限时间。 } */-(void)hdReceivedStartPunchWithDict:(NSDictionary *)dic;
|
|
|
```
|
|
|
|
|
|
2.直播新增用户进出直播间消息通知
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 用户进出直播间提示
|
|
|
* @param model RemindModel 详情
|
|
|
*/
|
|
|
- (void)HDUserRemindWithModel:(RemindModel *)model;
|
|
|
/** * @brief 用户进出直播间提示 * @param model RemindModel 详情 */- (void)HDUserRemindWithModel:(RemindModel *)model;
|
|
|
```
|
|
|
|
|
|
3.直播SDK新增用户禁言群发消息通知
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 禁言用户提示
|
|
|
* @param model BanChatModel 详情
|
|
|
*/
|
|
|
- (void)HDBanChatBroadcastWithModel:(BanChatModel *)model;
|
|
|
/** * @brief 禁言用户提示 * @param model BanChatModel 详情 */- (void)HDBanChatBroadcastWithModel:(BanChatModel *)model;
|
|
|
```
|
|
|
|
|
|
4.在线回放SDK新增播放状态api
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 视频准备播放
|
|
|
* @param dict 数据
|
|
|
*/
|
|
|
- (void)HDMediaPlaybackIsPreparedToPlayDidChange:(NSDictionary *)dict;
|
|
|
/** * @brief 视频准备播放 * @param dict 数据 */- (void)HDMediaPlaybackIsPreparedToPlayDidChange:(NSDictionary *)dict;
|
|
|
```
|
|
|
|
|
|
5.优化WiFi切换4G视频播放及自由翻页PPT闪动问题
|
... | ... | @@ -782,11 +479,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
2.新增视频加载的网络速度(直播、在线回放)
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 视频加载速度
|
|
|
* @param speed 视频加载速度字符串
|
|
|
*/
|
|
|
- (void)onBufferSpeed:(NSString *)speed;
|
|
|
/** * @brief 视频加载速度 * @param speed 视频加载速度字符串 */- (void)onBufferSpeed:(NSString *)speed;
|
|
|
```
|
|
|
|
|
|
3.直播demo随堂测、答题卡新增收起功能及逻辑优化
|
... | ... | @@ -794,45 +487,13 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
4.SDK新增回放播放器时间API(在线回放,离线回放)
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 播放器时间
|
|
|
* @param currentTime 当前时间
|
|
|
* @param totalTime 总时间
|
|
|
*/
|
|
|
- (void)HDPlayerCurrentTime:(NSTimeInterval)currentTime totalTime:(NSTimeInterval)totalTime;
|
|
|
/** * @brief 播放器时间 * @param currentTime 当前时间 * @param totalTime 总时间 */- (void)HDPlayerCurrentTime:(NSTimeInterval)currentTime totalTime:(NSTimeInterval)totalTime;
|
|
|
```
|
|
|
|
|
|
5.SDK新增视频播放器状态API(直播,在线回放,离线回放)
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 视频状态改变
|
|
|
* @param state
|
|
|
* HDMoviePlaybackStateStopped 播放停止
|
|
|
* HDMoviePlaybackStatePlaying 开始播放
|
|
|
* HDMoviePlaybackStatePaused 暂停播放
|
|
|
* HDMoviePlaybackStateInterrupted 播放间断
|
|
|
* HDMoviePlaybackStateSeekingForward 播放快进
|
|
|
* HDMoviePlaybackStateSeekingBackward 播放后退
|
|
|
*/
|
|
|
- (void)HDMoviePlayBackStateDidChange:(HDMoviePlaybackState)state;
|
|
|
/**
|
|
|
* @brief 视频加载状态
|
|
|
* @param state 播放状态
|
|
|
* HDMovieLoadStateUnknown 未知状态
|
|
|
* HDMovieLoadStatePlayable 视频未完成全部缓存,但已缓存的数据可以进行播放
|
|
|
* HDMovieLoadStatePlaythroughOK 完成缓存
|
|
|
* HDMovieLoadStateStalled 数据缓存已经停止,播放将暂停
|
|
|
*/
|
|
|
- (void)HDMovieLoadStateDidChange:(HDMovieLoadState)state;
|
|
|
/**
|
|
|
* @brief 视频播放完成原因
|
|
|
* @param reason 原因
|
|
|
* HDMovieFinishReasonPlaybackEnded 自然播放结束
|
|
|
* HDMovieFinishReasonUserExited 用户人为结束
|
|
|
* HDMovieFinishReasonPlaybackError 发生错误崩溃结束
|
|
|
*/
|
|
|
- (void)HDMoviePlayerPlaybackDidFinish:(HDMovieFinishReason)reason;
|
|
|
/** * @brief 视频状态改变 * @param state * HDMoviePlaybackStateStopped 播放停止 * HDMoviePlaybackStatePlaying 开始播放 * HDMoviePlaybackStatePaused 暂停播放 * HDMoviePlaybackStateInterrupted 播放间断 * HDMoviePlaybackStateSeekingForward 播放快进 * HDMoviePlaybackStateSeekingBackward 播放后退 */- (void)HDMoviePlayBackStateDidChange:(HDMoviePlaybackState)state;/** * @brief 视频加载状态 * @param state 播放状态 * HDMovieLoadStateUnknown 未知状态 * HDMovieLoadStatePlayable 视频未完成全部缓存,但已缓存的数据可以进行播放 * HDMovieLoadStatePlaythroughOK 完成缓存 * HDMovieLoadStateStalled 数据缓存已经停止,播放将暂停 */- (void)HDMovieLoadStateDidChange:(HDMovieLoadState)state;/** * @brief 视频播放完成原因 * @param reason 原因 * HDMovieFinishReasonPlaybackEnded 自然播放结束 * HDMovieFinishReasonUserExited 用户人为结束 * HDMovieFinishReasonPlaybackError 发生错误崩溃结束 */- (void)HDMoviePlayerPlaybackDidFinish:(HDMovieFinishReason)reason;
|
|
|
```
|
|
|
|
|
|
6.优化SDK ,提升稳定性
|
... | ... | @@ -865,14 +526,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
1. 新增直播删除广播;
|
|
|
|
|
|
```objc
|
|
|
//代理方法
|
|
|
/**
|
|
|
* @brief 删除广播
|
|
|
* @param dic 删除数据
|
|
|
* dic {action //操作 1.删除
|
|
|
id //广播id }
|
|
|
*/
|
|
|
- (void)broadcast_delete:(NSDictionary *)dic;
|
|
|
//代理方法/** * @brief 删除广播 * @param dic 删除数据 * dic {action //操作 1.删除 id //广播id } */- (void)broadcast_delete:(NSDictionary *)dic;
|
|
|
```
|
|
|
|
|
|
2. 直播新增播放失败自动切换线路重试机制;
|
... | ... | @@ -880,19 +534,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
3. 直播、回放、离线回放 新增 PPT支持切换模式;
|
|
|
|
|
|
```objc
|
|
|
//主动调用
|
|
|
/**
|
|
|
* @brief 主动调用方法 用于调整PPT缩放模式
|
|
|
* @param docFrame 文档的frame
|
|
|
* @param PPTScalingMode PPT缩放模式
|
|
|
* 1.一种是全部填充屏幕,可拉伸变形,
|
|
|
* 2.第二种是等比缩放,横向或竖向贴住边缘,另一方向可以留黑边,
|
|
|
* 3.第三种是等比缩放,横向或竖向贴住边缘,另一方向出边界,裁剪PPT,不可以留黑边,
|
|
|
* 4.根据直播间文档显示模式的返回值进行设置(推荐)(The New Method)
|
|
|
*
|
|
|
* 需要调整docFrame 请直接调用 - (void)changeDocFrame:(CGRect)docFrame;方法
|
|
|
*/
|
|
|
- (void)changeDocFrame:(CGRect)docFrame withPPTScalingMode:(NSInteger)PPTScalingMode;
|
|
|
//主动调用/** * @brief 主动调用方法 用于调整PPT缩放模式 * @param docFrame 文档的frame * @param PPTScalingMode PPT缩放模式 * 1.一种是全部填充屏幕,可拉伸变形, * 2.第二种是等比缩放,横向或竖向贴住边缘,另一方向可以留黑边, * 3.第三种是等比缩放,横向或竖向贴住边缘,另一方向出边界,裁剪PPT,不可以留黑边, * 4.根据直播间文档显示模式的返回值进行设置(推荐)(The New Method) * * 需要调整docFrame 请直接调用 - (void)changeDocFrame:(CGRect)docFrame;方法 */- (void)changeDocFrame:(CGRect)docFrame withPPTScalingMode:(NSInteger)PPTScalingMode;
|
|
|
```
|
|
|
|
|
|
4. 回放、离线回放demo新增手势拖动功能;
|
... | ... | @@ -927,29 +569,13 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
1. 新增回放线路切换;
|
|
|
|
|
|
```objc
|
|
|
//代理方法
|
|
|
/**
|
|
|
*接收到播放线路 例:int值 2 代表两条 changeLineWithNum传0或1
|
|
|
*/
|
|
|
-(void)numberOfReceivedLines:(NSInteger)linesCount;
|
|
|
//调用方法
|
|
|
/**
|
|
|
* @brief 切换线路
|
|
|
* index 传入numberOfReceivedLines的返回值 如:返回2 则传0或1
|
|
|
* results:
|
|
|
success 0 切换成功 -1切换品失败 -2 切换频繁
|
|
|
currentIndex 当前播放线路
|
|
|
*/
|
|
|
- (void)changeLineWithNum:(NSInteger)index completion:(void (^)(NSDictionary * results))completion;
|
|
|
//代理方法/** *接收到播放线路 例:int值 2 代表两条 changeLineWithNum传0或1 */-(void)numberOfReceivedLines:(NSInteger)linesCount;//调用方法/** * @brief 切换线路 * index 传入numberOfReceivedLines的返回值 如:返回2 则传0或1 * results: success 0 切换成功 -1切换品失败 -2 切换频繁 currentIndex 当前播放线路 */- (void)changeLineWithNum:(NSInteger)index completion:(void (^)(NSDictionary * results))completion;
|
|
|
```
|
|
|
|
|
|
2. 新增跑马灯功能;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 跑马灯信息,需要开启跑马灯功能且iOS 9.0以上
|
|
|
*/
|
|
|
-(void)receivedMarqueeInfo:(NSDictionary *)dic;
|
|
|
/** * @brief 跑马灯信息,需要开启跑马灯功能且iOS 9.0以上*/-(void)receivedMarqueeInfo:(NSDictionary *)dic;
|
|
|
```
|
|
|
|
|
|
3. 新增课件水印功能;
|
... | ... | @@ -989,11 +615,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
1. 新增聊天禁言删除历史记录;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 收到聊天禁言并删除聊天记录
|
|
|
* viewerId 禁言用户id,是自己的话别删除聊天历史,其他人需要删除该用户的聊天
|
|
|
*/
|
|
|
-(void)onBanDeleteChat:(NSDictionary *) viewerDic;
|
|
|
/** * @brief 收到聊天禁言并删除聊天记录 * viewerId 禁言用户id,是自己的话别删除聊天历史,其他人需要删除该用户的聊天 */-(void)onBanDeleteChat:(NSDictionary *) viewerDic;
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -1011,18 +633,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
1. 新增获取在线讲师和助教列表方法;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
收到老师列表
|
|
|
teachers = (
|
|
|
{
|
|
|
id = "";//老师id
|
|
|
ip = "";//IP地址
|
|
|
name = "";老师昵称
|
|
|
role = teacher;//角色
|
|
|
}
|
|
|
);
|
|
|
*/
|
|
|
-(void)onOnlineTeachers:(NSDictionary *)dic;
|
|
|
/**收到老师列表 teachers = ( { id = "";//老师id ip = "";//IP地址 name = "";老师昵称 role = teacher;//角色 } );*/-(void)onOnlineTeachers:(NSDictionary *)dic;
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -1030,17 +641,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
2. 新增获取直播间设置方法;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 房间设置信息
|
|
|
* dic{
|
|
|
"allow_chat" = true;//是否允许聊天
|
|
|
"allow_question" = true;//是否允许问答
|
|
|
"room_base_user_count" = 0;//房间基础在线人数
|
|
|
"source_type" = 0;//对应receivedSwitchSource方法的source_type
|
|
|
}
|
|
|
*ps:当房间类型没有聊天或者问答时,对应的字段默认为true
|
|
|
*/
|
|
|
-(void)roomSettingInfo:(NSDictionary *)dic;
|
|
|
/** * @brief 房间设置信息 * dic{ "allow_chat" = true;//是否允许聊天 "allow_question" = true;//是否允许问答 "room_base_user_count" = 0;//房间基础在线人数 "source_type" = 0;//对应receivedSwitchSource方法的source_type} *ps:当房间类型没有聊天或者问答时,对应的字段默认为true*/-(void)roomSettingInfo:(NSDictionary *)dic;
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -1048,11 +649,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
3. demo新增视频截图方法;
|
|
|
|
|
|
```objc
|
|
|
//获取视频截图
|
|
|
- (void)thumbnailImageAtCurrentTime {
|
|
|
UIImage *image = [self.requestData.ijkPlayer thumbnailImageAtCurrentTime];
|
|
|
NSLog(@"获取视频截图%@",image);
|
|
|
}
|
|
|
//获取视频截图- (void)thumbnailImageAtCurrentTime { UIImage *image = [self.requestData.ijkPlayer thumbnailImageAtCurrentTime]; NSLog(@"获取视频截图%@",image);}
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -1060,10 +657,7 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
4. demo新增多个回放切换方法;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
切换回放,需要重新配置参数
|
|
|
*/
|
|
|
- (void)changeVideo;
|
|
|
/** 切换回放,需要重新配置参数 */- (void)changeVideo;
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -1077,93 +671,19 @@ typedef NS_ENUM(NSUInteger, HAVE_AUDIO_LINE) { |
|
|
1.新增打卡功能
|
|
|
|
|
|
```objc
|
|
|
监听方法:
|
|
|
/**
|
|
|
* @brief 收到开始打卡
|
|
|
* dic {
|
|
|
"punchId": "punchId",
|
|
|
"expireTime": "2019-10-26 10:00:00",
|
|
|
"remainDuration": 124
|
|
|
}
|
|
|
* 当没有设置时长,即无过期时间时
|
|
|
* {
|
|
|
"punchId": "asasdasdasdasd",
|
|
|
"remainDuration": -1 //其中-1表示剩余无限时间。
|
|
|
}
|
|
|
*/
|
|
|
-(void)hdReceivedStartPunchWithDict:(NSDictionary *)dic;
|
|
|
|
|
|
/**
|
|
|
* @brief 收到结束打卡
|
|
|
* dic{
|
|
|
"punchId": "punchId"
|
|
|
}
|
|
|
*/
|
|
|
-(void)hdReceivedEndPunchWithDict:(NSDictionary *)dic;
|
|
|
|
|
|
/**
|
|
|
* @brief 收到打卡提交结果
|
|
|
* dic{
|
|
|
"success": true,
|
|
|
"data": {
|
|
|
"isRepeat": false//是否重复提交打卡
|
|
|
}
|
|
|
}
|
|
|
*/
|
|
|
-(void)hdReceivedPunchResultWithDict:(NSDictionary *)dic;
|
|
|
|
|
|
主动方法:
|
|
|
/**
|
|
|
查询打卡信息
|
|
|
*/
|
|
|
- (void)hdInquirePunchInformation;
|
|
|
/**
|
|
|
提交打卡
|
|
|
@param punchId 打卡id
|
|
|
*/
|
|
|
- (void)hdCommitPunchWithPunchId:(NSString *)punchId;
|
|
|
监听方法:/** * @brief 收到开始打卡 * dic { "punchId": "punchId", "expireTime": "2019-10-26 10:00:00", "remainDuration": 124 } * 当没有设置时长,即无过期时间时 * { "punchId": "asasdasdasdasd", "remainDuration": -1 //其中-1表示剩余无限时间。 } */-(void)hdReceivedStartPunchWithDict:(NSDictionary *)dic;/** * @brief 收到结束打卡 * dic{ "punchId": "punchId" } */-(void)hdReceivedEndPunchWithDict:(NSDictionary *)dic;/** * @brief 收到打卡提交结果 * dic{ "success": true, "data": { "isRepeat": false//是否重复提交打卡 } } */-(void)hdReceivedPunchResultWithDict:(NSDictionary *)dic;主动方法:/**查询打卡信息*/- (void)hdInquirePunchInformation;/**提交打卡@param punchId 打卡id*/- (void)hdCommitPunchWithPunchId:(NSString *)punchId;
|
|
|
```
|
|
|
|
|
|
2.新增视频状态
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 视频状态
|
|
|
* rseult playing/paused/loading
|
|
|
*/
|
|
|
-(void)videoStateChangeWithString:(NSString *) result;
|
|
|
/** * @brief 视频状态 * rseult playing/paused/loading */-(void)videoStateChangeWithString:(NSString *) result;
|
|
|
```
|
|
|
|
|
|
3.随堂测
|
|
|
|
|
|
```objc
|
|
|
直播观看
|
|
|
/**
|
|
|
* @brief 获取随堂测
|
|
|
* @param practiceId 随堂测ID(没有传@"")
|
|
|
*/
|
|
|
-(void)getPracticeInformation:(NSString *)practiceId;
|
|
|
ps:原有获取随堂测方法已删除
|
|
|
|
|
|
注意:
|
|
|
修改前:
|
|
|
停止随堂测后进入直播间者获取不到统计排名
|
|
|
修改后:
|
|
|
停止随堂测后进入直播者可以获取统计排名
|
|
|
|
|
|
回放观看
|
|
|
主动方法
|
|
|
/**
|
|
|
获取随堂测信息
|
|
|
*/
|
|
|
-(void)getPracticeInformation;
|
|
|
监听方法
|
|
|
/**
|
|
|
* @brief 接收到随堂测
|
|
|
* rseultDic 随堂测内容
|
|
|
*/
|
|
|
-(void)receivePracticeWithDic:(NSDictionary *) resultDic;
|
|
|
|
|
|
直播观看/** * @brief 获取随堂测 * @param practiceId 随堂测ID(没有传@"") */-(void)getPracticeInformation:(NSString *)practiceId;ps:原有获取随堂测方法已删除注意:修改前:停止随堂测后进入直播间者获取不到统计排名修改后:停止随堂测后进入直播者可以获取统计排名回放观看主动方法/** 获取随堂测信息 */-(void)getPracticeInformation;监听方法/** * @brief 接收到随堂测 * rseultDic 随堂测内容 */-(void)receivePracticeWithDic:(NSDictionary *) resultDic;
|
|
|
```
|
|
|
|
|
|
4.文档组件本地化,提升加载速度
|
... | ... | @@ -1195,12 +715,7 @@ ps:原有获取随堂测方法已删除 |
|
|
1.新增修改文档背景色方法
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
改变文档背景颜色
|
|
|
|
|
|
@param hexColor 字符串,传颜色的HEXColor 如:#000000
|
|
|
*/
|
|
|
- (void)changeDocWebColor:(NSString *)hexColor9
|
|
|
/** 改变文档背景颜色 @param hexColor 字符串,传颜色的HEXColor 如:#000000 */- (void)changeDocWebColor:(NSString *)hexColor9
|
|
|
```
|
|
|
|
|
|
2.修复文档切换大小异常
|
... | ... | @@ -1237,12 +752,7 @@ ps:原有获取随堂测方法已删除 |
|
|
2. 新增离线回放接收到文档加载状态
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 文档加载状态(The new method)
|
|
|
* index
|
|
|
* 2 非动画文档加载完成
|
|
|
*/
|
|
|
- (void)docLoadCompleteWithIndex:(NSInteger)index;
|
|
|
/** * @brief 文档加载状态(The new method) * index * 2 非动画文档加载完成 */- (void)docLoadCompleteWithIndex:(NSInteger)index;
|
|
|
```
|
|
|
|
|
|
3. 修复心跳上报问题
|
... | ... | @@ -1254,128 +764,73 @@ ps:原有获取随堂测方法已删除 |
|
|
1. 接收到文档加载状态
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 文档加载状态(The new method)
|
|
|
* index
|
|
|
* 0 文档组件初始化完成
|
|
|
* 1 动画文档加载完成
|
|
|
* 2 非动画文档加载完成
|
|
|
*/
|
|
|
- (void)docLoadCompleteWithIndex:(NSInteger)index;
|
|
|
/** * @brief 文档加载状态(The new method) * index * 0 文档组件初始化完成 * 1 动画文档加载完成 * 2 非动画文档加载完成 */- (void)docLoadCompleteWithIndex:(NSInteger)index;
|
|
|
```
|
|
|
|
|
|
2. 接收到随堂测
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 接收到随堂测(The new method)
|
|
|
* rseultDic 随堂测内容
|
|
|
*/
|
|
|
-(void)receivePracticeWithDic:(NSDictionary *) resultDic;
|
|
|
/** * @brief 接收到随堂测(The new method) * rseultDic 随堂测内容 */-(void)receivePracticeWithDic:(NSDictionary *) resultDic;
|
|
|
```
|
|
|
|
|
|
3. 接收到随堂测提交结果
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 随堂测提交结果(The new method)
|
|
|
* rseultDic 提交结果,调用commitPracticeWithPracticeId:(NSString *)practiceId options:(NSArray *)options后执行
|
|
|
*/
|
|
|
-(void)practiceSubmitResultsWithDic:(NSDictionary *) resultDic;
|
|
|
/** * @brief 随堂测提交结果(The new method) * rseultDic 提交结果,调用commitPracticeWithPracticeId:(NSString *)practiceId options:(NSArray *)options后执行 */-(void)practiceSubmitResultsWithDic:(NSDictionary *) resultDic;
|
|
|
```
|
|
|
|
|
|
4. 接收到随堂测统计结果
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 随堂测统计结果(The new method)
|
|
|
* rseultDic 统计结果,调用getPracticeStatisWithPracticeId:(NSString *)practiceId后执行
|
|
|
*/
|
|
|
-(void)practiceStatisResultsWithDic:(NSDictionary *) resultDic;
|
|
|
/** * @brief 随堂测统计结果(The new method) * rseultDic 统计结果,调用getPracticeStatisWithPracticeId:(NSString *)practiceId后执行 */-(void)practiceStatisResultsWithDic:(NSDictionary *) resultDic;
|
|
|
```
|
|
|
|
|
|
5. 接收到随堂测排名结果
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 随堂测排名结果(The new method)
|
|
|
* rseultDic 排名结果,调用getPracticeRankWithPracticeId:(NSString *)practiceId后执行
|
|
|
*/
|
|
|
-(void)practiceRankResultsWithDic:(NSDictionary *) resultDic;
|
|
|
/** * @brief 随堂测排名结果(The new method) * rseultDic 排名结果,调用getPracticeRankWithPracticeId:(NSString *)practiceId后执行 */-(void)practiceRankResultsWithDic:(NSDictionary *) resultDic;
|
|
|
```
|
|
|
|
|
|
6. 接收到停止随堂测
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 停止随堂测(The new method)
|
|
|
* rseultDic 结果
|
|
|
*/
|
|
|
-(void)practiceStopWithDic:(NSDictionary *) resultDic;
|
|
|
/** * @brief 停止随堂测(The new method) * rseultDic 结果 */-(void)practiceStopWithDic:(NSDictionary *) resultDic;
|
|
|
```
|
|
|
|
|
|
7. 接收到关闭随堂测
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 关闭随堂测(The new method)
|
|
|
* rseultDic 结果
|
|
|
*/
|
|
|
-(void)practiceCloseWithDic:(NSDictionary *) resultDic;
|
|
|
/** * @brief 关闭随堂测(The new method) * rseultDic 结果 */-(void)practiceCloseWithDic:(NSDictionary *) resultDic;
|
|
|
```
|
|
|
|
|
|
8. 接收到视频状态
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 视频状态(The new method)
|
|
|
* rseult playing/paused
|
|
|
*/
|
|
|
-(void)videoStateChangeWithString:(NSString *) result;
|
|
|
/** * @brief 视频状态(The new method) * rseult playing/paused */-(void)videoStateChangeWithString:(NSString *) result;
|
|
|
```
|
|
|
|
|
|
9. 主动提交随堂测
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 提交随堂测(The new method)
|
|
|
* @param practiceId 随堂测ID
|
|
|
* @param options 选项ID
|
|
|
*/
|
|
|
- (void)commitPracticeWithPracticeId:(NSString *)practiceId options:(NSArray *)options;
|
|
|
/** * @brief 提交随堂测(The new method) * @param practiceId 随堂测ID * @param options 选项ID */- (void)commitPracticeWithPracticeId:(NSString *)practiceId options:(NSArray *)options;
|
|
|
```
|
|
|
|
|
|
10. 主动获取随堂测统计信息
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 获取随堂测统计信息(可多次调用)(The new method)
|
|
|
* @param practiceId 随堂测ID
|
|
|
*/
|
|
|
-(void)getPracticeStatisWithPracticeId:(NSString *)practiceId;
|
|
|
/** * @brief 获取随堂测统计信息(可多次调用)(The new method) * @param practiceId 随堂测ID */-(void)getPracticeStatisWithPracticeId:(NSString *)practiceId;
|
|
|
```
|
|
|
|
|
|
11. 主动获取随堂测排名
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 获取随堂测排名(可多次调用)(The new method)
|
|
|
* @param practiceId 随堂测ID
|
|
|
*/
|
|
|
-(void)getPracticeRankWithPracticeId:(NSString *)practiceId;
|
|
|
/** * @brief 获取随堂测排名(可多次调用)(The new method) * @param practiceId 随堂测ID */-(void)getPracticeRankWithPracticeId:(NSString *)practiceId;
|
|
|
```
|
|
|
|
|
|
12. 回放新增文档加载状态
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 文档加载状态(The new method)
|
|
|
* index
|
|
|
* 0 文档组件初始化完成
|
|
|
* 1 动画文档加载完成
|
|
|
* 2 非动画文档加载完成
|
|
|
*/
|
|
|
- (void)docLoadCompleteWithIndex:(NSInteger)index;
|
|
|
/** * @brief 文档加载状态(The new method) * index * 0 文档组件初始化完成 * 1 动画文档加载完成 * 2 非动画文档加载完成 */- (void)docLoadCompleteWithIndex:(NSInteger)index;
|
|
|
```
|
|
|
|
|
|
## v3.1.0
|
... | ... | @@ -1385,24 +840,13 @@ ps:原有获取随堂测方法已删除 |
|
|
1. 获取观看者自身的信息
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 服务器端给自己设置的信息(The new method)
|
|
|
* viewerId 服务器端给自己设置的UserId
|
|
|
* groupId 分组id
|
|
|
* name 用户名
|
|
|
*/
|
|
|
-(void)setMyViewerInfo:(NSDictionary *) infoDic;
|
|
|
/** * @brief 服务器端给自己设置的信息(The new method) * viewerId 服务器端给自己设置的UserId * groupId 分组id * name 用户名 */-(void)setMyViewerInfo:(NSDictionary *) infoDic;
|
|
|
```
|
|
|
|
|
|
2. 聊天审核
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 聊天审核(The new method)
|
|
|
* status 聊天消息的状态 0 显示 1 不不显示
|
|
|
* chatIds 聊天消息的id列列表
|
|
|
*/
|
|
|
-(void)chatLogManage:(NSDictionary *) manageDic;
|
|
|
/** * @brief 聊天审核(The new method) * status 聊天消息的状态 0 显示 1 不不显示 * chatIds 聊天消息的id列列表 */-(void)chatLogManage:(NSDictionary *) manageDic;
|
|
|
```
|
|
|
|
|
|
3. 敏感词过滤
|
... | ... | @@ -1416,9 +860,7 @@ ps:原有获取随堂测方法已删除 |
|
|
5. 新增直播分组功能,通过groupId可以对学员进行分组
|
|
|
|
|
|
```
|
|
|
登录时可选传groupId
|
|
|
parameter.groupid = self.groupid;//分组id
|
|
|
聊天和问答返回信息新增groupid字段
|
|
|
登录时可选传groupIdparameter.groupid = self.groupid;//分组id聊天和问答返回信息新增groupid字段
|
|
|
```
|
|
|
|
|
|
6. 连麦支持主持人客户端
|
... | ... | @@ -1426,16 +868,7 @@ ps:原有获取随堂测方法已删除 |
|
|
7. SDK新增聊天禁言及解禁回调
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 收到聊天禁言(The new method)
|
|
|
* mode 禁言类型 1:个人禁言 2:全员禁言
|
|
|
*/
|
|
|
-(void)onBanChat:(NSDictionary *) modeDic;
|
|
|
/**
|
|
|
* @brief 收到解除禁言事件(The new method)
|
|
|
* mode 禁言类型 1:个人禁言 2:全员禁言
|
|
|
*/
|
|
|
-(void)onUnBanChat:(NSDictionary *) modeDic;
|
|
|
/** * @brief 收到聊天禁言(The new method) * mode 禁言类型 1:个人禁言 2:全员禁言 */-(void)onBanChat:(NSDictionary *) modeDic;/** * @brief 收到解除禁言事件(The new method) * mode 禁言类型 1:个人禁言 2:全员禁言 */-(void)onUnBanChat:(NSDictionary *) modeDic;
|
|
|
```
|
|
|
|
|
|
8. Demo 新增签到 问卷 答题卡 抽奖 连麦 公告 私聊功能
|
... | ... | @@ -1451,22 +884,13 @@ ps:原有获取随堂测方法已删除 |
|
|
1. 视频或者文档大窗
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 视频或者文档大窗(The new method)
|
|
|
* isMain 1为视频为主,0为文档为主"
|
|
|
*/
|
|
|
- (void)onSwitchVideoDoc:(BOOL)isMain;
|
|
|
/** * @brief 视频或者文档大窗(The new method) * isMain 1为视频为主,0为文档为主" */- (void)onSwitchVideoDoc:(BOOL)isMain;
|
|
|
```
|
|
|
|
|
|
2. 新demo3.0
|
|
|
|
|
|
```english
|
|
|
1:本产品作为一个demo供参考
|
|
|
2:功能模块划分很详细了,每个模块的功能和UI都已经单独封装!
|
|
|
3:项目入口为CCEntranceViewController 分为观看直播入口和观看回放入口,入口文件见左侧文件夹已经为您分别使用中/英文两种语言命名
|
|
|
4:当您只需要使用某一个功能的时候只需要拷贝走对应的文件夹以及直播或者回放控制器的代码就好,对应的代码我们已经在selection中使用mark进行了标注(selection在当前路径的正上方, .m文件的旁边)
|
|
|
5:如果遇到问题请先测试demo,如果demo也有问题请联系技术支持人员(请带上系统版本号,手机型号,SDK版本号,问题描述,有日志带上日志)
|
|
|
6:新demo3.0文档直播间文档显示模式建议设置为适合窗口
|
|
|
1:本产品作为一个demo供参考 2:功能模块划分很详细了,每个模块的功能和UI都已经单独封装! 3:项目入口为CCEntranceViewController 分为观看直播入口和观看回放入口,入口文件见左侧文件夹已经为您分别使用中/英文两种语言命名 4:当您只需要使用某一个功能的时候只需要拷贝走对应的文件夹以及直播或者回放控制器的代码就好,对应的代码我们已经在selection中使用mark进行了标注(selection在当前路径的正上方, .m文件的旁边) 5:如果遇到问题请先测试demo,如果demo也有问题请联系技术支持人员(请带上系统版本号,手机型号,SDK版本号,问题描述,有日志带上日志) 6:新demo3.0文档直播间文档显示模式建议设置为适合窗口
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -1477,31 +901,13 @@ ps:原有获取随堂测方法已删除 |
|
|
1. 新增学员踢出类型;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 收到踢出消息(change)
|
|
|
kick_out_type
|
|
|
10 在允许重复登录前提下,后进入者会登录会踢出先前登录者
|
|
|
20 讲师、助教、主持人通过页面踢出按钮踢出用户
|
|
|
*/
|
|
|
- (void)onKickOut:(NSDictionary *)dictionary;
|
|
|
/*** @brief 收到踢出消息(change)kick_out_type10 在允许重复登录前提下,后进入者会登录会踢出先前登录者20 讲师、助教、主持人通过页面踢出按钮踢出用户*/- (void)onKickOut:(NSDictionary *)dictionary;
|
|
|
```
|
|
|
|
|
|
2. 文档模式新增切换数据源响应事件;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 客户端关闭摄像头(The new method)
|
|
|
数据源类型 数据源值 数据源类型描述 数据源类型描述值
|
|
|
source_type 0 source_type_desc 数据源类型:数据源未知,在直播未开始、非文档直播间或使用低版本客户端直播时会返回;
|
|
|
source_type 10 source_type_desc 数据源类型:摄像头打开
|
|
|
source_type 11 source_type_desc 数据源类型:摄像头关闭
|
|
|
source_type 20 source_type_desc 数据源类型:图片
|
|
|
source_type 30 source_type_desc 数据源类型:插播视频
|
|
|
source_type 40 source_type_desc 数据源类型:区域捕获
|
|
|
source_type 50 source_type_desc 数据源类型:桌面共享
|
|
|
source_type 60 source_type_desc 数据源类型:自定义场景
|
|
|
注:该功能仅限文档直播间使用,主播客户端需使用4.9.0以上版本;
|
|
|
- (void)receivedSwitchSource:(NSDictionary *)dic;
|
|
|
/*** @brief 客户端关闭摄像头(The new method)数据源类型 数据源值 数据源类型描述 数据源类型描述值source_type 0 source_type_desc 数据源类型:数据源未知,在直播未开始、非文档直播间或使用低版本客户端直播时会返回;source_type 10 source_type_desc 数据源类型:摄像头打开source_type 11 source_type_desc 数据源类型:摄像头关闭source_type 20 source_type_desc 数据源类型:图片source_type 30 source_type_desc 数据源类型:插播视频source_type 40 source_type_desc 数据源类型:区域捕获source_type 50 source_type_desc 数据源类型:桌面共享source_type 60 source_type_desc 数据源类型:自定义场景注:该功能仅限文档直播间使用,主播客户端需使用4.9.0以上版本;- (void)receivedSwitchSource:(NSDictionary *)dic;
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -1513,65 +919,31 @@ source_type 60 source_type_desc 数据源类型:自定义场景 |
|
|
1. 切换当前的文档模式;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 切换当前的文档模式(The new method)
|
|
|
* 1.切换至跟随模式(默认值)值为0,
|
|
|
* 2.切换至自由模式;值为1,
|
|
|
*/
|
|
|
- (void)changeDocMode:(NSInteger)mode;
|
|
|
/** * @brief 切换当前的文档模式(The new method) * 1.切换至跟随模式(默认值)值为0, * 2.切换至自由模式;值为1, */- (void)changeDocMode:(NSInteger)mode;
|
|
|
```
|
|
|
|
|
|
2. 获取所有文档列表(代理方法);
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 获取所有文档列表(The new method)
|
|
|
*/
|
|
|
- (void)receivedDocsList:(NSDictionary *)listDic;
|
|
|
/** * @brief 获取所有文档列表(The new method) */- (void)receivedDocsList:(NSDictionary *)listDic;
|
|
|
```
|
|
|
|
|
|
3. 跳转到指定文档页;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 跳转到指定文档页(自由模式才生效)(The new method)
|
|
|
* @param docId 文档的docId
|
|
|
* @param pageIndex 跳转的页数
|
|
|
*/
|
|
|
- (void)changePageToNumWithDocId:(NSString *)docId pageIndex:(NSInteger)pageIndex;
|
|
|
/** * @brief 跳转到指定文档页(自由模式才生效)(The new method) * @param docId 文档的docId * @param pageIndex 跳转的页数 */- (void)changePageToNumWithDocId:(NSString *)docId pageIndex:(NSInteger)pageIndex;
|
|
|
```
|
|
|
|
|
|
4. 离线回放CCR文件的解析方法;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 离线回放CCR文件的解析方法(The new method)
|
|
|
* @param dst 需要进行解析的CCR文件.
|
|
|
* @param dir 解析后输出目录, =NULL则解析到当前目录.
|
|
|
* @return 0-成功
|
|
|
* errcode:
|
|
|
-1 -打开输入文件(dst)失败;
|
|
|
-6 -dst存在但并不是加密文件格式;
|
|
|
*/
|
|
|
- (int)DecompressZipWithDec:(NSString *)dst dir:(NSString *)dir;
|
|
|
|
|
|
例子
|
|
|
//旧的解压方法
|
|
|
[SSZipArchive unzipFileAtPath:srcPath toDestination:destination];
|
|
|
//新的解析方法
|
|
|
_offlinePlayBack = [[OfflinePlayBack alloc] init];
|
|
|
int zipDec = [_offlinePlayBack DecompressZipWithDec:srcPath dir:destination];
|
|
|
|
|
|
注:若使用离线加密功能,必须使用此方法进行解压,否则会导致无法播放。
|
|
|
/** * @brief 离线回放CCR文件的解析方法(The new method) * @param dst 需要进行解析的CCR文件. * @param dir 解析后输出目录, =NULL则解析到当前目录. * @return 0-成功 * errcode: -1 -打开输入文件(dst)失败; -6 -dst存在但并不是加密文件格式; */- (int)DecompressZipWithDec:(NSString *)dst dir:(NSString *)dir;例子//旧的解压方法[SSZipArchive unzipFileAtPath:srcPath toDestination:destination];//新的解析方法_offlinePlayBack = [[OfflinePlayBack alloc] init];int zipDec = [_offlinePlayBack DecompressZipWithDec:srcPath dir:destination];注:若使用离线加密功能,必须使用此方法进行解压,否则会导致无法播放。
|
|
|
```
|
|
|
|
|
|
5. 离线回放开始和结束时间;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 回放的开始时间和结束时间(The new method)
|
|
|
*/
|
|
|
-(void)liveInfo:(NSDictionary *)dic;
|
|
|
/** * @brief 回放的开始时间和结束时间(The new method) */-(void)liveInfo:(NSDictionary *)dic;
|
|
|
```
|
|
|
|
|
|
## v2.7.2
|
... | ... | @@ -1581,18 +953,13 @@ int zipDec = [_offlinePlayBack DecompressZipWithDec:srcPath dir:destination]; |
|
|
1. 优化文档展示生命周期;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* 文档视图在直播间未开始直播时不创建
|
|
|
* 文档视图在直播间结束直播时将销毁
|
|
|
*/
|
|
|
/*** 文档视图在直播间未开始直播时不创建* 文档视图在直播间结束直播时将销毁*/
|
|
|
```
|
|
|
|
|
|
2. 修复demo离线下载iOS 12兼容性问题;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* 修复iOS 12断点续传闪退问题
|
|
|
*/
|
|
|
/*** 修复iOS 12断点续传闪退问题*/
|
|
|
```
|
|
|
|
|
|
## v2.7.1
|
... | ... | @@ -1602,20 +969,13 @@ int zipDec = [_offlinePlayBack DecompressZipWithDec:srcPath dir:destination]; |
|
|
1. 新增问卷统计功能;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 获取问卷统计(The new method)
|
|
|
*/
|
|
|
- (void)questionnaireStaticsInformation:(NSDictionary *)staticsDic;
|
|
|
/*** @brief 获取问卷统计(The new method)*/- (void)questionnaireStaticsInformation:(NSDictionary *)staticsDic;
|
|
|
```
|
|
|
|
|
|
2. 新增禁用ppt滚动属性;
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief PPT是否允许滚动
|
|
|
*/
|
|
|
@property(nonatomic, assign)BOOL pptInteractionEnabled;
|
|
|
|
|
|
/*** @brief PPT是否允许滚动*/@property(nonatomic, assign)BOOL pptInteractionEnabled;
|
|
|
```
|
|
|
|
|
|
3. 优化回放信息加载方式;
|
... | ... | @@ -1632,57 +992,31 @@ int zipDec = [_offlinePlayBack DecompressZipWithDec:srcPath dir:destination]; |
|
|
3. 双击ppt事件代理方法
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 双击ppt(The new method)
|
|
|
*/
|
|
|
- (void)doubleCllickPPTView;
|
|
|
/*** @brief 双击ppt(The new method)*/- (void)doubleCllickPPTView;
|
|
|
```
|
|
|
|
|
|
4. 新增自定义参数viewercustominfo
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* json格式字符串,可选,自定义用户信息,该信息会记录在用户访问记录中,用于统计分析使用(长度不能超过1000个字符,若直播间启用接口验证则该参数无效)如果不需要的话就不要传值
|
|
|
* 格式如下:
|
|
|
* viewercustominfo: '{"exportInfos": [ {"key": "城市", "value": "北京"}, {"key": "姓名", "value": "哈哈"}]}'
|
|
|
*/
|
|
|
@property(nonatomic, copy)NSString *viewercustominfo;
|
|
|
/*** json格式字符串,可选,自定义用户信息,该信息会记录在用户访问记录中,用于统计分析使用(长度不能超过1000个字符,若直播间启用接口验证则该参数无效)如果不需要的话就不要传值* 格式如下:* viewercustominfo: '{"exportInfos": [ {"key": "城市", "value": "北京"}, {"key": "姓名", "value": "哈哈"}]}'*/@property(nonatomic, copy)NSString *viewercustominfo;
|
|
|
```
|
|
|
|
|
|
5. 新增文档按直播间设置的模式展示
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief PPT适配模式分为四种,
|
|
|
* 1.第一种是全部填充屏幕,可拉伸变形,
|
|
|
* 2.第二种是等比缩放,横向或竖向贴住边缘,另一方向可以留黑边,
|
|
|
* 3.第三种是等比缩放,横向或竖向贴住边缘,另一方向出边界,裁剪PPT,不可以留黑边
|
|
|
* 4.根据直播间文档显示模式的返回值进行设置(推荐)(The New Method)
|
|
|
*/
|
|
|
@property(assign, nonatomic)NSInteger PPTScalingMode;//PPT适配方式,含义见上面
|
|
|
/*** @brief PPT适配模式分为四种,* 1.第一种是全部填充屏幕,可拉伸变形,* 2.第二种是等比缩放,横向或竖向贴住边缘,另一方向可以留黑边,* 3.第三种是等比缩放,横向或竖向贴住边缘,另一方向出边界,裁剪PPT,不可以留黑边* 4.根据直播间文档显示模式的返回值进行设置(推荐)(The New Method)*/@property(assign, nonatomic)NSInteger PPTScalingMode;//PPT适配方式,含义见上面
|
|
|
```
|
|
|
|
|
|
6. 新增回放的开始时间和结束时间
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 回放的开始时间和结束时间(The new method)
|
|
|
*/
|
|
|
-(void)liveInfo:(NSDictionary *)dic;
|
|
|
/*** @brief 回放的开始时间和结束时间(The new method)*/-(void)liveInfo:(NSDictionary *)dic;
|
|
|
```
|
|
|
|
|
|
7. 新增直播间封禁和解禁代理
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 直播间被禁(The new method)
|
|
|
*/
|
|
|
- (void)theRoomWasBanned;
|
|
|
|
|
|
/**
|
|
|
* @brief 直播间解禁(The new method)
|
|
|
*/
|
|
|
- (void)theRoomWasCleared;
|
|
|
/*** @brief 直播间被禁(The new method)*/- (void)theRoomWasBanned;/*** @brief 直播间解禁(The new method)*/- (void)theRoomWasCleared;
|
|
|
```
|
|
|
|
|
|
## v2.6.1
|
... | ... | @@ -1690,12 +1024,7 @@ int zipDec = [_offlinePlayBack DecompressZipWithDec:srcPath dir:destination]; |
|
|
1. 获取直播开始时间和直播时长代理方法
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 获取直播开始时间和直播时长(The new method)
|
|
|
* liveDuration 直播持续时间,单位(s),直播未开始返回-1"
|
|
|
* liveStartTime 新增开始直播时间(格式:yyyy-MM-dd HH:mm:ss),如果直播未开始,则返回空字符串
|
|
|
*/
|
|
|
- (void)startTimeAndDurationLiveBroadcast:(NSDictionary *)dataDic;
|
|
|
/** * @brief 获取直播开始时间和直播时长(The new method) * liveDuration 直播持续时间,单位(s),直播未开始返回-1" * liveStartTime 新增开始直播时间(格式:yyyy-MM-dd HH:mm:ss),如果直播未开始,则返回空字符串 */- (void)startTimeAndDurationLiveBroadcast:(NSDictionary *)dataDic;
|
|
|
```
|
|
|
|
|
|
2.优化回放数据过多加载慢的问题
|
... | ... | @@ -1712,43 +1041,19 @@ int zipDec = [_offlinePlayBack DecompressZipWithDec:srcPath dir:destination]; |
|
|
1.观看直播修改昵称
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 修改昵称(The new method)
|
|
|
* @param nickName 修改后的昵称
|
|
|
*/
|
|
|
- (void)changeNickName:(NSString *)nickName;
|
|
|
|
|
|
代理方法
|
|
|
/**
|
|
|
* @brief 修改后的昵称(The new method)
|
|
|
* @param nickName 修改后的昵称
|
|
|
*/
|
|
|
- (void)onChangeNickname:(NSString *)nickNime;
|
|
|
/*** @brief 修改昵称(The new method)* @param nickName 修改后的昵称*/- (void)changeNickName:(NSString *)nickName;代理方法/*** @brief 修改后的昵称(The new method)* @param nickName 修改后的昵称*/- (void)onChangeNickname:(NSString *)nickNime;
|
|
|
```
|
|
|
|
|
|
2.获取PPT当前页数和总页数
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 获取ppt当前页数和总页数(The new method)
|
|
|
*
|
|
|
* 回调当前翻页的页数信息 <br/>
|
|
|
* 白板docTotalPage一直为0, pageNum从1开始<br/>
|
|
|
* 其他文档docTotalPage为正常页数,pageNum从0开始<br/>
|
|
|
* @param dictionary 翻页信息
|
|
|
*/
|
|
|
- (void)onPageChange:(NSDictionary *) dictionary;
|
|
|
/*** @brief 获取ppt当前页数和总页数(The new method)** 回调当前翻页的页数信息 <br/>* 白板docTotalPage一直为0, pageNum从1开始<br/>* 其他文档docTotalPage为正常页数,pageNum从0开始<br/>* @param dictionary 翻页信息*/- (void)onPageChange:(NSDictionary *) dictionary;
|
|
|
```
|
|
|
|
|
|
3.获取最近一条广播
|
|
|
|
|
|
```objc
|
|
|
/**
|
|
|
* @brief 观看直播收到最近一条广播(回放和离线回放收到所有广播)(The new method)
|
|
|
* content 广播内容
|
|
|
* time 发布时间(单位:秒)
|
|
|
*/
|
|
|
- (void)broadcastHistory_msg:(NSArray *)History_msg;
|
|
|
/*** @brief 观看直播收到最近一条广播(回放和离线回放收到所有广播)(The new method)* content 广播内容* time 发布时间(单位:秒)*/- (void)broadcastHistory_msg:(NSArray *)History_msg;
|
|
|
```
|
|
|
|
|
|
## v2.5.2
|
... | ... | @@ -1774,55 +1079,37 @@ int zipDec = [_offlinePlayBack DecompressZipWithDec:srcPath dir:destination]; |
|
|
1.直播类中增加问卷功能
|
|
|
|
|
|
```objc
|
|
|
~~~
|
|
|
PlayForPCVC.m文件中相应的回调方法为:
|
|
|
- (void)questionnaireWithTitle:(NSString *)title url:(NSString *)url;
|
|
|
~~~
|
|
|
~~~ PlayForPCVC.m文件中相应的回调方法为: - (void)questionnaireWithTitle:(NSString *)title url:(NSString *)url; ~~~
|
|
|
```
|
|
|
|
|
|
2.直播类中增加主动请求问卷功能
|
|
|
|
|
|
```objc
|
|
|
~~~
|
|
|
RequestData.h中增加相应的方法,当用户主动调用该方法时,会得到当前问卷的信息
|
|
|
-(void)getPublishingQuestionnaire;
|
|
|
~~~
|
|
|
~~~ RequestData.h中增加相应的方法,当用户主动调用该方法时,会得到当前问卷的信息 -(void)getPublishingQuestionnaire; ~~~
|
|
|
```
|
|
|
|
|
|
3.离线回放类中增加改变播放器父窗口的方法
|
|
|
|
|
|
```objc
|
|
|
~~~
|
|
|
OfflinePlayBack.h中增加相应的方法
|
|
|
- (void)changePlayerParent:(UIView *) playerParent;
|
|
|
~~~
|
|
|
~~~ OfflinePlayBack.h中增加相应的方法 - (void)changePlayerParent:(UIView *) playerParent; ~~~
|
|
|
```
|
|
|
|
|
|
4.离线回放类中增加改变文档父窗口的方法
|
|
|
|
|
|
```objc
|
|
|
~~~
|
|
|
OfflinePlayBack.h中增加相应的方法
|
|
|
- (void)changeDocParent:(UIView *) docParent;
|
|
|
~~~
|
|
|
~~~ OfflinePlayBack.h中增加相应的方法 - (void)changeDocParent:(UIView *) docParent; ~~~
|
|
|
```
|
|
|
|
|
|
5.回放类中增加改变播放器父窗口的方法
|
|
|
|
|
|
```objc
|
|
|
~~~
|
|
|
RequestDataPlayBack.h中增加相应的方法
|
|
|
- (void)changePlayerParent:(UIView *) playerParent;
|
|
|
~~~
|
|
|
~~~ RequestDataPlayBack.h中增加相应的方法 - (void)changePlayerParent:(UIView *) playerParent; ~~~
|
|
|
```
|
|
|
|
|
|
6.回放类中增加改变文档父窗口的方法
|
|
|
|
|
|
```objc
|
|
|
~~~
|
|
|
RequestDataPlayBack.h中增加相应的方法
|
|
|
- (void)changeDocParent:(UIView *) docParent;
|
|
|
~~~
|
|
|
~~~ RequestDataPlayBack.h中增加相应的方法 - (void)changeDocParent:(UIView *) docParent; ~~~
|
|
|
```
|
|
|
|
|
|
7.回放增加drm加密功能(接口无变化)
|
... | ... | @@ -1840,17 +1127,7 @@ int zipDec = [_offlinePlayBack DecompressZipWithDec:srcPath dir:destination]; |
|
|
1.户禁言后提问的问题,只给当前用户自己展示(禁言后服务端返回的问题id全部为-1)
|
|
|
|
|
|
```objc
|
|
|
~~~
|
|
|
PlayForPCVC.m文件中相应的回调方法为:
|
|
|
- (void)onQuestionDic:(NSDictionary *)questionDic;
|
|
|
当用户被禁言后,如果该用户提问的话,服务端返回的本用户提问的问题id都为-1,因为问题id是作为key来存储在字典当中的,所以具有唯一性,如果需要展示被禁言的问题的话,需要用该问题 id+当前时间字符串作为组合key来存储在问题字典当中。
|
|
|
if([encryptId isEqualToString:@"-1"]) {
|
|
|
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
|
|
|
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
|
|
|
NSString *dateTime = [formatter stringFromDate:[NSDate date]];
|
|
|
encryptId = [NSString stringWithFormat:@"%@[%@]",encryptId,dateTime];
|
|
|
}
|
|
|
~~~
|
|
|
~~~ PlayForPCVC.m文件中相应的回调方法为: - (void)onQuestionDic:(NSDictionary *)questionDic; 当用户被禁言后,如果该用户提问的话,服务端返回的本用户提问的问题id都为-1,因为问题id是作为key来存储在字典当中的,所以具有唯一性,如果需要展示被禁言的问题的话,需要用该问题 id+当前时间字符串作为组合key来存储在问题字典当中。 if([encryptId isEqualToString:@"-1"]) { NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; NSString *dateTime = [formatter stringFromDate:[NSDate date]]; encryptId = [NSString stringWithFormat:@"%@[%@]",encryptId,dateTime]; } ~~~
|
|
|
```
|
|
|
|
|
|
2.增加直播,回放,离线回放的实时画笔功能(接口无变化)
|
... | ... | @@ -1863,15 +1140,11 @@ int zipDec = [_offlinePlayBack DecompressZipWithDec:srcPath dir:destination]; |
|
|
|
|
|
6.增加日志打印功能
|
|
|
|
|
|
~~~
|
|
|
增加SaveLogUtil类,具体使用请参看《直播SDK开发者使用说明文档》
|
|
|
~~~
|
|
|
~~~ 增加SaveLogUtil类,具体使用请参看《直播SDK开发者使用说明文档》 ~~~
|
|
|
|
|
|
7.回放聊天记录的显示跟随播放的时间点进行同步
|
|
|
|
|
|
~~~
|
|
|
PlayBackVC.m文件中增加-(void)parseChatOnTime:(int)time;方法,传入当前播放器时间,来解析当前聊天内容,并追加展示。
|
|
|
~~~
|
|
|
~~~ PlayBackVC.m文件中增加-(void)parseChatOnTime:(int)time;方法,传入当前播放器时间,来解析当前聊天内容,并追加展示。 ~~~
|
|
|
|
|
|
|
|
|
|
... | ... | |