本文为您介绍了在iOS开发时,SDK的使用说明及示例。

创建实例

引入头文件

#import <AlicomRTCSDK/AlicomRTCSDK.h>

创建AlicomRTC实例

[[AlicomRTC shareInstance] initWithRtcId:rtcid];
说明

rtcid:融合通信账号ID 账号由服务端的AddRtcAccount接口生成(Module字段),这里需要app端调用服务端接口进行获取

app->appserver->aliServer

注意:初始化之前不需要自己主动获取token,Token的获取会在初始化完成之后,通过回调告知何时需要获取,只要实现updateToken給SDK设置Token即可

设置相关代理

[ACToken shareInstance].delegate = self;
[AlicomRTC shareInstance].delegate = self;

ACTokenDelegate代理回调

通知客户更新token

//刷新token使用
- (void)updateToken:(void(^)(ACToken *token))tokenHandler
说明 用户在实现该接口的时候可以向服务端获取token,通过服务端的GetRtcToken接口实现token获取再返给客户端

AlicomRTCServiceDelegate代理回调

@required
/**
 初始化成功,服务可用

 */
-(void)onServiceAvailable;


/**
 初始化失败,服务不可用

 @param errCode 错误码
 @param errMsg 错误信息
 */
-(void)onServiceUnavailableWithErrorCode:(NSInteger)errCode errorMsg:(NSString *)errMsg;

@optional

/**
 自定义消息接受回调

 @param sequence 消息序列号
 @param content 消息内容
 @param sourceRtcId 消息来源
 @param timestamp 时间戳
 */
-(void)onCustomMessageReceivedWithSequence:(long long)sequence sourceRtcId:(NSString *)sourceRtcId content:(NSString *)content timestamp:(long long)timestamp;

/**
 自定义消息发送回调

 @param sequence 消息序列号
 @param isSuccess 发送消息是否成功
 @param errCode 失败的话,有错误码,否则为0
 @param errMsg 失败的话,错误信息。否则为nil
 */
-(void)onCustomMessageSendedWithSequence:(long long)sequence isSuccess:(BOOL)isSuccess errorCode:(NSInteger)errCode errorMsg:(NSString *)errMsg;

接口说明:

其中onServiceAvailable和onServiceUnavailableWithErrorCode:errorMsg:是必须实现的接口

初始初化通话实例

/**
 voip2voip通话

 @param calleeRtcIds 被叫rtcId账号列表
 @param cancleFlag 通话被拒接标志,默认为CALL_CANCLE_FLAG_WHEN_ONE_CALLEE_REJECT
 @param extendString  拓展字段(非必要参数)

 @return Call的对象(需判断返回是否为空值)
 */
- (Call *)createVoipCall:(NSArray *)calleeRtcIds cancleFlag:(CALL_CANCLE_FLAG)cancleFlag withExtendString:(NSString *)extendString;

/**
 voip2pstn通话

 @param calleePhoneNumber 被叫电话号码
 @param calleeShowNumber  被叫显示来电号码
 @param customLine  自有线路名称,无则传入nil
 @param extendString  拓展字段(非必要参数)

 @return Call的对象(需判断返回是否为空值)
 */
- (Call *)createPstnCall:(NSString *)calleePhoneNumber andCalleeShowNumber:(NSString *)calleeShowNumber customLine:(NSString *)customLine withExtendString:(NSString *)extendString;

/**
 自定义消息发送(仅支持有账号模式)

 @param targetRtcId 目标rtctId账号
 @param content 自定义消息内容
 */
- (void)sendCustomMessageWithTargetRtcId:(NSString *)targetRtcId content:(NSString *)content;

在创建完成通话实例之后需要进行通话状态管理,调用如下方法

-(void)start;

停止呼叫

-(void)stop;

通话状态管理,需要实现CallDelegate(可选)

/**
 被叫来电,振铃彩铃
 @param call Call对象
 */
-(NSData *)ringtoneWithCallee:(Call*)call;

/**
 主叫呼叫中,振铃彩铃
 @param call Call对象
 */
-(NSData *)ringtoneWithCaller:(Call*)call;

/**
 音频电话来电,被叫振铃,并返回振铃数据
 @param call Call对象
 */
-(void)onReceivingAudioCall:(Call*)call;

/**
 视频电话来电,被叫振铃,并返回振铃数据
 @param call VideoCall对象
 */
-(void)onReceivingVideoCall:(Call*)call;

/**
 媒体连接成功了
 @param call Call对象
 */
-(void)onCallConnected:(Call*)call;

/**
 接通对方了,主叫振铃
 @param call Call对象
 */
-(void)onCallRinging:(Call*)call;

/**
 被叫接听了,主叫停止振铃
 @param call Call对象
 */
-(void)onCallAnswered:(Call*)call;

/**
 通话结束
 @param call Call对象
 @param code code
 @param msg  msg
 */
-(void)onCallStopped:(Call *)call withCode:(NSInteger)code andMsg:(NSString *)msg;

/**
 音频输出模式变更
 @param call call对象
 @param mode 输出mode
 */
-(void)onPlayModeChanged:(Call*)call withMode:(Audio_Session_Mode)mode;

/**
 音频接收dtmf数据
 @param call call对象
 @param dtmf 数据内容,timestamp 时间戳
 */
-(void)onDtmfData:(Call*)call withDtmf:(NSString *)dtmf withTimestamp:(long long)timestamp;

/**
 通话中的网络质量
 @param call Call对象,quality,网络质量,0-好,1-中,2-差
 */
-(void)onNetworkQuality:(Call*)call withQuality:(int)quality;

/**
 通话中的指标统计
 @param call Call对象,model StatisticModel 对象
 */
-(void)onMediaStatistics:(Call*)call withModel:(StatisticModel *)model;

/**
 音视频模式变更
 @param call call对象
 @param mode 输出mode,0-视频,1-音频
 */
-(void)onMediaModeChanged:(Call*)call withMode:(int )mode;

功能使用

本地静音

-(void)mute;

取消本地静音

-(void)unmute;

呼叫默认超时时间设置,默认45s,可设置时间区间30~90s

-(void)setCallTimeout:(int) time;

发送dtmf,仅在点对点通话中对端为PSTN且通话中才能发送,且只支持0-9、*、#输入

-(BOOL)sendDtmfData:(NSString *)dtmf;

切换音频播放路由

-(void)audioSpeakerIsOn:(BOOL)isOn;
  • 调用该方法前需要确保通话已经建立。
  • 参数isOn:YES:扬声器播放 NO:听筒播放。