|
## CCRoomUI 接入文档
|
|
## CCRoomUI 接入文档
|
|
|
|
|
|
\[TOC\]
|
|
[TOC]
|
|
|
|
|
|
### 接入方式
|
|
### 接入方式
|
|
| 接入方式 |
|
|
|
|
|------|
|
|
| 接入方式 |
|
|
|
|
| ----------- |
|
|
| 本地Pod集成 |
|
|
| 本地Pod集成 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 使用步骤
|
|
### 使用步骤
|
|
|
|
|
|
#### 第一步:引入CCRoomUI
|
|
#### 第一步:引入CCRoomUI
|
|
|
|
|
|
将 **CCRoomUI文件夹** 放到自己的 **工程项目中**,与 **xxx.xcodeproj** 文件同一层级。如图:
|
|
将 **CCRoomUI文件夹** 放到自己的 **工程项目中**,与 **xxx.xcodeproj** 文件同一层级。如图:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
![414-1](image/001.jpg)
|
|
![414-1](image/001.jpg)
|
|
|
|
|
|
#### 第二步:安装 Cocoapods(已安装 Cocoapods 请跳过第二步)
|
|
#### 第二步:安装 Cocoapods(已安装 Cocoapods 请跳过第二步)
|
|
|
|
|
|
如何安装 Cocoapods,请百度搜索自行安装,安装后执行第三步。
|
|
如何安装 Cocoapods,请百度搜索自行安装,安装后执行第三步。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 第三步:安装 CCRoomUI
|
|
#### 第三步:安装 CCRoomUI
|
|
|
|
|
|
1. 在电脑上打开 **终端(Terminal)**
|
|
1. 在电脑上打开 **终端(Terminal)**
|
|
|
|
|
|
2. 进入到 **工程项目文件夹中**
|
|
2. 进入到 **工程项目文件夹中**
|
|
|
|
|
|
```plaintext
|
|
```
|
|
$ cd <Target Path>
|
|
$ cd <Target Path>
|
|
```
|
|
```
|
|
3. 创建 pod
|
|
|
|
|
|
|
|
```plaintext
|
|
3. 创建 pod
|
|
|
|
|
|
|
|
```
|
|
$ pod init
|
|
$ pod init
|
|
```
|
|
```
|
|
|
|
|
|
4. 编辑 Podfile
|
|
4. 编辑 Podfile
|
|
|
|
|
|
```plaintext
|
|
```
|
|
$ vim Podfile
|
|
$ vim Podfile
|
|
```
|
|
```
|
|
|
|
|
|
进入编辑模式
|
|
进入编辑模式
|
|
|
|
|
|
```plaintext
|
|
```
|
|
$ i
|
|
$ i
|
|
```
|
|
```
|
|
|
|
|
|
拷贝集成命令,如图:
|
|
拷贝集成命令,如图:
|
|
|
|
|
|
```plaintext
|
|
```
|
|
$ pod 'CCRoomUI', :path => './CCRoomUI/'
|
|
$ pod 'CCRoomUI', :path => './CCRoomUI/'
|
|
```
|
|
```
|
|
|
|
|
|
![](image/002.jpg)
|
|
<img src="image/002.jpg"/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
点击 **esc** 键退出编辑,输入 :wq 进行保存并退出
|
|
点击 **esc** 键退出编辑,输入 :wq 进行保存并退出
|
|
|
|
|
|
```plaintext
|
|
```
|
|
$ :wq
|
|
$ :wq
|
|
```
|
|
```
|
|
|
|
|
|
5. 安装 CCRoomUI
|
|
5. 安装 CCRoomUI
|
|
|
|
|
|
```plaintext
|
|
```
|
|
$ pod install
|
|
$ pod install
|
|
```
|
|
```
|
|
|
|
|
|
安装完成后目录结构如图:
|
|
安装完成后目录结构如图:
|
|
|
|
|
|
![](image/003.jpg)
|
|
<img src="image/003.jpg"/>
|
|
6. 打开项目 **xxx.xcworkspace**
|
|
|
|
|
|
6. 打开项目 **xxx.xcworkspace**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 第四步:接入 CCRoomUI
|
|
#### 第四步:接入 CCRoomUI
|
|
|
|
|
|
1. 编辑 **appdelegate.h** 文件,拷贝下面代码
|
|
1. 编辑 **appdelegate.h** 文件,拷贝下面代码
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
@property (strong, nonatomic) UIWindow *window;
|
|
@property (strong, nonatomic) UIWindow *window;
|
|
@property (nonatomic, assign, getter=isLaunchScreen) BOOL launchScreen; /**< 是否是横屏 */
|
|
@property (nonatomic, assign, getter=isLaunchScreen) BOOL launchScreen; /**< 是否是横屏 */
|
|
- (void)addFuncView:(UIView *)view;
|
|
- (void)addFuncView:(UIView *)view;
|
... | @@ -82,9 +98,12 @@ |
... | @@ -82,9 +98,12 @@ |
|
如图:
|
|
如图:
|
|
|
|
|
|
![414-5](image/004.jpg)
|
|
![414-5](image/004.jpg)
|
|
|
|
|
|
2. 编辑 **appdelegate.m** 文件
|
|
2. 编辑 **appdelegate.m** 文件
|
|
|
|
|
|
```objective_c
|
|
|
|
|
|
|
|
|
|
```objc
|
|
@property (nonatomic, strong) UIView *funcView;
|
|
@property (nonatomic, strong) UIView *funcView;
|
|
|
|
|
|
|
|
|
... | @@ -127,129 +146,224 @@ |
... | @@ -127,129 +146,224 @@ |
|
}
|
|
}
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如图:
|
|
如图:
|
|
|
|
|
|
![414-6](image/005.jpg)
|
|
![414-6](image/005.jpg)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. 编辑 **info.plist** 文件,添加 **隐私权限**
|
|
3. 编辑 **info.plist** 文件,添加 **隐私权限**
|
|
| Key | Type | Value |
|
|
|
|
|-----|------|-------|
|
|
|
|
| Privacy - Camera Usage Description | String | 需要获取您的相机权限, 开启后才可以进行扫码和视频直播 |
|
|
|
|
| Privacy - Microphone Usage Description | String | 需要获取您的麦克风权限, 开启后连麦时才会有声音 |
|
|
|
|
| Privacy - Photo Library Additions Usage Description | String | 是否允许添加照片 |
|
|
|
|
| Privacy - Photo Library Usage Description | String | 需要获取您的相册权限, 开启后才能进行图片直播 |
|
|
|
|
|
|
|
|
PS: 隐私权限和对应提示语可根据具体的使用功能进行配置,上述为使用完整 CCRoomUI 默认配置。
|
|
| Key | Type | Value |
|
|
|
|
| --------------------------------------------------- | ------ | ---------------------------------------------------- |
|
|
|
|
| Privacy - Camera Usage Description | String | 需要获取您的相机权限, 开启后才可以进行扫码和视频直播 |
|
|
|
|
| Privacy - Microphone Usage Description | String | 需要获取您的麦克风权限, 开启后连麦时才会有声音 |
|
|
|
|
| Privacy - Photo Library Additions Usage Description | String | 是否允许添加照片 |
|
|
|
|
| Privacy - Photo Library Usage Description | String | 需要获取您的相册权限, 开启后才能进行图片直播 |
|
|
|
|
|
|
|
|
PS: 隐私权限和对应提示语可根据具体的使用功能进行配置,上述为使用完整 CCRoomUI 默认配置。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如图:
|
|
如图:
|
|
|
|
|
|
![414-7](image/006.jpg)
|
|
![414-7](image/006.jpg)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 第五步:初始化房间
|
|
#### 第五步:初始化房间
|
|
|
|
|
|
##### 初始化直播
|
|
##### 初始化直播房间控制器
|
|
| 方法 | 注释 |
|
|
|
|
|----|----|
|
|
| 控制器名 | 初始化方法 | 注释 |
|
|
| (instancetype)initWithRoomName: liveConfig: | 初始化横屏直播 |
|
|
| ------------------ | ------------------------------------------- | ------------------------ |
|
|
|
|
| CCPlayerController | (instancetype)initWithRoomName: liveConfig: | 初始化横屏直播房间控制器 |
|
|
|
|
|
|
示例代码
|
|
示例代码
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
/// 初始化横屏直播
|
|
@interface XXXVC ()<HDSLoginProtocol>
|
|
/// @param roomName 房间名
|
|
|
|
/// @param liveConfig 直播配置
|
|
@end
|
|
- (instancetype)initWithRoomName:(NSString *)roomName liveConfig:(HDSLoginConfig *)liveConfig;
|
|
|
|
|
|
- (void)joinRoom {
|
|
|
|
HDSLoginConfig *config = [[HDSLoginConfig alloc]init];
|
|
|
|
config.roomId = @""; //房间ID
|
|
|
|
config.userId = @""; //用户ID
|
|
|
|
config.viewerName = @""; //用户名
|
|
|
|
config.token = @""; //密码
|
|
|
|
config.joinType = HDSJoinTypeModal; //进入方式
|
|
|
|
config.isPauseInBackGround = NO; //允许后台播放
|
|
|
|
|
|
|
|
// 初始化直播控制器
|
|
|
|
CCPlayerController *liveVC = [[CCPlayerController alloc]initWithRoomName:@"直播" liveConfig:config];
|
|
|
|
liveVC.delegate = self; //代理方法
|
|
|
|
liveVC.modalPresentationStyle = 0; //modal样式
|
|
|
|
[self presentViewController:liveVC animated:NO completion:^{
|
|
|
|
|
|
|
|
}];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)initSucced:(HDSLoginSource)sourceType {
|
|
|
|
//登录成功
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)initFailed:(NSString *)message sourceType:(HDSLoginSource)sourceType {
|
|
|
|
//登录失败
|
|
|
|
}
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
代理方法
|
|
代理方法
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
/// 代理方法
|
|
/// 代理方法
|
|
@property (nonatomic, weak) id<HDSLoginProtocol>delegate;
|
|
@property (nonatomic, weak) id<HDSLoginProtocol>delegate;
|
|
```
|
|
```
|
|
|
|
|
|
##### 初始化竖屏直播
|
|
|
|
| 方法 | 注释 |
|
|
|
|
|----|----|
|
|
##### 初始化竖屏直播房间控制器
|
|
| (instancetype)initWithRoomName: liveConfig: | 初始化竖屏直播 |
|
|
|
|
|
|
| 控制器名 | 初始化方法 | 注释 |
|
|
|
|
| ----------------------- | ------------------------------------------- | ------------------------ |
|
|
|
|
| HDSLiveStreamController | (instancetype)initWithRoomName: liveConfig: | 初始化竖屏直播房间控制器 |
|
|
|
|
|
|
示例代码
|
|
示例代码
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
/// 初始化竖屏直播
|
|
/// 初始化竖屏直播房间控制器
|
|
/// - Parameters:
|
|
/// - Parameters:
|
|
/// - roomName: 房间名称
|
|
/// - roomName: 房间名称
|
|
/// - liveConfig: 直播配置
|
|
/// - liveConfig: 直播配置
|
|
- (instancetype)initWithRoomName:(NSString *)roomName liveConfig:(HDSLoginConfig *)liveConfig;
|
|
- (instancetype)initWithRoomName:(NSString *)roomName liveConfig:(HDSLoginConfig *)liveConfig;
|
|
|
|
|
|
|
|
初始化方法参考 初始化直播房间控制器
|
|
```
|
|
```
|
|
|
|
|
|
代理方法
|
|
代理方法
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
/// 代理方法
|
|
/// 代理方法
|
|
@property (nonatomic, weak) id<HDSLoginProtocol>delegate;
|
|
@property (nonatomic, weak) id<HDSLoginProtocol>delegate;
|
|
```
|
|
```
|
|
|
|
|
|
##### 初始化在线回放
|
|
|
|
| 方法 | 注释 |
|
|
|
|
|----|----|
|
|
##### 初始化在线回放房间控制器
|
|
| (instancetype)initWithPlayBackConfig: | 初始化观看回放 |
|
|
|
|
|
|
| 控制器名 | 初始化方法 | 注释 |
|
|
|
|
| -------------------- | ------------------------------------- | ------------------------ |
|
|
|
|
| CCPlayBackController | (instancetype)initWithPlayBackConfig: | 初始化在线回放房间控制器 |
|
|
|
|
|
|
示例代码
|
|
示例代码
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
/// 初始化观看回放
|
|
@interface XXXVC ()<HDSLoginProtocol>
|
|
/// - Parameters:
|
|
|
|
/// - playBackConfig: 回放配置
|
|
@end
|
|
- (instancetype)initWithPlayBackConfig:(HDSLoginConfig *)playBackConfig;
|
|
|
|
|
|
- (void)joinRoom {
|
|
|
|
HDSLoginConfig *config = [[HDSLoginConfig alloc]init];
|
|
|
|
config.roomId = @""; //房间ID
|
|
|
|
config.userId = @""; //用户ID
|
|
|
|
config.recordId = @""; //回放ID
|
|
|
|
config.viewerName = @""; //用户名
|
|
|
|
config.token = @""; //密码
|
|
|
|
config.joinType = HDSJoinTypePush; //加入方式
|
|
|
|
config.isPauseInBackGround = NO; //允许后台播放
|
|
|
|
|
|
|
|
//初始化在线回放房间控制器
|
|
|
|
CCPlayBackController *playBackVC = [[CCPlayBackController alloc]initWithPlayBackConfig:config];
|
|
|
|
playBackVC.delegate = self; //代理方法
|
|
|
|
[self.navigationController pushViewController:playBackVC animated:YES];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)initSucced:(HDSLoginSource)sourceType {
|
|
|
|
//登录成功
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)initFailed:(NSString *)message sourceType:(HDSLoginSource)sourceType {
|
|
|
|
//登录失败
|
|
|
|
}
|
|
```
|
|
```
|
|
|
|
|
|
代理方法
|
|
代理方法
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
/// 代理方法
|
|
/// 代理方法
|
|
@property (nonatomic, weak) id<HDSLoginProtocol>delegate;
|
|
@property (nonatomic, weak) id<HDSLoginProtocol>delegate;
|
|
```
|
|
```
|
|
|
|
|
|
##### 初始化离线回放
|
|
|
|
| 方法 | 注释 |
|
|
|
|
|----|----|
|
|
##### 初始化离线回放房间控制器
|
|
| (instancetype)initWithfileName: offlineConfig: | 初始化离线回放 |
|
|
|
|
|
|
| 控制器名 | 初始化方法 | 注释 |
|
|
|
|
| ----------------------------- | ---------------------------------------------- | ------------------------ |
|
|
|
|
| OfflinePlayBackViewController | (instancetype)initWithfileName: offlineConfig: | 初始化离线回放房间控制器 |
|
|
|
|
|
|
示例代码
|
|
示例代码
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
/// 初始化离线回放
|
|
@interface XXXVC ()<HDSLoginProtocol>
|
|
/// - Parameters:
|
|
|
|
/// - fileName: 文件名
|
|
@end
|
|
/// - offlineConfig: 离线配置
|
|
|
|
- (instancetype)initWithfileName:(NSString *)fileName offlineConfig:(HDSLoginConfig *)offlineConfig;
|
|
- (void)joinRoom {
|
|
|
|
HDSLoginConfig *config = [[HDSLoginConfig alloc]init];
|
|
|
|
config.ccrPath = @""; //ccr路径
|
|
|
|
config.joinType = HDSJoinTypePush; //进入方式
|
|
|
|
config.isPauseInBackGround = NO; //允许后台播放
|
|
|
|
|
|
|
|
// 初始化离线回放控制器
|
|
|
|
OfflinePlayBackViewController *offlineVC = [[OfflinePlayBackViewController alloc]initWithfileName:@"离线回放" offlineConfig:config];
|
|
|
|
offlineVC.delegate = self;
|
|
|
|
[self.navigationController pushViewController:offlineVC animated:YES];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)initSucced:(HDSLoginSource)sourceType {
|
|
|
|
//登录成功
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)initFailed:(NSString *)message sourceType:(HDSLoginSource)sourceType {
|
|
|
|
//登录失败
|
|
|
|
}
|
|
```
|
|
```
|
|
|
|
|
|
代理方法
|
|
代理方法
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
/// 代理方法
|
|
/// 代理方法
|
|
@property (nonatomic, weak) id<HDSLoginProtocol>delegate;
|
|
@property (nonatomic, weak) id<HDSLoginProtocol>delegate;
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### HDSLoginConfig (登录配置项)
|
|
##### HDSLoginConfig (登录配置项)
|
|
| 字段 | 类型 | 注释 | 是否必须 |
|
|
|
|
|----|----|----|------|
|
|
| 字段 | 类型 | 注释 | 是否必须 |
|
|
| joinType | HDSJoinType | 加入类型 | 是 |
|
|
| ------------------- | ----------- | ---------------------------------- | -------- |
|
|
| roomId | String | 房间ID | 是 |
|
|
| joinType | HDSJoinType | 加入类型 | 是 |
|
|
| userId | String | 用户ID | 是 |
|
|
| roomId | String | 房间ID | 是 |
|
|
| viewerName | String | 用户名 | 否 |
|
|
| userId | String | 用户ID | 是 |
|
|
| token | String | 密码 | 否 |
|
|
| viewerName | String | 用户名 | 否 |
|
|
| viewerCustomua | String | 接口验证 | 否 |
|
|
| token | String | 密码 | 否 |
|
|
| viewercustominfo | String | 接口验证 | 否 |
|
|
| viewerCustomua | String | 接口验证 | 否 |
|
|
| isPauseInBackGround | Bool | 后台是否暂停播放 | 否 |
|
|
| viewercustominfo | String | 接口验证 | 否 |
|
|
| screenCaptureSwitch | Bool | 放录屏开关 | 否 |
|
|
| isPauseInBackGround | Bool | 后台是否暂停播放 | 否 |
|
|
| recordId | String | 在线回放ID (仅在线回放使用) | 是 |
|
|
| screenCaptureSwitch | Bool | 放录屏开关 | 否 |
|
|
| ccrPath | String | 离线回放CCR路径 (仅离线回放使用) | 是 |
|
|
| recordId | String | 在线回放ID (仅在线回放使用) | 是 |
|
|
|
|
| ccrPath | String | 离线回放CCR路径 (仅离线回放使用) | 是 |
|
|
|
|
|
|
示例代码
|
|
示例代码
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
/// 加入类型
|
|
/// 加入类型
|
|
@property (nonatomic, assign) HDSJoinType joinType;
|
|
@property (nonatomic, assign) HDSJoinType joinType;
|
|
/// 房间ID
|
|
/// 房间ID
|
... | @@ -280,32 +394,38 @@ |
... | @@ -280,32 +394,38 @@ |
|
@property (nonatomic, copy) NSString * _Nonnull ccrPath;
|
|
@property (nonatomic, copy) NSString * _Nonnull ccrPath;
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### HDSJoinType
|
|
##### HDSJoinType
|
|
| 字段 | 注释 |
|
|
|
|
|----|----|
|
|
| 字段 | 注释 |
|
|
| HDSJoinTypePush | Push 进入 |
|
|
| ---------------- | ---------- |
|
|
|
|
| HDSJoinTypePush | Push 进入 |
|
|
| HDSJoinTypeModal | Modal 进入 |
|
|
| HDSJoinTypeModal | Modal 进入 |
|
|
|
|
|
|
示例代码
|
|
示例代码
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
typedef NS_ENUM(NSUInteger, HDSJoinType) {
|
|
typedef NS_ENUM(NSUInteger, HDSJoinType) {
|
|
HDSJoinTypePush,
|
|
HDSJoinTypePush,
|
|
HDSJoinTypeModal,
|
|
HDSJoinTypeModal,
|
|
};
|
|
};
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### HDSLoginSource
|
|
##### HDSLoginSource
|
|
| 字段 | 注释 |
|
|
|
|
|----|----|
|
|
| 字段 | 注释 |
|
|
| HDSLoginSourceLive | 直播 |
|
|
| ------------------------------ | -------- |
|
|
|
|
| HDSLoginSourceLive | 直播 |
|
|
| HDSLoginSourcePortraitModeLive | 竖屏直播 |
|
|
| HDSLoginSourcePortraitModeLive | 竖屏直播 |
|
|
| HDSLoginSourcePlayback | 在线回放 |
|
|
| HDSLoginSourcePlayback | 在线回放 |
|
|
| HDSLoginSourceOffline | 离线回放 |
|
|
| HDSLoginSourceOffline | 离线回放 |
|
|
|
|
|
|
示例代码
|
|
示例代码
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
typedef NS_ENUM(NSUInteger, HDSLoginSource) {
|
|
typedef NS_ENUM(NSUInteger, HDSLoginSource) {
|
|
HDSLoginSourceLive,
|
|
HDSLoginSourceLive,
|
|
HDSLoginSourcePortraitModeLive,
|
|
HDSLoginSourcePortraitModeLive,
|
... | @@ -314,26 +434,35 @@ typedef NS_ENUM(NSUInteger, HDSLoginSource) { |
... | @@ -314,26 +434,35 @@ typedef NS_ENUM(NSUInteger, HDSLoginSource) { |
|
};
|
|
};
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### HDSLoginProtocol
|
|
##### HDSLoginProtocol
|
|
|
|
|
|
登录成功代理(非必需)
|
|
登录成功代理(非必需)
|
|
| 方法 | 注释 |
|
|
|
|
|----|----|
|
|
| 方法 | 注释 |
|
|
|
|
| ----------------- | ------------ |
|
|
| (void)initSucced: | 登录成功代理 |
|
|
| (void)initSucced: | 登录成功代理 |
|
|
|
|
|
|
示例代码
|
|
示例代码
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
- (void)initSucced:(HDSLoginSource)sourceType;
|
|
- (void)initSucced:(HDSLoginSource)sourceType;
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
登录失败代理(非必需)
|
|
登录失败代理(非必需)
|
|
| 方法 | 注释 |
|
|
|
|
|----|----|
|
|
| 方法 | 注释 |
|
|
|
|
| ----------------------------- | ------------ |
|
|
| (void)initFailed: sourceType: | 登录失败代理 |
|
|
| (void)initFailed: sourceType: | 登录失败代理 |
|
|
|
|
|
|
示例代码
|
|
示例代码
|
|
|
|
|
|
```objective_c
|
|
```objc
|
|
- (void)initFailed:(NSString *)message sourceType:(HDSLoginSource)sourceType;
|
|
- (void)initFailed:(NSString *)message sourceType:(HDSLoginSource)sourceType;
|
|
``` |
|
```
|
|
\ No newline at end of file |
|
|
|
|
|
|
|
|
|
|