IOS WebRTC2SIPSDK 接入文档

接入之前

1.下载资源

SDKWebRTC2SIPDemo、SDK接入文档

官网首页:http://www.webrtc2sip.com

2.开发语言和系统配置

Apple设备:iPhone最低支持iPhone5s

系统版本:最低支持iOS 11.0

CPU架构:支持真机调试

支持语言:OC

3.开发环境

Xcode 10.0及以上版本、Apple开发证书或个人账号

4.搭建开发环境

4.1. 关于SDK

点击下载SDK,得到WebRTC2SIPSDK.framework

目录结构

截屏2021-08-22 下午10.11.39.png

4.2. 创建新的工程

使用XCode创建新的工程WebRTC2SIPDemo

11.png

4.3. 加入framework到工程中

WebTRC2SIPSDK.frameworkAgoraAIDenoiseExtension.xcframeworkAgoraCore.xcframeworkAgorafdkaac.xcframeworkAgoraRtcKit.xcframeworkAgoraSoundTouch.xcframework
截屏2021-08-22 下午10.22.14.png

4.4 设置Bitcode为NO

55.png

4.5 设置Embed & Sign

截屏2021-08-22 下午10.22.49.png

4.6 编辑info.plist,设置麦克风权限

Key

Type

Value

Privacy - Microphone Usage Description

String

使用麦克风的目的,例如:录制音频语音通话需要您的麦克风权限

Privacy - Camera Usage Description

String

使用摄像头的目的,例如:视频通话需要您的麦克风权限。(如果不需要视频功能可忽略)

Privacy - Local Network Usage Description

String

我们需要您的局域网网络权限才可以为您提供更好的服务

4.61 编辑info.plist,注明tcp服务

_local.sync.tcp

截屏2021-05-31 下午4.02.20.png

4.7 编辑info.plist,支持http网络权限

App Transport Security Settings

Allow Arbitrary Loads设置YES

屏幕快照 2019-12-12 下午5.28.58.png

4.8 打开后台音频权限

作用:APP退出在后台,通话可以继续保持不被断开

注意:该设置容易导致审核被拒,提交审核之前,请说明该设置用在哪个地方。如果被拒,则需要录制一段视频演示app被置入后台的通话保持过程。

66.png

4.9 集成成功

按照上述步骤完成WebRTC2SIPDemo的前期SDK集成准备之后,请使用Xcode连接iPhone真机,在真机调试环境下,执行编译Commond + B,提示Build Success,表示SDK集成成功。

5. 初始化

5.1 导入 SDK 头文件

#import <WebRTC2SIPSDK/WebRTC2SIPSDK.h>

5.2 设置消息监听delegate

/** * @brief 如果希望onReceived:被调用 必须设置Delegate */- (void)setReceiveMessageDelegate:(id<IMQZClientReceiveMessageDelegate>)delegate;

5.3 连接IM服务器

/** * @brief 连接IM服务器 推荐使用 * 连接失败,返回错误码,不再执行下一步操作。成功后开始登录。 * 登录成功,将开启重连模式,可以通过connectStatus监听连接状态。 * 登录失败,返回错误码,不再执行下一步操作。 * 如果是网络问题,请在网络正常的情况下再次调用该方法。如果是服务器错误,请及时跟我们客服反馈。 * @param appid 客户在启智平台申请的应用id,必传。 * @param uuid 用户的唯一标识,必传。测试版本请用测试账号 * @param complete 连接成功或者失败都会调用block。 */+ (void)connectIMServersWithAppid:(NSString*)appid uuid:(NSString*)uuid complete:(void (^)(IMQZError *error))complete;

5.3.1 如何调用

[IMQZClient connectIMServersWithAppid:@"appid" uuid:@"uuid" complete:^(IMQZError * _Nonnull error) {        if ([error.errorCode isEqualToString:@"0000"])        {            Sog(@"成功");        }else        {            Sog(@"失败:%@", error.errorInfo);        } }];

5.4 断开IM服务器

/** * @brief 断开IM服务器 * 任何情况都不会再次重连 接受不到任何数据 * 只能调用connectIMServersWithAppid再次连接IM服务器 */+ (void)disconnectIMServers;

5.5 设置重连

5.5.1 设置最大重连数

/** * @brief 设置最大重连次数 超过最大重连模式会调用connectStatus: * @param count 默认值100 取值范围 <=100 >=5 */- (void)setMaxReconnectionLimit:(NSUInteger)count;

5.5.2 设置是否自动重连

/** 设置是否自动重连 即在断线后是否重新连接 退出后台重新进入前台是否开始重连 *  默认会重新连接 *  必须在调用connectIMServersWithAppid之前设置 */@property (nonatomic, assign) BOOL isReconnection;

5.5.3 设置加入房间模式

/** 设置加入房间模式 0:默认模式,主叫收到被叫振铃信令,加入房间 1:主叫收到被叫接听信令,再加入房间 */@property (nonatomic, assign) NSUInteger joinRoomMode;

5.6 监听消息

/** * @brief 监听消息  * @param message 接收服务器发送过来的消息 */- (void)onReceived:(NSDictionary *)message;

5.7 连接状态监听

/** * @brief 连接状态 * @param connectStatus 1已连接, -1未连接, -2不连接(默认值), 0连接中, 2消息收取中, -3重连超时 */- (void)connectStatus:(NSInteger)connectStatus;

5.8 监听账号挤出

/** * @brief 账号挤出 挤出之后,该设备会退出登录,断开连接。 * @param error 挤出原因 */- (void)accountOut:(IMQZError*)error;

5.9 监听呼叫通知

