... | @@ -22,42 +22,64 @@ iLive_iOS_Play_SDK 是一个适用于iOS平台的直播SDK,使用此SDK可以 |
... | @@ -22,42 +22,64 @@ iLive_iOS_Play_SDK 是一个适用于iOS平台的直播SDK,使用此SDK可以 |
|
### 2.1 开发环境
|
|
### 2.1 开发环境
|
|
* Xcode : Xcode 开发IDE
|
|
* Xcode : Xcode 开发IDE
|
|
### 2.2 错误码及错误描述
|
|
### 2.2 错误码及错误描述
|
|
|
|
```
|
|
(1). 业务错误
|
|
(1). 业务错误
|
|
|
|
|
|
typedef NS_ENUM(NSInteger, ERROR_SERVICE_TYPE) {
|
|
typedef NS_ENUM(NSInteger, 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,//@"密码错误"
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
(2). 系统错误
|
|
(2). 系统错误
|
|
|
|
|
|
typedef NS_ENUM(NSInteger, ERROR_SYSTEM_TYPE) {
|
|
typedef NS_ENUM(NSInteger, ERROR_SYSTEM_TYPE) {
|
|
|
|
|
|
ERROR_RETURNDATA = 1004,//@"返回内容格式错误"
|
|
ERROR_RETURNDATA = 1004,//@"返回内容格式错误"
|
|
|
|
|
|
ERROR_PARAMETER = 1005,//@"可能是参数错误"
|
|
ERROR_PARAMETER = 1005,//@"可能是参数错误"
|
|
|
|
|
|
ERROR_NETWORK = 1006,//@"网络错误"
|
|
ERROR_NETWORK = 1006,//@"网络错误"
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**日志工具类**
|
|
**日志工具类**
|
|
(1) 单例模式
|
|
(1) 单例模式
|
|
|
|
|
|
|
|
```
|
|
/**
|
|
/**
|
|
* @brief 获取单例对象
|
|
|
|
*/
|
|
- @brief 获取单例对象
|
|
+ (instancetype)sharedInstance;
|
|
*/
|
|
|
|
|
|
|
|
- (instancetype)sharedInstance;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @brief 是否需要存储日志信息到文件中,最好在AppDelegate类里面调用,这样就适用于全局日
|
|
|
|
* 志的存储,当然中途调用也可以,从调用后开始应用之后的日志存储逻辑
|
|
- @brief 是否需要存储日志信息到文件中,最好在AppDelegate类里面调用,这样就适用于全局日
|
|
*/
|
|
- 志的存储,当然中途调用也可以,从调用后开始应用之后的日志存储逻辑
|
|
-(void)isNeedToSaveLog:(BOOL)needsave;
|
|
*/
|
|
|
|
-(void)isNeedToSaveLog:(BOOL)needsave;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @brief 存储日志的信息
|
|
|
|
* action相当于key,也可以理解为存储的事件名称
|
|
- @brief 存储日志的信息
|
|
* logStr相当于value,也可以理解为存储的日志信息字符串
|
|
- action相当于key,也可以理解为存储的事件名称
|
|
*/
|
|
- logStr相当于value,也可以理解为存储的日志信息字符串
|
|
-(void)saveLog:(NSString *)logStr action:(NSString *)action;
|
|
*/
|
|
|
|
-(void)saveLog:(NSString *)logStr action:(NSString *)action;
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(2) 示例应用及说明
|
|
(2) 示例应用及说明
|
|
|
|
|
... | @@ -69,17 +91,21 @@ ERROR_NETWORK = 1006,//@"网络错误" |
... | @@ -69,17 +91,21 @@ ERROR_NETWORK = 1006,//@"网络错误" |
|
|
|
|
|
2) SDK中如果开启了日志存储以后,日志只存不删,需要使用者按照自己的逻辑进行删除
|
|
2) SDK中如果开启了日志存储以后,日志只存不删,需要使用者按照自己的逻辑进行删除
|
|
|
|
|
|
1. 在AppDelegate.m中添加了
|
|
```
|
|
[[SaveLogUtil sharedInstance]isNeedToSaveLog:YES];
|
|
|
|
表示设置为记录日志log
|
|
|
|
|
|
|
|
|
|
1. 在AppDelegate.m中添加了
|
|
|
|
[[SaveLogUtil sharedInstance]isNeedToSaveLog:YES];
|
|
|
|
表示设置为记录日志log
|
|
2. 在PlayForPCVC.m中添加了
|
|
2. 在PlayForPCVC.m中添加了
|
|
[[SaveLogUtil sharedInstance] saveLog:@"" action:@"视频加载成功或开始播放,多次调用,不必关心"];
|
|
[[SaveLogUtil sharedInstance] saveLog:@"" action:@"视频加载成功或开始播放,多次调用,不必关心"];
|
|
表示视频加载成功或开始播放
|
|
表示视频加载成功或开始播放
|
|
|
|
|
|
3. PlayBackVC.m中添加了
|
|
3. PlayBackVC.m中添加了
|
|
[[SaveLogUtil sharedInstance] saveLog:@"" action:@"视频加载成功或开始播放,多次调用,不必关心"];
|
|
[[SaveLogUtil sharedInstance] saveLog:@"" action:@"视频加载成功或开始播放,多次调用,不必关心"];
|
|
表示视频加载成功或开始播放
|
|
表示视频加载成功或开始播放
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 3.快速集成
|
|
## 3.快速集成
|
... | @@ -223,16 +249,20 @@ PlayParameter增加两个属性 |
... | @@ -223,16 +249,20 @@ PlayParameter增加两个属性 |
|
|
|
|
|
#### 4.1.2 RequestDataPlayBack中的成员变量
|
|
#### 4.1.2 RequestDataPlayBack中的成员变量
|
|
|
|
|
|
|
|
```
|
|
@property (weak,nonatomic) id<RequestDataPlayBackDelegate> delegate;//代理
|
|
@property (weak,nonatomic) id<RequestDataPlayBackDelegate> delegate;//代理
|
|
|
|
|
|
@property (retain, atomic) id<IJKMediaPlayback> ijkPlayer;//播放器
|
|
@property (retain, atomic) id<IJKMediaPlayback> ijkPlayer;//播放器
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
播放器倍速,直播和回放都可以用,一般只用于回放
|
|
播放器倍速,直播和回放都可以用,一般只用于回放
|
|
|
|
|
|
ijkPlayer.playbackRate = 1.5; 设置播放器以1.5倍速播放,其他倍速同理,可快可慢
|
|
ijkPlayer.playbackRate = 1.5; 设置播放器以1.5倍速播放,其他倍速同理,可快可慢
|
|
float speed = ijkPlayer.playbackRate; 获取当前播放器的播放速度,并赋值给speed变量
|
|
float speed = ijkPlayer.playbackRate; 获取当前播放器的播放速度,并赋值给speed变量
|
|
|
|
|
|
#### 4.1.3 RequestDataPlayBack中的成员方法
|
|
#### 4.1.3 RequestDataPlayBack中的成员方法
|
|
|
|
```
|
|
/**
|
|
/**
|
|
* @brief 登录房间
|
|
* @brief 登录房间
|
|
* @param parameter 配置参数信息
|
|
* @param parameter 配置参数信息
|
... | @@ -339,6 +369,7 @@ float speed = ijkPlayer.playbackRate; 获取当前播放器的播放速度 |
... | @@ -339,6 +369,7 @@ float speed = ijkPlayer.playbackRate; 获取当前播放器的播放速度 |
|
* @brief 设置后台是否可播放
|
|
* @brief 设置后台是否可播放
|
|
*/
|
|
*/
|
|
- (void)setpauseInBackGround:(BOOL)pauseInBackGround;
|
|
- (void)setpauseInBackGround:(BOOL)pauseInBackGround;
|
|
|
|
```
|
|
|
|
|
|
### 4.2 事件监听
|
|
### 4.2 事件监听
|
|
事件监听只需要实现对应的代理方法即可
|
|
事件监听只需要实现对应的代理方法即可
|
... | @@ -425,7 +456,35 @@ float speed = ijkPlayer.playbackRate; 获取当前播放器的播放速度 |
... | @@ -425,7 +456,35 @@ float speed = ijkPlayer.playbackRate; 获取当前播放器的播放速度 |
|
*/
|
|
*/
|
|
- (void)pageChangeList:(NSMutableArray *)array;
|
|
- (void)pageChangeList:(NSMutableArray *)array;
|
|
```
|
|
```
|
|
### 4.3.事件监听
|
|
#### 4.2.11 获取PPT当前页数和总页数
|
|
|
|
```
|
|
|
|
/**
|
|
|
|
* @brief 获取ppt当前页数和总页数(The new method)
|
|
|
|
*
|
|
|
|
* 回调当前翻页的页数信息 <br/>
|
|
|
|
* 白板docTotalPage一直为0, pageNum从1开始<br/>
|
|
|
|
* 其他文档docTotalPage为正常页数,pageNum从0开始<br/>
|
|
|
|
* @param dictionary 翻页信息
|
|
|
|
*/
|
|
|
|
- (void)onPageChange:(NSDictionary *) dictionary;
|
|
|
|
```
|
|
|
|
#### 4.2.12 获取历史广播
|
|
|
|
```
|
|
|
|
/**
|
|
|
|
* @brief 收到历史广播(The new method)
|
|
|
|
* content 广播内容
|
|
|
|
* time 发布时间(单位:秒)
|
|
|
|
*/
|
|
|
|
- (void)broadcastHistory_msg:(NSArray *)History_msg;
|
|
|
|
```
|
|
|
|
####4.2.13 回放的开始时间和结束时间
|
|
|
|
```
|
|
|
|
/**
|
|
|
|
* @brief 回放的开始时间和结束时间(The new method)
|
|
|
|
*/
|
|
|
|
-(void)liveInfo:(NSDictionary *)dic;
|
|
|
|
```
|
|
|
|
### 4.3.播放器监听
|
|
**添加播放器监听事件(监听播放状态改变)**
|
|
**添加播放器监听事件(监听播放状态改变)**
|
|
```
|
|
```
|
|
1. 播放器的监听事件有以下几种
|
|
1. 播放器的监听事件有以下几种
|
... | @@ -538,46 +597,82 @@ userrole = student;//用户角色 |
... | @@ -538,46 +597,82 @@ userrole = student;//用户角色 |
|
```
|
|
```
|
|
7 收到学生禁言消息(RequestDataDelegate中代理方法)
|
|
7 收到学生禁言消息(RequestDataDelegate中代理方法)
|
|
|
|
|
|
- (void)onSilenceUserChatMessage:(NSDictionary *)message;
|
|
```
|
|
|
|
(void)onSilenceUserChatMessage:(NSDictionary *)message;
|
|
|
|
|
|
{
|
|
{
|
|
|
|
|
|
msg = asdfghj;
|
|
msg = asdfghj;
|
|
|
|
|
|
time = "14:13:53";
|
|
time = "14:13:53";
|
|
|
|
|
|
useravatar = "";
|
|
useravatar = "";
|
|
|
|
|
|
usercustommark = "";
|
|
usercustommark = "";
|
|
|
|
|
|
userid = 9c408a9761d74cb9b64587b2776c5327;
|
|
userid = 9c408a9761d74cb9b64587b2776c5327;
|
|
|
|
|
|
username = qwer;
|
|
username = qwer;
|
|
|
|
|
|
userrole = student;
|
|
userrole = student;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
```
|
|
|
|
|
|
8 收到学生私聊(RequestDataDelegate中代理方法)
|
|
8 收到学生私聊(RequestDataDelegate中代理方法)
|
|
|
|
|
|
- (void)OnPrivateChat:(NSDictionary *)dic;
|
|
```
|
|
|
|
(void)OnPrivateChat:(NSDictionary *)dic;
|
|
|
|
|
|
{
|
|
{
|
|
|
|
|
|
fromuseravatar = "";
|
|
fromuseravatar = "";
|
|
|
|
|
|
fromuserid = 9c408a9761d74cb9b64587b2776c5327;
|
|
fromuserid = 9c408a9761d74cb9b64587b2776c5327;
|
|
|
|
|
|
fromusername = qwer;
|
|
fromusername = qwer;
|
|
|
|
|
|
fromuserrole = student;
|
|
fromuserrole = student;
|
|
|
|
|
|
usercustommark = "";
|
|
usercustommark = "";
|
|
|
|
|
|
msg = chat;
|
|
msg = chat;
|
|
|
|
|
|
time = "14:11:32";
|
|
time = "14:11:32";
|
|
|
|
|
|
touserid = 00d30351184d4cbdb0fcbadd9a55ba1c;
|
|
touserid = 00d30351184d4cbdb0fcbadd9a55ba1c;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 聊天信息数组(RequestDataPlayBackDelegate中代理方法)
|
|
9 聊天信息数组(RequestDataPlayBackDelegate中代理方法)
|
|
|
|
|
|
|
|
```
|
|
-(void)onParserChat:(NSArray *)chatArr;
|
|
-(void)onParserChat:(NSArray *)chatArr;
|
|
|
|
|
|
(
|
|
(
|
|
|
|
|
|
{
|
|
{
|
|
|
|
|
|
content = aaa;//聊天内容
|
|
content = aaa;//聊天内容
|
|
|
|
|
|
time = 27;//聊天的时间点
|
|
time = 27;//聊天的时间点
|
|
|
|
|
|
userAvatar = "";//聊天用户头像
|
|
userAvatar = "";//聊天用户头像
|
|
|
|
|
|
userCustomMark = "";//个性化信息
|
|
userCustomMark = "";//个性化信息
|
|
|
|
|
|
userId = 00942719153943a4a847d8c9278f030d;//聊天用户id
|
|
userId = 00942719153943a4a847d8c9278f030d;//聊天用户id
|
|
|
|
|
|
userName = admin;//聊天用户名
|
|
userName = admin;//聊天用户名
|
|
|
|
|
|
userRole = publisher;//聊天用户角色
|
|
userRole = publisher;//聊天用户角色
|
|
|
|
|
|
}
|
|
}
|
|
)
|
|
)
|
|
|
|
```
|
|
|
|
|
|
## 5.API查询
|
|
## 5.API查询
|
|
|
|
|
... | @@ -589,4 +684,3 @@ Referenced from: /var/containers/Bundle/Application/3CC41924-7F22-48FC-AAD1-7C2C |
... | @@ -589,4 +684,3 @@ Referenced from: /var/containers/Bundle/Application/3CC41924-7F22-48FC-AAD1-7C2C |
|
Reason: image not found问题
|
|
Reason: image not found问题
|
|
将报错的类库添加进入
|
|
将报错的类库添加进入
|
|
General -> Embedded Binaries 和 General -> Linked Frameworks and Libraries 两处即可 |
|
General -> Embedded Binaries 和 General -> Linked Frameworks and Libraries 两处即可 |
|
|
|
|