说明:本指南以iOS为开发平台的接入说明,方便有iOS研发基础的开发者快速了解整合有联云通讯服务接口。其中本部分指南只包含通讯服务的接入方式和基于平台提供的Demo为蓝本进行在线体验。如需开发出针对企业和开发者所需的个性化应用,仍然需要具备一定经验的iOS开发经验(例如界面控件的开发以及与应用服务器配合调试的基础)
第一节. 快速体验
有联云开放平台为方便开发者立即体验平台提供的各项通讯服务,提供基于iOS平台的简易功能的Demo iPA安装包以及Demo 源码,并且提供一定金额的免费测试费用。因Apple 官方开发政策限制原因,我们强烈建议您使用我们的源码并且配置您自有的开发者证书进行编译安装体验(相关开发政策请至Apple官网了解)。
常规准备工作(必须)
编译环境准备(必须)
iOS Demo 源码介绍
默认官方提供的iOS Demo 源码最新版是基于Xcode 7.0 和 ULink官方发布的最新库 编译通过。
ULinkDemo功能介绍,Demo演示了ULink的API接口调用,主要实现的功能:
ULinkDemo工程文件结构说明:
Demo的编译及运行
第二节. 快速上手
快速上手主要介绍以SDK为核心,加入简单代码实现通讯服务功能。包括SDK介绍、SDK引入、以及开发一个简易通讯服务:VoIP通话功能。如需更好的开发其他通讯服务,请阅读开发文档内的其他章节。
2.1 SDK介绍
下载相应版本的SDK:官方下载地址
SDK文件说明,其中包含以下文件:
2.2 配置工程
2.2.1 导入SDK
将下载好的SDK文件夹(ULinkVoiceSDK)拖入到项目中,并勾选上Destination
2.2.2添加依赖库
向Build Phases → Link Binary With Libraries 中添加依赖库
SDK依赖库有:
2.3添加-ObjC
向Build Settings → Linking → Other Linker Flags 中添加-ObjC(注意大小写)
2.4音频后台 / Tcp连接后台模式
在InfoPlist.strings中设置音频后台模式及Tcp连接后台模式:
2.5 编译工程
以上步骤进行完后,编译工程,如果没有报错,恭喜你,集成sdk成功,可以进行下一步了。
2.6 SDK初始化
先定义一个代理类DeveloperAgent,封装了SDK中的ULinkService类的API,同时继承了ULinkServiceDelegate,以便在代理方法中实现所有回调。
引入相关头文件 #import”DeveloperAgent.h”
在工程的AppDelegate中的以下方法中,调用SDK对应方法:
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { //初始化开发者代理对象 self._developerAgent=[DeveloperAgentshareInstance]; [self._developerAgentsetDelegate:(id)self]; [self._developerAgentsetBackgroundTask]; return YES; } // App进入后台 -(void)applicationDidEnterBackground:(UIApplication*)application { [self._developerAgentsetBackgroundKeepAlive]; } // App将要从后台返回 -(void)applicationWillEnterForeground:(UIApplication*)application { [self._developerAgentdetectLinkWhenApplicationWillEnterForeground]; }
2.7 连接云通讯服务平台
//myDevId、myAppId、myClientId来源于开发者的应用 [self._developerAgentsetDevID:myDevId appId:myAppId clientId:myClientId]; //Tcp连上去了就会自动登录 [self._developerAgent startLink];
2.8 呼叫发起
/** @brief 呼叫发起 @param toName 包含开发者ID、应用ID和子账号ID,中间用“#”号隔开 @param toPhone 对方手机号码,用于直拨 @param display 来电显示的号码 @param attData 点对点呼叫透传过去的主叫数据串 */ -(BOOL) sendCallInvite:(NSString *)toName toPhone:(NSString *)toPhone display:(NSString *)display attData:(NSString *)attData;
2.9各功能回调函数实现
2.9.1呼叫相关通知
/** @brief 呼叫呼入通知 @param fromName 包含开发者ID、应用ID和子账号ID,中间用“#”号隔开 @param display 呼叫显示号码,一般为手机号码 @param attData 点对点呼叫透传过来的来自主叫的数据串 */ -(void)ULinkService:(ULinkService *)aObject calleeReceiveIncomingCall:(NSString *)fromName display:(NSString *)display attData:(NSString *)attData; /** @brief 呼叫状态通知 @paramcallState呼叫的状态 */ -(void)ULinkService:(ULinkService *)aObject callStateNotify:(CallState )callStatestateCode:(int)stateCode;
2.9.2 http错误通知
/** @brief 发起http请求,主要用户获取云服务的IP和Port,及登录令牌 @paramobj通知回来的数据字典 */ -(void)ULinkService:(ULinkService *)aObject startHttpRequest:(id)obj; /** @brief http请求返回 @paramstateCode通知回来的错误码 */ -(void)ULinkService:(ULinkService *)aObject httpGetInitDataReturn:(int)stateCode; /** @brief 回拨发起的回调 @parammsgDic通知回来的数据字典 */ -(void)ULinkService:(ULinkService *)aObject httpCallBackStartReturn:(id)msgDic; /** @brief 回拨挂断的回调 @parammsgDic通知回来的数据字典 */ -(void)ULinkService:(ULinkService *)aObject httpCallBackStopReturn:(id)msgDic;
2.9.3 tcp相关通知
/** @brief 发起Tcp连接,注:连接成功后会自动登录 @paramobj通知回来的数据字典 */ -(void)ULinkService:(ULinkService *)aObject startTcpLink:(id)obj; /** @brief 登录超时返回 @paramerrorCode通知回来的错误码 */ -(void)ULinkService:(ULinkService *)aObject sendLoginTimeOut:(int)stateCode; /** @brief 登录成功后的返回 @paramerrorCode通知回来的错误码 */ -(void)ULinkService:(ULinkService *)aObject receiveLoginAck:(int)stateCode; /** @brief 收到服务器的踢人通知 @paramerrorCode通知回来的错误码 */ -(void)ULinkService:(ULinkService *)aObject receiveKickOff:(int)stateCode; /** @brief Tcp连接错误通知 @paramerrorCode通知回来的错误码 */ -(void)ULinkService:(ULinkService *)aObject tcpNetworkError:(int)stateCode;