# 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】 ## 集成步骤 ### 添加代码 ![](./doc/1.png) 将CCKit 目录的代码都copy 到自己的工程中
CallVc 是Call业务处理目录
MPVVc是MPV业务处理目录
### 添加.a 库 ![](./doc/2.png) 将如上的.a 文件应用到工程中 ### 代码调用 CCKitManger.h 是SDKDemo 对外调用的函数合集,完成Call和MPV 的功能封装。在supportViewController 完成对其调用的方式。
#### 设置appid 和 appsecert 初始化kandySDK ![](./doc/3.png) 在Appdelegate.m中 ![](./doc/4.png) #### 用户登录 参考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函数。 ![](./doc/5.png) 参考RegisterViewController.m 实现 ![](./doc/6.png) 成功后会返回 kandy中单域下用户的唯一标示:UserName 如:user1@sdkdemo.txtechnolgy.com.cn * 手机号创建账号
需要输入手机后,用户收到短信验证码,输入验证码验证后提交,成功后返回创建的用户信息。
参考RegisterViewController.m 实现 1. 发送短信 ![](./doc/7.png) 2. 创建用户 ![](./doc/8.png) ## 设置用户昵称和头像 Kandy基础账号包含Profile模块,用来存放用户的nickname和headerImage对象。同样的SDKUI 提供的向对接方服务器获取nickname和 headerImage 的实现模版。 ### Kandy获取 参考ProfileViewController #### 获取昵称和头像(nickName,headerImage) ![](./doc/9.png) [[CCKitManger shareInstance].customProfile customProfileRetireWithUserId:[CCKitManger getcurLoginUser] 通过调用设置defaultCustomProfileManager获取用户名和头像。 #### 下载头像(headerImage) 参考defaultCustomProfileManager ![](./doc/10.png) #### 修改昵称(nickName) 参考ProfileManager ![](./doc/11.png) #### 修改头像(headerImage) 参考ProfileManager ![](./doc/12.png) ### 对接方服务器获取 SDKUI 提供向对接方服务器获取Kandy用户Profile (nickname 和 headerImage)的protocol模块。为此需要自己实现CustomProfileProtocol的代理函数,并在初始化的时候将自己实现的CustomProfileProtocol对象注册成默认获取路径。
DefaultCustomProfileManager则是CustomProfileProtocol的实现,并为例子进行如下说明: 1. DefaultCustomProfileManager注册,参考Appdelegate。 ![](./doc/13.png) 2. 实现CustomProfileProtocol说明,参考 ![](./doc/14.png) ## 关于日志 SDKUI 提供日志开关 ``` -(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [CCKitManger setEnableLog:YES fileLog:YES]; ``` ## 效果截图 ### 呼叫 #### 主叫 ![主叫](./doc/20.jpeg) #### 被叫 ![被叫](./doc/21.jpeg) #### 视频通话中 ![视频通话中](./doc/22.jpeg) #### 语音通话中 ![语音通话中](./doc/23.jpeg) #### 视频小窗模式 ![视频小窗模式](./doc/24.jpeg) #### 语音小窗模式 ![语音小船模式](./doc/25.jpeg) ### 会议 #### 会议通话中 ![会议通话中](./doc/26.jpeg) #### 会议通话全屏 ![会议通话全屏](./doc/27.jpeg) #### 会议通话小窗 ![会议通话小窗](./doc/28.jpeg) ## 更多信息请 参考[快速集成文档, 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)