====== iOS SDK接口介绍 ======
本页介绍iOS SDK集成至应用内所需的功能接口函数,当你计划接入SDK提供的语音、视频、IM等相关服务时,都必须先初始化,初始化完成以后才能接入其他函数的功能。
如果计划使用语音和视频功能服务,则需要集成TCP SDK和Video SDK。
如果计划使用IM功能服务,则需要集成TCP SDK和IM SDK。
如果计划使用语音、视频、IM等相关服务,则需要集成TCP SDK、Video SDK和IM SDK。
SDK初始化流程
初始化UCSTcpClient实例对象----->初始化UCSService实例对象----->使用UCSTcpClient对象接入云平台----->音视频能力、IM能力
我们为集成SDK提供了更加详细的:[[iossdkguide|开发指南]],此外我们针对SDK开发一个用于功能演示的Demo([[http://www.ucpaas.com/product_service/download|下载地址]])
===== 1、TCP SDK初始化配置连接 =====
====1.1 初始化实例====
原型:+ (instancetype)sharedTcpClientManager;
功能:实例化UCSTcpClient的一个单例对象,启动连接云平台能力,所有功能实现都要基于与云平台的连接。
返回:UCSTcpClient实例对象
备注:必须在调用其他能力接口前调用,这个方法是生成UCSTcpClient的唯一方法,请不要使用init()等其他初始化方法,否知会出现未知的错误
参数:无
====1.2 设置事件代理====
原型:- (void)setTcpDelegate:(id ) delegate;
功能:设置TCP SDK代理。
返回:无
备注:如果需要通过回调监控tcp连接状态之类的,就必须设置这个代理。一般在初始化实例后,连接云平台前调用。
参数:
^参数名 ^类型 ^约束 ^说明 |
|delegate |UCSTCPDelegateBase |必选 |tcp事件回调代理 |
====1.3 连接云平台(明文)====
原型:- (void)login_connect_old:(NSString *)accountSid withAccountToken:(NSString *)accountToken withClientNumber:(NSString *)clientNumber withClientPwd:(NSString *)clientPwd success:(void (^)(NSString *userId))success failure:(void (^)(UCSError *error))failure;
功能:连接到云之讯平台
返回:无
备注:一般在初始化实例后,连接云平台时调用(注意:这个登陆方式是为了兼容旧的SDK,后面可能会废弃)。 使用这个接口的唯一场景是: 用户已经在现有的app中集成了我们旧的SDK,并且不希望更改成新的登陆方式(云之讯建议你更改成新的登陆方式)。其他场景下,请使用新的登陆方式。
参数:
^参数名 ^类型 ^约束 ^说明 |
|accountSid |NSString |必选 |开发者账号Id |
|accountToken |NSString |必选 |开发者账户token(官网注册开发者账号时,由云平台自动分配) |
|clientNumber |NSString |必选 |Client账号 |
|clientPwd |NSString |必选 |Client账号密码 |
|success |block |必选 |登陆成功回调Block,返回值userid |
|failure | block |必选 |登陆失败回调block,返回值UCSError的实例对象 |
====1.4 连接云平台(密文)====
原型:- (void)login_connect:(NSString *)token success:(void (^)(NSString *userId))success failure:(void (^)(UCSError *error))failure;
功能:连接到云之讯平台。
返回:无
备注:一般在初始化实例后,连接云平台时调用。(注意: 除非是为了兼容旧的SDK,否则请使用这个登陆方式)。
参数:
^参数名 ^类型 ^约束 ^说明 |
|token |NSString |必选 |加密的token |
|success |block |必选 |登陆成功回调Block,返回值userid |
|failure | block |必选 |登陆失败回调block,返回值UCSError的实例对象 |
====1.5 获取连接云平台状态====
原型:- (BOOL)login_isConnected;
功能:判断当前帐号与云平台的连接状态
返回:YES:已连接 ;NO:未连接
备注:开发者在使用能力接口前,可以通过该接口,判断是否已经正常连接云平台
参数:无
====1.6 断开云平台====
原型:- (void)login_uninitWithFlag:(BOOL)flag;
功能:断开客户端和云平台的连接,并且根据flag标识的bool值选择是否关闭离线推送(推送功能暂时只有IM使用)。
返回:无
备注:在客户端不需要继续与云平台保持连接的时候,调用这个方法断开连接。断开连接后,客户端将不会再收到与云平台的消息推送,也无法发送消息到云平台。断开连接,不会影响APNS离线推送功能
参数:
^参数名 ^类型 ^约束 ^说明 |
|flag |BOOL |必选 |是否关闭推送的bool值。YES,关闭。NO,不关闭。(暂时只有IM使用推送功能) |
====1.7 查询当前网络状态====
原型:- (UCSNetworkStatus)getCurrentNetWorkStatus;
功能:查询当前网络状态
返回:当前网络状态UCSNetworkStatus枚举
备注:无
参数:无
=====2、 TCP SDK连接事件代理接口 =====
目的是提供TCP的网络链接状态的监听。
====2.1 TCP SDK连接状态事件代理====
原型:- (void)didConnectionStatusChanged:(UCSConnectionStatus)connectionStatus error:(UCSError *) error;
功能:监听连接状态
返回:无
备注:连接状态变化时,会通过此方法回调开发者。
参数:
^参数名 ^类型 ^约束 ^说明 |
|connectionStatus |UCSConnectionStatus |必选 |连接状态的枚举值,具体参考UCSTcpDefine.h文件 |
|error |UCSError |必选 |错误码实例对象 |
=====3、 音视频引擎初始化配置接口 =====
====3.1 初始化实例====
原型:- (UCSService *) initWithDelegate:(id)delegate;
功能:初始化SDK,启动能力服务,以便用户使用语音、视频等相关能力接口。
返回:UCSService实例对象
备注:必须在调用其他能力接口前调用,在tcp sdk初始化之后,tcp sdk登陆之前调用。只需要初始化一次,初始化完成后保存返回的对象。
参数:
^参数名 ^类型 ^约束 ^说明 |
|delegate |UCSEventDelegate |必选 |为事件回调代理 (提供互联网音视频能力回调等实例对象), \\ 详细参见UCSEvent.h |
====3.2 设置事件代理====
原型:-(void)setDelegate:(id< UCSEventDelegate>)delegate;
功能:设置事件代理方法
返回:无
备注:一般在初始化实例后,调用其他能力接口前调用,在tcp sdk初始化之后,tcp sdk登陆之前调用。
参数:
^参数名 ^类型 ^约束 ^说明 |
|delegate |UCSEventDelegate |必选 |为事件回调代理 (提供互联网音视频能力回调等实例对象), \\ 详细参见UCSEvent.h |
====3.3 获取SDK版本号====
原型:- (NSString*) getUCSSDKVersion;
功能:获取SDK版本号
返回:SDK版本信息字符串
备注:用于知道当前SDK版本信息,便于功能细节追溯
参数:无
====3.4 设置Ipv6====
原型:- (void)setIpv6:(BOOL)isIpv6;
功能:设置当前网络是否是IPV6
返回:无
备注:默认IPV4,建议在初始化完成后设置,也可在拨打电话之前设置。
参数:
^参数名 ^类型 ^约束 ^说明 |
|isIpv6 |BOOL |必选 |NO:不是IPv6 YES:是IPv6 |
=====4、音视频引擎初始化配置代理接口=====
====4.1 引擎初始化成功代理====
原型:- (void)onInitEngineSuccessful:(NSInteger)result;
功能:引擎初始化成功回调
返回:无
备注:建议登陆接口在引擎初始化成功后调用。
参数:
^参数名 ^类型 ^约束 ^说明 |
|result |NSInteger |必选 |0表示成功 |
=====5、 互联网音频通话能力接口 =====
====5.1 发起呼叫====
原型:- (void)dial:(NSInteger)callType andCalled:(NSString *)calledNumber andUserdata:(NSString *)callerData;
功能:发起免费通话和视频通话
返回:无
备注:
* 语音免费呼叫:SDK与SDK之间语音通话场景;
* 视频呼叫:SDK与SDK之间视频通话场景;
参数:
^参数名 ^类型 ^约束 ^说明 |
|callType |NSInteger |必选 |拨打电话方式:0 语音免费通话;2 视频通话; |
|calledNumber |NSString |必选 |被叫userid账号 |
|callerData |NSString |必选 |开发者透传数据字段,方便开发者透传自定义应用信息,该字段信息会通过云平台回调函数透传返回给开发者服务器 |
====5.2 释放通话====
原型:- (void) hangUp: (NSString*)callid;
功能:挂断通话
返回:无
备注:主叫方:外呼过程中或通话中,调用这个接口结束一路呼叫;被叫方:来电过程中或通话中,调用这个接口结束一路通话;
参数:
^参数名 ^类型 ^约束 ^说明 |
|callid |NSString |无 |释放的会话id (目前版本可以为空),该参数可由<接收来电>、<呼叫振铃>事件回调中得到 |
====5.3 接听来电====
原型:- (void) answer: (NSString*)callid;
功能:接听来电电话
返回:无
备注:用于被叫来电时,用户触发接听电话场景,被叫收到onIncomingCall事件后,可调用answer接口接听或调用reject接口拒绝接听。
参数:
^参数名 ^类型 ^约束 ^说明 |
|callid |NSString |无 |来电通话id (目前版本可以为空) |
====5.4 拒绝来电====
原型:- (void) reject: (NSString*)callid;
功能:拒接来电电话
返回:无
备注:用于被叫来电时,用户触发拒接电话场景,被叫收到onIncomingCall事件后,可调用answer接口接听或调用reject接口拒绝接听。
参数:
^参数名 ^类型 ^约束 ^说明 |
|callid |NSString |无 |来电通话id (目前版本可以为空) |
====5.5 发送DTMF====
原型:- (BOOL)sendDTMF: (char )dtmf;
功能:发送DTMF信息
返回:YES:成功 ;NO:失败
备注:用于通话过程中发送DTMF场景,取值为0-9、*、#。
参数:
^参数名 ^类型 ^约束 ^说明 |
|dtmf |NSString |必选 |DTMF值 |
====5.6 设置扬声器状态====
原型:- (void) setSpeakerphone:(BOOL)enable;
功能:设置扬声器状态,开启或关闭
返回:无
备注:用于通话过程中开启或关闭免提场景。
参数:
^参数名 ^类型 ^约束 ^说明 |
|enable |BOOL |必选 |打开:YES,关闭:NO |
====5.7 获取扬声器状态====
原型:- (BOOL) isSpeakerphoneOn;
功能:获取当前扬声器是否开启状态
返回:YSE:扬声器开启; NO:扬声器关闭
备注:用于通话过程中判断扬声器是否开启场景。
参数:无
====5.8 设置静音状态====
原型:- (void)setMicMute:(BOOL)on;
功能:设置静音状态,开启或关闭
返回:无
备注:用于通话过程中开启或关闭静音场景(开启后,自己能听到对方的声音,对方听不到自己的声音)。
参数:
^参数名 ^类型 ^约束 ^说明 |
|on |BOOL |必选 |打开:YES,关闭:NO |
====5.9 获取静音状态====
原型:- (BOOL)isMicMute;
功能:获取当前静音是否开启状态
返回:YES:静音开启; NO:静音关闭
备注:用于通话过程中判断静音是否开启场景。
参数:无
====5.10 Push续活通知====
原型:- (void) callIncomingPushRsp:(NSString*)callid withVps:(NSInteger)vpsid
withReason:(UCSReason*)reason;
功能:iOS离线来电续活
返回:无
备注: 当云平台接收要来电时,被叫方如不在线,则云平台会给开发者应用服务器回调<离线来电Push续活通知>,开发者应用服务器可以通过APNS苹果推送机制,将来电信息推送到应用客户端,并在应用客户端激活SDK时,使用该接口通知云平台SDK已激活,正在等待云平台下发来电呼叫。应用可以根据当前网络环境或业务逻辑判断是否接听来电,结果可以通过reason字段发给云平台,云平台根据reason判断是否继续下发来电或释放会话。
参数:
^参数名 ^类型 ^约束 ^说明 |
|callid |NSString |无 |当前来电会话id (目前版本可以为空) |
|vpsid |NSInteger |必选 |云平台会话控制服务器标识id |
|reason |UCSReason |必选 |原因UCSReason { \\ NSInteger reason;/*错误码*/ \\ NSString *msg;/*描述*/ \\ } \\ 详细请参见[[video_sdk:iosv3returncode|IOS 返回码]] |
=====6、互联网音频通话能力事件代理接口======
====6.1 呼叫失败事件代理====
原型:- (void)onDialFailed:(NSString*)callid withReason:( UCSReason*) reason;
功能:音视频通话呼叫失败事件代理
返回:无
备注:用于音视频通话,主叫侧接收到云平台下发的呼叫失败应答场景。外呼时,如呼叫失败,就返回该事件。外呼失败的原因有很多,可以根据reason来判断。
参数:
^参数名 ^类型 ^约束 ^说明 |
|callid |NSString |无 |当前通话id (目前版本可以为空) |
|reason |UCSReason |必选 |呼叫失败的原因详细请参见[[video_sdk:iosv3returncode|IOS 返回码]] |
====6.2 呼叫释放事件代理=====
原型:- (void) onHangUp:(NSString*)callid withReason:( UCSReason*) reason;
功能:释放通话事件回调代理
返回:无
备注:用于音视频通话,通话过程中主动释放通话场景。通话过程中,呼叫释放,就返回该事件。外呼过程中,呼叫释放,只调用onDialFailed事件代理。
参数:
^参数名 ^类型 ^约束 ^说明 |
|callid |NSString |无 |当前通话id (目前版本可以为空) |
|reason |UCSReason |必选 |呼叫失败的原因详细请参见[[video_sdk:iosv3returncode|IOS 返回码]] |
====6.3 振铃事件代理=====
原型:- (void) onAlerting:(NSString*)callid;
功能:音视频通话被叫应答回铃事件代理
返回:无
备注:用于音视频通话,主叫侧接收到云平台下发的呼叫回铃应答场景。外呼时,被叫如有回应,就返回该事件。当收到该事件时,对方会响起振铃音,本地会响起回铃音。
参数:
^参数名 ^类型 ^约束 ^说明 |
|callid |NSString |无 |当前通话id (目前版本可以为空)|
====6.4 接听事件代理====
原型:- (void) onAnswer:(NSString*)callid;
功能:音视频通话被叫应答接听事件代理
返回:无
备注:用于音视频通话,主叫侧接收到云平台下发的呼叫接听应答场景。外呼时,被叫如有回应接听,就返回该事件。当收到该事件时,表明对方已经应答接听,进入通话状态,应用需要提醒用户已经进入通话状态。
参数:
^参数名 ^类型 ^约束 ^说明 |
|callid |NSString |无 |当前通话id (目前版本可以为空)|
====6.5 来电事件代理====
原型:- (void)onIncomingCall:(NSString*)callid withcalltype:(UCSCallTypeEnum) callType withcallerinfo:(NSDictionary *)callinfo;
功能:互联网音视频来电事件代理
返回:无
备注:用于互联网音视频通话,被叫侧接收到云平台下发呼叫的场景。应用接收到该事件后,需要提醒用户来电或者根据自己业务逻辑拒绝来电。
参数:
^参数名 ^类型 ^约束 ^说明 |
|callid |NSString |无 |当前通话id (目前版本可以为空) |
|callType |NSString |必选 |通话类型: 0 语音免费电话;2 视频电话; |
|callinfo |NSDictionary |必选 |来电会话信息(主被叫号码、会话id等) 待补充。。。 |
====6.6 DTMF事件代理====
原型:- (void)onDTMF:(NSString *)value;
功能:DTMF事件回调代理
返回:无
备注: 通话过程中,接收对方DTMF,应用根据DTMF信息进行业务逻辑处理,一般适用于门禁系统,智能解锁场景。
参数:
^参数名 ^类型 ^约束 ^说明 |
|value |NSString|必选 |DTMF值[[https://tools.ietf.org/html/rfc2833|rfc 2833]]协议标准 |
====6.7 OTT通话网络状态回调====
原型:- (void)onNetWorkState:(UCSNetworkState)networkState;
功能:OTT网络状态回调代理
返回:无
备注:通话过程中,应用根据OTT网络状态回调进行界面显示。
参数:
^参数名 ^类型 ^约束 ^说明 |
|networkState |UCSNetworkState |必选 |UCSNetworkState:枚举 网络状态为优秀、一般、良好、很差 |
=====7、互联网视频通话能力接口=====
====7.1 设置视频显示窗口====
原型:-(UIView *)allocCameraViewWithFrame:(CGRect)frame;
功能:实例化视频的显示窗口
返回:UIView 视图窗口
备注:用于实例化视频图像显示窗口。
参数:
^参数名 ^类型 ^约束 ^说明 |
|frame |CGRect |必选 |设置显示本地视频视图控件的大小 |
====7.2 设置视频显示参数====
原型:-(BOOL)initCameraConfig:(UIView*)localVideoView withRemoteVideoView:(UIView*)remoteView;
功能:设置视频的显示参数
返回:YES成功;NO失败
备注:用于设置视频图像显示大小。
参数:
^参数名 ^类型 ^约束 ^说明 |
|localVideoView |UIView |必选 |设置显示本地视频视图控件 |
|remoteView |UIView |必选 |设置显示对方视频视图控件 |
====7.3 获取摄像头个数====
原型:- (int) getCameraNum;
功能:获取到当前手机的摄像头个数
返回:摄像头个数
备注:无
参数:无
====7.4 前后摄像头切换====
原型:- (BOOL) switchCameraDevice:(int)CameraIndex;
功能:后置摄像头和前置摄像头的切换
返回:YES成功;NO失败
备注:前置摄像头与后置摄像头的切换
参数:
^参数名 ^类型 ^约束 ^说明 |
|CameraIndex |int |必选 |后置摄像头:0 前置摄像头:1 |
====7.5 切换视频模式=====
原型:- (BOOL) switchVideoMode:(UCSCameraType)type;
功能:切换视频模式
返回:YES成功;NO失败
备注:三种视频模式:本地模式、远程模式、正常模式。
* 远程模式 : 处于视频流接收状态。可以看到对方的视频,对方不能看本端的视频。
* 本地模式 : 处于视频流发送状态,不可以看到对方的视频,对方能看本端的视频。
* 正常模式 : 处于视频流发送以及接收状态,双方视频正常状态。
参数:
^参数名 ^类型 ^约束 ^说明 |
|type |UCSCameraType |必选 |UCSCameraType: 枚举 远程模式、本地模式、正常模式 |
====7.6 自定义视频编解码参数====
原型:-(void)setVideoAttr:(UCSVideoEncAttr*)ucsVideoEncAttr andVideoDecAttr:(UCSVideoDecAttr*)ucsVideoDecAttr;
功能:设置视频编码和解码参数
返回:无
备注:通过UCSVideoEncAttr设置视频编码 分辨率、开始码率、帧率参数, 通过UCSVideoDecAttr设置视频解码 分辨率参数(在设置视频显示参数前调用)
参数:
^参数名 ^类型 ^约束 ^说明 |
|ucsVideoEncAttr |UCSVideoEncAttr |必选 |参考ucsVideoEncAttr参数实体 |
|ucsVideoDecAttr |UCSVideoDecAttr |必选 |参考ucsVideoDecAttr参数实体 |
====7.7 开启/关闭视频来电预览====
原型:- (BOOL)setCameraPreViewStatu:(BOOL)isPreView;
功能:来电时是否支持预览
返回:YES 成功 NO失败
备注:视频来电时,未接听,是否支持对方预览摄像头显示图像,在登录前设置
参数:
^参数名 ^类型 ^约束 ^说明 |
|isPreView |BOOL |必选 |支持预览:YES 不支持预览:NO |
====7.8 获取来电时是否支持预览====
原型:- (BOOL)isCameraPreviewStatu;
功能:获取来电时是否支持预览接口
返回:YES 成功 NO失败
备注:无
参数:无
====7.9 旋转视频====
原型:- (BOOL) setRotationVideo:( unsigned int ) sendRotation withReciviedRotation:( unsigned int )reciviedRotation;
功能:设置视频显示的角度
返回:YES成功;NO失败
备注:旋转对端视频图像的显示角度 参数值为4个方向 0 90 180 270
参数:
^参数名 ^类型 ^约束 ^说明 |
|sendRotation |unsigned int |必选 |本端视频图像的角度 |
|reciviedRotation |unsigned int |必选 |对端视频图像的角度 |
====7.10 视频截图====
原型:- (void)cameraCapture:(int)islocal withFileName:(NSString*)filename withSavePath:(NSString*)savePath;
功能:截取摄像头显示的视频图像
返回:无
备注:截取本地的摄像头显示图像或者对方的显示图像,然后保存到本地路径地址。
参数:
^参数名 ^类型 ^约束 ^说明 |
|islocal |int |必选 |远端截图:0 本地截图:1 |
|filename |NSString |必选 |截取的图片名称 |
|savePath |NSString |必选 |存放的本地路径 |
===== 8、互联网视频通话能力代理接口 =====
====8.1 视频截图回调通知====
原型:- (void)onCameraCapture:(NSString*)cameraCapFilePath;
功能:视频截图回调
返回:无
备注:视频截图回调函数
参数:
^参数名 ^类型 ^约束 ^说明 |
|cameraCapFilePath |NSString |必选 |存放的本地路径 |
====8.2 对端视频模式回调通知====
原型:- (void)onRemoteCameraMode:(UCSCameraType)type;
功能:对方模式切换的回调
返回:无
备注:当对端视频模式切换的时候,通过该回调,可以知道对方所处的视频模式状态。 本地视频模式:对方处于视频流发送状态,本端视频可以看到对方的视频,对方看不到本端的视频。远程视频模式:对方处于视频流接收状态,本端视频不可以看到对方的视频,对方能看本端的视频。正常视频模式:对方处于视频流发送以及接收状态,双方视频正常状态。(注:当本地视频模式为本地视频模式,或者对方视频模式为远程视频模式,此时的网络状态是不准确的。)
参数:
^参数名 ^类型 ^约束 ^说明 |
|type |UCSCameraType |必选 |对端视频模式枚举值,具体参考UCSCameraeType定义。 |
===== 9、注意事项 =====
====9.1 摄像头操作接口====
关于摄像头的操作接口,如前后摄像头切换、摄像头旋转角度等操作,需要在通话建立后,才可以操作。通话结束后的复位操作需要开发者自己完成。
====9.2 静音、扬声器、闪光灯等设备操作接口====
静音、扬声器、闪光灯等设备操作接口,需要在主叫收到onAlerting回调时或者被叫收到onIncomming回调时进行操作。通话结束后的复位操作需要开发者自己完成。
====9.3 视频来电预览操作接口====
视频来电预览接口,在进行通话业务前进行配置。配置一次即可,不需要每通电话都配置。