/** 监听CallStatus通知 * 需要用户主动添加Observer */#define CallMessageNotification @"callMessageNotification"

7. 呼叫

7.1 发起呼叫

/** sipCall * @brief 发起呼叫 关闭通话视图之前必须调用cancelCall或者disconnectedCall * @param callee 被叫号码 如果不是86(code:表示国家区号)前缀的号码拼写方式:(91+code+被叫号码) * 如果是86前缀的号码,且绑定小号拼写方式:(92+被叫号码) * 如果是86前缀的号码,没有绑定小号拼写方式:(91+code+被叫号码) * @param isSip YES:外呼落地电话 NO:内部app呼叫 * @param callType VIDEO:视频呼叫 AUDIO:语音呼叫 * @param complete 发起呼叫信令到服务器 服务器响应后回调 * @param joinSuccess 房间加入成功后回调 */- (void)sipCall:(NSString*)callee isSip:(BOOL)isSip callType:(NSString*)callType complete:(void (^)(IMQZError *error))complete;

7.2 取消呼叫

/** * @brief 取消呼叫 * @param complete 返回错误信息 */- (void)cancelCall:(void (^)(IMQZError *error))complete;

7.3 挂断电话

/** * @brief 挂断电话 * @param complete 返回错误信息 */- (void)disconnectedCall:(void (^)(IMQZError *error))complete;

7.4 DTMF音频功能

/** * @briefDTMF音频功能 * @paramcomplete 返回错误信息 */- (void)sendDTMFNum:(NSString*)num complete:(void(^)(IMQZError*error))complete;

8 设置

8.1 设置免提

/** * @brief 设置免提 * @param enableSpeaker YES:开启 NO:关闭 * @return 0:成功  <0:失败 */- (int)setEnableSpeakerphone:(BOOL)enableSpeaker;

8.2 设置静音

/** * @brief 设置静音 * @param mute YES:开启 NO:关闭 * @return 0:成功  <0:失败 */- (int)muteLocalAudioStream:(BOOL)mute;

8.3 开始录音

/** * @brief 开始录音 * @param path 保存路径 * @param quality 录音质量 0:低 1:中 2:高 * @return 0:成功  <0:失败 */- (int)startAudioRecording:(NSString*)path quality:(NSUInteger)quality;

8.4 设置采集音量

/** * @brief 设置采集音量 * @param volume 调节音量的参数值范围是 0 - 400 400 表示原始音量的 4 倍 * @return 0:成功  <0:失败 */- (int)adjustRecordingSignalVolume:(NSInteger)volume;

8.5 设置打印日志

/** * @brief 设置打印日志 * @param value 0:默认关闭  1:打印输出所有日志 2:打印输出CRITICAL,ERROR和WARNING */- (void)setLogFilterOff:(NSUInteger)value;

8.6 设置本地视图

/** * @brief 设置本地视图 支持视频通话需要设置该参数 */- (void)setupLocalVideo:(UIView *)localVideo;

8.7 设置本地视图

/** * @brief 设置远程视图 支持视频通话需要设置该参数 */- (void)setupRemoteVideo:(UIView *)remoteVideo;

9 会议室

9.1 获取会议号

/** * @brief 获取会议号 * @param complete block返回会议号 主要用于发起会议的callee拼写 */- (void)getConfNo:(void (^)(NSString *confNo))complete;

9.2 会议室添加成员

/** * @brief 会议室添加成员 * @param nums 呼叫号码(91+区号+用户手机号,比如918613089898989)多个号码逗号隔开 * @param type phone表示内部呼叫(比如呼叫手机号) sip:表示呼叫内网账号 * @param confNo 会议号 */- (void)addMemberToRoom:(NSString*)nums type:(NSString*)type confNo:(NSString*)confNo;

9.3 通过房间id获取会议号和会议uuid

/** * @brief 通过房间id获取会议号和会议uuid * @param roomID 房间号id * @param complete block返回会议号和会议uuid */- (void)getConfNoWithRoomID:(NSString*)roomID complete:(void (^)(NSDictionary *info))complete;

9.4 获取会议成员

/** * @brief 获取会议成员 * @param confNo 会议号 * @param complete block返回成员列表 */- (void)getConfMemberList:(NSString*)confNo complete:(void (^)(NSMutableArray *list))complete;

9.5 获取会议服务号

/** * @brief 获取会议服务号 */- (void)getConfDIDWithConfNo:(NSString*)confNo complete:(void (^)(NSString *number))complete;

9.6 向系统提交报错

/** * @brief 向系统提交报错 * @param phone 用户手机号 * @param desc 问题描述 * @param complete block返回提交回执信息 responseObject为nil表示提交失败 errcode为0标识提交成功 */- (void)reportBugWithPhone:(NSString*)phone desc:(NSString*)desc complete:(void (^)(id responseObject))complete;

9.7 获取通话记录

/** * @brief 获取通话记录 * @param pageSize 分页大小 * @param pageNumber 分页页码 * @param orderDirection 【ase】升序,【desc】降序 */- (void)getCallRecordList:(NSUInteger)pageSize pageNumber:(NSUInteger)pageNumber orderDirection:(NSString*)orderDirection complete:(void (^)(id responseObject))complete;

9.8获取会议详情

//** * @brief 获取会议详情 * @param uuid 会议室uuid * @param complete block返回详情信息 */- (void)getConfDetail:(NSString*)uuid complete:(void (^)(id responseObject))complete;

10 小号

10.1 获取我的小号

/** * @brief 获取我的小号 * @param complete block返回我的小号 网络或服务器错误会返回空字符串 没有小号也会返回空字符串 */- (void)getBindPhone:(void (^)(NSString *number))complete;