iOS SDK开发指南

说明:本指南以iOS为开发平台的接入说明,方便有iOS研发基础的开发者快速了解整合有联云通讯服务接口。其中本部分指南只包含通讯服务的接入方式和基于平台提供的Demo为蓝本进行在线体验。如需开发出针对企业和开发者所需的个性化应用,仍然需要具备一定经验的iOS开发经验(例如界面控件的开发以及与应用服务器配合调试的基础)

本指南一共包含两块信息:

  • 1、快速体验:编译官方提供的Demo源码,并即时体验
  • 2、快速上手:基于SDK和文档信息开发一个简易版的语音应用
  • 3、快速上手:提供在线视频理解SDK接入过程

第一节. 快速体验

有联云开放平台为方便开发者立即体验平台提供的各项通讯服务,提供基于iOS平台的简易功能的Demo iPA安装包以及Demo 源码,并且提供一定金额的免费测试费用。因Apple 官方开发政策限制原因,我们强烈建议您使用我们的源码并且配置您自有的开发者证书进行编译安装体验(相关开发政策请至Apple官网了解)。

常规准备工作(必须)

编译环境准备(必须)

  • Mac OS OS X10.10.5 (Yosemite)及以上版本; Xcode7.0及以上版本。
  • (推荐使用最新官方发布版本Xcode7.0,因版本差异部分配置项不同,可能造成编译不通过)

iOS Demo 源码介绍

默认官方提供的iOS Demo 源码最新版是基于Xcode 7.0 和 ULink官方发布的最新库 编译通过。

ULinkDemo功能介绍,Demo演示了ULink的API接口调用,主要实现的功能:

  • 1. 免费电话:需要对方的Client账号,免费通话
  • 2. 电话直拨:需要对方的手机号,主叫接入网络电话,被叫接入普通电话的网络通话
  • 3. 回拨呼叫:需要对方的手机号,双方都会接入普通电话网络进行通话

ULinkDemo工程文件结构说明:

  • 1. Product:应用生成的app;
  • 2. Framework:包含工程需要依赖的资源项,主要是系统和需要依赖的库资源;
  • 3. ULinkDemo:包含整个工程需要完成的代码文件:视图控制类的实现文件、resource文件夹(账号文件,图片资源文件等)、sdk文件夹(SDK库文件)、Supportting Files文件夹

Demo的编译及运行

  • 1. 导入DEMO工程:解压下载ULink_PHONE_DEMO_iOS.rar(此名字取决于官网的)文件,在解压缩的文件夹中,双击ULinkDemo.xcodeproj文件,在XCode中打开工程,即可对Demo进行 其他操作。
  • 2. SDK导入:解压下载ULink_IOS_SDK音频版_V1.1.0.rar(此名字取决于官网的)文件,将解压后的SDK文件添加到Demo工程中。
  • 3. 基于Xcode开发环境,进行编译:查看教程

第二节. 快速上手

快速上手主要介绍以SDK为核心,加入简单代码实现通讯服务功能。包括SDK介绍、SDK引入、以及开发一个简易通讯服务:VoIP通话功能。如需更好的开发其他通讯服务,请阅读开发文档内的其他章节。

2.1 SDK介绍

下载相应版本的SDK:官方下载地址

SDK文件说明,其中包含以下文件:

  • 1. ULinkService.h:能力类文件
  • 2. ULinkService:类连接客户端到云通讯平台服务器。这个类包含所有开发者使用到的API。
  • 3. libULinkVoiceSDK.a: SDK功能静态库。
  • 4. CommonClass.h:消息公共类文件,主要包含了接口中所需要的数据相关类。

2.2 配置工程

2.2.1 导入SDK

将下载好的SDK文件夹(ULinkVoiceSDK)拖入到项目中,并勾选上Destination

2.2.2添加依赖库

向Build Phases → Link Binary With Libraries 中添加依赖库

SDK依赖库有:

  • 1. AudioToolbox.framework
  • 2. AvFoundation.framework
  • 3. SystemConfiguration.framework
  • 4. CFNetwork.framework
  • 5. CoreGraphics.framework
  • 6. libULinkVoiceSDK.a

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;

想了解更多信息,请咨询QQ : 12925489

免费咨询