iOS

一、快速开始

集成指南

适用范围

本集成文档适用于iOS RTCallEngine SDK 2.0.0 ~ 3.0.2版本。

准备环境

  • Xcode 9.0+。

  • iOS 8.0+ 真机(iPhone 或 iPad)。

  • 请确保你的项目已设置有效的开发者签名。

导入SDK

CocoaPods导入

  • 通过 Cocoapods 下载地址:

pod 'RTCallEngine'
  • 如果需要安装指定版本则使用以下方式(以 3.0.2 版本为例):

pod 'RTCallEngine', '3.0.2'

手动导入

  • 前往GitHub下载Demo,找到RTCallEngine.framework;

  • 在Xcode中选择“Add files to 'Your project name'...”,将RTCallEngine.framework添加到你的工程目录中 ios_p2p_01

  • 打开General->Embedded Binaries中添加RTCallEngine.framework

ios_p2p_02

权限说明

使用RTCallEngine SDK 前,需要对设备进行授权。打开 info.plist ,点击 + 图标开始添加:

  • 添加设备使用「网络」的权限

  • 添加设备使用「相机」的权限

  • 添加设备使用「麦克风」的权限

后台模式(Background Modes)

勾选Audio, AirPlay and Picture in Picture

ios_p2p_03

开发指南

1. 初始化SDK

集成SDK后,还需对SDK进行初始化操作,建议在AppDelegate中完成。

1.1 导入头文件

1.2 配置开发者信息

调用initEngine:token:方法配置开发者信息,开发者信息可在anyRTC管理后台中获得,详见创建anyRTC账号

示例代码:

2. 加入房间

2.1 实例化用户对象

调用initWithDelegate:方法实例化用户对象,需实现ARCallKitDelegate中的回调方法。

示例代码:

2.2 用户上线

调用turnOnByToken:userId:userData:方法用于上线,第一个参数token为令牌,可为空,具体用法可参考安全指南

示例代码:

3. 呼叫场景

P2P呼叫可分为呼叫用户、群组、客服,详见3.1、3.2、3.3。

3.1 呼叫用户

调用makeCallUser:option:方法用于呼叫用户,第二个参数option为用户配置信息,配置信息包含呼叫模式。

呼叫模式分为:

  • 音视频呼叫(AR_Call_Video)

  • 视频优先呼叫(AR_Call_VideoPro)

  • 音频呼叫(AR_Call_Audio)

示例代码:

3.2 呼叫群组

调用makeCallGroup:option:方法用于呼叫群组,第二个参数option为群组配置信息,包含主叫用户信息、呼叫用户数组和扩展信息。

示例代码:

3.3 呼叫客服场景(客户端)

调用makeCallQueue:option:方法用于呼叫客服,第二个参数option为呼叫配置信息,包括呼叫类型、用户信息、 等级、区域、交易类型。

示例代码:

4. 呼叫相关

4.1 设置本地显示窗口

调用setLocalVideoCapturer:option:方法设置本地显示窗口,第二个参数option为音视频配置项,包含视频帧率、码率、相机类型等。

示例代码:

4.2 设置其他视频显示窗口

调用setRemoteVideoRender:renderId:方法设置其他人视频显示窗口,用于收到对方视频即将显示(onRTCOpenRemoteVideoRender)的回调时调用。

示例代码:

4.3 同意呼叫

调用acceptCall:方法用于收到呼叫请求回调时(onRTCMakeCall:)同意呼叫。

示例代码:

4.4 挂断通话

调用endCall:方法用于挂断呼叫。

示例代码:

4.5 清空会话

调用close方法用于清空当前会话,可在离开房间时调用。

示例代码:

二、API接口文档

ARCallEngine 接口类

1. 配置开发者信息

定义

参数

参数名

类型

描述

appId

NSString

appId

token

NSString

token

说明

该方法为配置开发者信息,上述参数均可在https://www.anyrtc.io/ 应用管理中获得,建议在AppDelegate.m调用。

2. 配置私有云

定义

参数

参数名

类型

描述

address

NSString

私有云服务地址

port

int

私有云服务端口

说明

配置私有云信息,当使用私有云时才需要进行配置,默认无需配置。

3. 获取SDK版本号

定义

返回值

RTCallEngine SDK 版本号。

4. 设置打印日志级别

定义

参数

参数名

类型

描述

levelModel

ARLogModel

日志级别

ARCallKit 接口类

1. 实例化Call对象

定义

参数

参数名

