用户工具

video_sdk:iossdkfunc

目录

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提供了更加详细的:开发指南,此外我们针对SDK开发一个用于功能演示的Demo(下载地址

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;/*描述*/
}
详细请参见IOS 返回码

6、互联网音频通话能力事件代理接口

6.1 呼叫失败事件代理

原型:- (void)onDialFailed:(NSString*)callid withReason:( UCSReason*) reason;

功能:音视频通话呼叫失败事件代理

返回:无

备注:用于音视频通话,主叫侧接收到云平台下发的呼叫失败应答场景。外呼时,如呼叫失败,就返回该事件。外呼失败的原因有很多,可以根据reason来判断。

参数:

参数名 类型 约束 说明
callid NSString 当前通话id (目前版本可以为空)
reason UCSReason 必选 呼叫失败的原因详细请参见IOS 返回码

6.2 呼叫释放事件代理

原型:- (void) onHangUp:(NSString*)callid withReason:( UCSReason*) reason;

功能:释放通话事件回调代理

返回:无

备注:用于音视频通话,通话过程中主动释放通话场景。通话过程中,呼叫释放,就返回该事件。外呼过程中,呼叫释放,只调用onDialFailed事件代理。

参数:

参数名 类型 约束 说明
callid NSString 当前通话id (目前版本可以为空)
reason UCSReason 必选 呼叫失败的原因详细请参见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值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 视频来电预览操作接口

视频来电预览接口,在进行通话业务前进行配置。配置一次即可,不需要每通电话都配置。


页面工具