# SDK-UI-IOS
**Repository Path**: txtechnology/SDK-UI-IOS
## Basic Information
- **Project Name**: SDK-UI-IOS
- **Description**: No description available
- **Primary Language**: Objective-C
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2017-08-22
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# SDKDemo 快速集成文档【IOS】
## 集成步骤
### 添加代码

将CCKit 目录的代码都copy 到自己的工程中
CallVc 是Call业务处理目录
MPVVc是MPV业务处理目录
### 添加.a 库

将如上的.a 文件应用到工程中
### 代码调用
CCKitManger.h 是SDKDemo 对外调用的函数合集,完成Call和MPV 的功能封装。在supportViewController 完成对其调用的方式。
#### 设置appid 和 appsecert 初始化kandySDK

在Appdelegate.m中

#### 用户登录
参考LoginViewController
```
[Utils showHUDOnWindowWithText:@"正在登录.."];
[CCKitManger loginKandyWithUserName:self.phoneTextField.text
password:self.smsTextField.text
callback:^(NSError *error) {
[Utils hideHUDForWindow];
if (error) {
[self.view makeToast:[error description]];
}else{
[self.navigationController popViewControllerAnimated:YES];
[self.navigationController setNavigationBarHidden:NO];
}
}];
```
#### 拨打call
参考SupportViewController
```
[CCKitManger
callWithIsPstn:NO
isWithVideo:self.switchVideo.isOn
callee:self.iphoneTxt.text
callback:^(NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (!error) {
CCCallViewController *cccall = [[CCCallViewController alloc] initWithNibName:@"CCCallViewController" bundle:nil];
[self.navigationController presentViewController:cccall animated:YES completion:NULL];
}else{
}
});
}];
```
#### 发起MPV 会议
参考SupportViewController
```
CCMPVRoomListViewController *cccall = [[CCMPVRoomListViewController alloc] initWithNibName:@"CCMPVRoomListViewController" bundle:nil];
[self.navigationController pushViewController:cccall animated:YES];
```
### 推送
本推送是采用IOS的VOIP push 为推送消息载体,故要求sdk running ios8+
关于voip push:[http://blog.csdn.net/openglnewbee/article/details/44807191](http://blog.csdn.net/openglnewbee/article/details/44807191)
将voip 证书转化格式:
[https://blog.serverdensity.com/how-to-renew-your-apple-push-notification-push-ssl-certificate/](https://blog.serverdensity.com/how-to-renew-your-apple-push-notification-push-ssl-certificate/)
邮件发送给我们,我们帮你维护到后台系统中。
邮件地址:sdkdemo.txtechnology.com.cn
发送邮件的格式
Domain: XXXX@XXX.com
Bundle: com.xxx.xxx
isVoip: YES
isSandBox: Yes+NO
## 与第三方帐户系统对接
### 帐户的创建
Kandy中单域下用户唯一标示为UserName 如:user1@sdkdemo.txtechnolgy.com.cn。
账号系统对接及如何在系统间维护相互关系。
比较流行的办法:在对接系统的用户唯一标示(以UserId为例)《=》kandy 的UserName。如:
系统A: quantong122
kandy: quantong122@sdkdemo.txtechnolgy.com.cn
这样便于系统间用户引用,在出现用户长度不足的时候,可采用增加前后缀解决。
关于账户的创建函数,Kandy 提供了2种方式实现。
* 户名和密码创建账户
用户需要填入用户【至少6位】,邮箱,密码【需要包含数字,字母大小写】,调用CCKitManager requestNewUserWithUserId函数。

参考RegisterViewController.m 实现

成功后会返回 kandy中单域下用户的唯一标示:UserName 如:user1@sdkdemo.txtechnolgy.com.cn
* 手机号创建账号
需要输入手机后,用户收到短信验证码,输入验证码验证后提交,成功后返回创建的用户信息。
参考RegisterViewController.m 实现
1. 发送短信

2. 创建用户

## 设置用户昵称和头像
Kandy基础账号包含Profile模块,用来存放用户的nickname和headerImage对象。同样的SDKUI 提供的向对接方服务器获取nickname和 headerImage 的实现模版。
### Kandy获取
参考ProfileViewController
#### 获取昵称和头像(nickName,headerImage)

[[CCKitManger shareInstance].customProfile
customProfileRetireWithUserId:[CCKitManger getcurLoginUser]
通过调用设置defaultCustomProfileManager获取用户名和头像。
#### 下载头像(headerImage)
参考defaultCustomProfileManager

#### 修改昵称(nickName)
参考ProfileManager

#### 修改头像(headerImage)
参考ProfileManager

### 对接方服务器获取
SDKUI 提供向对接方服务器获取Kandy用户Profile (nickname 和 headerImage)的protocol模块。为此需要自己实现CustomProfileProtocol的代理函数,并在初始化的时候将自己实现的CustomProfileProtocol对象注册成默认获取路径。
DefaultCustomProfileManager则是CustomProfileProtocol的实现,并为例子进行如下说明:
1. DefaultCustomProfileManager注册,参考Appdelegate。

2. 实现CustomProfileProtocol说明,参考

## 关于日志
SDKUI 提供日志开关
```
-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[CCKitManger setEnableLog:YES fileLog:YES];
```
## 效果截图
### 呼叫
#### 主叫

#### 被叫

#### 视频通话中

#### 语音通话中

#### 视频小窗模式

#### 语音小窗模式

### 会议
#### 会议通话中

#### 会议通话全屏

#### 会议通话小窗

## 更多信息请
参考[快速集成文档, doc/KANDY IOS SDK快速集成文档.docx](http://git.oschina.net/aiquanton/SDK-UI-IOS/blob/master/doc/KANDY%20IOS%20SDK%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3.docx)
参考[详细集成文档, doc/KANDY IOS SDK 入门-中文版 详细.docx](https://github.com/TXTGit/SDK-UI-IOS/blob/master/doc/KANDY%20IOS%20SDK%20%E5%85%A5%E9%97%A8-%E4%B8%AD%E6%96%87%E7%89%88%20%E8%AF%A6%E7%BB%86.docx)