类型

描述

delegate

id

RTC相关回调代理

2. 设置客服

定义

参数

参数名

类型

描述

queueId

NSString

队列Id

option

ARClertOption

客服配置

说明

需放在上线(turnOn)之前使用。

3. 上线

定义

参数

参数名

类型

描述

token

NSString

令牌:客户端向自己服务申请获得,参考企业级安全指南

userId

NSString

用户Id,确保平台唯一,不能为空

userData

NSString

用户信息自定义信息

4. 下线

定义

5. 设置本地显示窗口

定义

参数

参数名

类型

描述

render

UIView

本地视频窗口

option

ARCallOption

配置项

说明

必须放到 makeCall方法之后调用或者收到onRTCMakeCall回调之后调用。

6. 设置滤镜

定义

参数

参数名

类型

描述

filter

ARCameraFilterMode

滤镜模式

说明

只有使用美颜相机模式才有用。

7. 设置其他视频显示窗口

定义

参数

参数名

类型

描述

render

NSString

视频显示窗口

renderId

NSString

渲染Id

8.设置某个人的显示模式

定义

参数

参数名

类型

描述

renderMode

ARVideoRenderMode

显示模式,默认ARVideoRenderScaleToFill,等比例填充视图模式

renderId

NSString

渲染Id

9. 呼叫用户

定义

参数

参数名

类型

描述

userId

NSString

呼叫的用户Id

option

ARUserOption

配置项

返回值

操作是否成功。0:成功;-1:操作频繁;-2:不能呼叫自己;-3:呼叫列表不能为空;-4:呼叫session已存在;-5:呼叫ID不能为空:-6:userData:超过1024个字节:-7: ARCallKit还未初始化。

10. 呼叫群组

定义

参数

参数名

类型

描述

groupId

NSString

群组Id

option

ARGroupOption

配置项

返回值

操作是否成功。0:成功;-1:操作频繁;-2:不能呼叫自己;-3:呼叫列表不能为空;-4:呼叫session已存在;-5:呼叫ID不能为空:-6:userData:超过1024个字节:-7:ARCallKit还未初始化

11. 呼叫客服

定义

参数

参数名

类型

描述

queueId

NSString

队列

option

NSString

呼叫配置

返回值

操作是否成功。0:成功;-1:操作频繁;-2:不能呼叫自己;-3:呼叫列表不能为空;-4:呼叫session已存在;-5:呼叫ID不能为空:-6:userData:超过1024个字节:-7:ARCallKit还未初始化。

12. 邀请用户

定义

参数

参数名

类型

描述

userId

NSString

用户Id

返回值

操作是否成功 0:成功; -1:userId为空;-2:不是会议类型不能调用;-3:ARCallKit还未初始化。

说明

只有建立会议呼叫之后才能调用。

13. 挂断通话

定义

参数

参数名

类型

描述

userId

NSString

呼叫的用户Id

14. 同意通话

定义

参数

参数名

类型

描述

userId

NSString

呼叫的用户Id

15. 拒绝通话

定义

参数

参数名

类型

描述

userId

NSString

呼叫的用户Id

16. 转呼手机

定义

说明

呼叫用户的时候才能用;如果呼叫模式为视频会自动转为音频模式。

17. 转呼座机

定义

说明

呼叫用户的时候才能用,如果呼叫模式为视频会自动转为音频模式。

18. 切换音频模式

定义

说明

操作是否成功。成功之后,把本地视频视图清除掉。

19. 发送消息

定义

参数

参数名

类型

描述

content

NSString

发送消息的内容(限制1024字节)

20. 设置本地音频是否传输

定义

参数

参数名

类型

描述

enable

BOOL

YES为传输音频,NO为不传输音频,默认音频传输

21. 设置本地视频是否传输

定义

参数

参数名

类型

描述

enable

BOOL

YES为传输视频,NO为不传输视频,默认视频传输

22. 获取本地音频传输是否打开

定义

23. 获取本地视频传输是否打开

定义

24. 切换前后摄像头

定义

25. 设置扬声器开关

定义

参数

参数名

类型

描述

on

BOOL

YES打开扬声器,NO关闭扬声器,默认扬声器打开

26. 获取人员列表

定义

27. 抓图

定义

参数

参数名

类型

描述

userId

NSString

userId 用户Id

28. 设置会议模式

定义

参数

参数名

类型

描述

type

ARCallZoomType

模式类型

29. 设置显示页码

定义

参数

参数名

类型

描述

