本文为您介绍了在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,可设置时间区间30s~90s。
-(void)setCallTimeout:(int) time;
- 发送dtmf,仅在点对点通话中对端为PSTN且通话中才能发送,且只支持
0-9、*、#
输入。-(BOOL)sendDtmfData:(NSString *)dtmf;
- 切换音频播放路由。
-(void)audioSpeakerIsOn:(BOOL)isOn; //isOn,音频播放路由:YES-扬声器播放,NO-听筒播放。
说明 调用该方法前需要确保通话已经建立。