page

int

页码(从0开始,每页加上自己的视频流为4路)

30. 清空会话

定义

说明

当别人挂断或者自己挂断离开的时候,调用该方法用于清空本地视频。

ARCallKitDelegate 接口类

1. 服务器链接成功

定义

2. 服务器断开

定义

参数

参数名

类型

描述

code

ARCallCode

状态码

3. 收到呼叫的回调

定义

参数

参数名

类型

描述

userId

NSString

呼叫方的Id

userData

NSString

呼叫方的自定义信息

callMode

ARCallMode

呼叫类型

extend

NSString

扩展信息,用户自定义,呼叫群组的时候带的

4. 加入房间成功

定义

参数

参数名

类型

描述

roomId

NSString

房间号

说明

只有打开VIP或呼叫类型是AR_Call_Meet_Invite的时候才有回调,roomId参数仅供录像时使用。

5. 收到对方同意的回调

定义

参数

参数名

类型

描述

userId

NSString

呼叫方的Id

6. 收到对方拒绝的回调

定义

参数

参数名

类型

描述

userId

NSString

被呼叫方的Id

code

ARCallCode

状态码

7. 收到对方挂断的回调

定义

参数

参数名

类型

描述

userId

NSString

用户id

code

ARCallCode

状态码

8. 收到对方视频视频即将显示的回调

定义

参数

参数名

类型

描述

userId

NSString

呼叫的用户Id

renderId

NSString

渲染Id

userData

NSString

用户信息

说明

收到该回调,调用setRemoteVideoRender显示对方视频窗口。

9. 收到对方视频离开的回调

定义

参数

参数名

类型

描述

userId

NSString

呼叫的用户Id

renderId

NSString

渲染Id

10. 收到对方音频即将播放的回调

定义

参数

参数名

类型

描述

userId

NSString

用户Id

userData

NSString

用户信息

11. 收到对方音频离开的回调

定义

参数

参数名

类型

描述

userId

NSString

用户Id

12. 是否支持SIP呼叫

定义

参数

参数名

类型

描述

pstn

BOOL

YES:可转接手机,用户调用switchToPstn即可去呼叫手机

extensionextension

BOOL

YES:转接分机,用户调用switchToExtension即可去呼叫分机

null

BOOL

暂时可不用

13. 切换到音频模式

定义

说明

收到该回调,做视频视图的清理工作。

14. 收到消息回调

定义

参数

参数名

类型

描述

userId

NSString

发送消息的用户Id

content

NSString

消息内容

15. 其他与会者对音视频的操作

定义

参数

参数名

类型

描述

userId

NSString

用户Id

audio

BOOL

YES为打开音频,NO为关闭音频

video

BOOL

YES为打开视频,NO为关闭视频

16. 别人对自己音视频的操作

定义

参数

参数名

类型

描述

audio

BOOL

YES为打开音频,NO为关闭音频

video

BOOL

YES为打开视频,NO为关闭视频

17. 本地视频第一帧

定义

参数

参数名

类型

描述

size

CGSize

视频窗口大小

18. 远程视频第一帧

定义

参数

参数名

类型

描述

size

CGSize

视频窗口大小

renderId

NSString

渲染Id (用于标识与会者发布的流)

19. 本地窗口大小的回调

定义

参数

参数名

类型

描述

size

CGSize

视频窗口大小

20. 远程窗口大小的回调

定义

参数

参数名

类型

描述

size

CGSize

视频窗口大小

renderId

NSString

渲染Id (用于标识与会者发布的流)

21. 会议模式页码变化

定义

参数

参数名

类型

描述

type

ARCallZoomType

当前模式

allPage

int

总页码(一页显示4个)

currentPage

int

当前页

allRenderNum

int

当前服务上有多少个渲染,根据此数量来判断页码添加删除

index

int

开始位置

showNum

int

显示多少个

22. 呼叫队列用户的排队信息

定义

参数

参数名

类型

描述

queueNum

int

前面排队人员

23. 服务队列的相关队列信息

定义

参数

参数名

类型

描述

queueNum

int

队列数

allClerk

int

总客服数

woringNum

int

正在忙的客服

三、更新日志

Version 3.0.2 (2020-02-27)

  • 修复Bug,SDK优化

Version 3.0.0 (2019-05-15)

  • SDK版本升级3.0,API接口变更

Version 2.0.0 (2017-09-30)

  • SDK版本升级2.0,梳理、完善SDK

Last updated

Was this helpful?