iOS

一、快速开始

集成指南

适用范围

本集成文档适用于iOS RTMeetEngine SDK 2.0.0 ~ 3.0.1版本。

准备环境

  • Xcode 9.0+。

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

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

导入SDK

CocoaPods导入

  • 通过 Cocoapods 下载地址:

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

pod 'RTMeetEngine', '3.0.1'

手动导入

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

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

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

ios_meet_02

权限说明

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

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

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

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

后台模式(Background Modes)

勾选Audio, AirPlay and Picture in Picture

ios_meet_03

开发指南

1. 初始化SDK

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

1.1 导入头文件

1.2 配置开发者信息

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

示例代码:

2. 加入房间

2.1 实例化会议对象

调用initWithDelegate:option:方法实例化会议对象,需实现ARMeetKitDelegate中的回调方法。第二个参数option为会议配置项,包括媒体类型、会议类型、帧率、码率、相机类型等。

会议类型:

  • 一般模式(ARMeetTypeNomal):大家进入会议互相观看

  • 主持模式(ARMeetTypeHoster):主持人进入,可以看到所有人,其他人员只看到主持人

  • live模式(ARMeetTypeLive):大班课模式

  • zoom模式(ARMeetTypeZoom)

示例代码:

2.2 设置本地视频采集窗口

调用setLocalVideoCapturer:方法用于设置本地视频采集窗口。

示例代码:

2.3 加入会议

调用joinRTCByToken:meetId:userId:userData:方法用于加入会议,第一个参数token为令牌,可为空,具体用法可参考安全指南

示例代码:

2.4 设置其他人视频显示窗口

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

示例代码:

3. 离开房间

调用leaveRTC方法用于离开房间。

示例代码:

二、API接口文档

ARMeetEngine 接口类

1. 配置开发者信息

定义

参数

参数名

类型

描述

appId

NSString

appId

token

NSString

token

说明

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

2. 配置私有云

定义

参数

参数名

类型

描述

address

NSString

私有云服务地址

port

int

私有云服务端口

说明

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

3. 获取SDK版本号

定义

返回值

RTMeeting SDK版本号

4. 设置打印日志级别

定义

参数

参数名

类型

描述

levelModel

ARLogModel

日志级别

ARMeetKit 接口类

1. 实例化会议对象

定义

参数

参数名

类型

描述

delegate

id

RTC相关回调代理

option

ARMeetOption

配置信息

返回

会议对象。

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

定义

参数

参数名

类型

描述

enable

BOOL

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

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

定义

参数

参数名

类型

描述

enable

BOOL

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

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

定义

返回

音频是否传输。

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

定义

返回

视频是否传输。

6. 切换前后摄像头

定义

7. 设置扬声器开关

定义

参数

参数名

类型

描述

on

BOOL

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

8. 设置音频检测

定义

参数

参数名

类型

描述

on

BOOL

是否开启音频检测,默认打开

返回

操作是否成功。

9. 设置本地视频采集窗口

定义

参数

参数名

类型

描述

render

UIView

视频显示对象

10. 设置本地显示模式

定义

参数

参数名

类型

描述

videoRenderMode

ARVideoRenderMode

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

11. 重置音频录音和播放

定义

说明

使用AVplayer播放后调用该方法。

12. 设置本地前置摄像头镜像是否打开

定义

参数

参数名

类型

描述

enable

BOOL

YES打开,NO关闭

返回

镜像成功与否。

13. 设置滤镜

定义

参数

参数名

类型

描述

filter

ARCameraFilterMode

滤镜模式

说明

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

14. 设置远端音视频是否传输

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id

audio

BOOL

YES传输音频,NO不传输音频

video

BOOL

YES传输视频,NO不传输视频

返回

操作是否成功。

15. 本地是否接收远程的视频

定义

参数

参数名

类型

描述

mute

BOOL

YES不接收,NO接收

pubId

NSString

RTC服务生成流的Id (用于标识与会者发布的流)

返回

操作是否成功。

16. 本地是否接收远程的音频

定义

参数

参数名

类型

描述

mute

BOOL

YES不接收,NO接收

pubId

NSString

RTC服务生成流的Id (用于标识与会者发布的流)

返回

操作是否成功。

17. 截图功能

定义

参数

参数名

类型

描述

userId

NSString

用户Id

block

ScreenshotsBlock

数据回调

18. 设置使用外置摄像头

定义

参数

参数名

类型

描述

enable

BOOL

是否使用外置摄像头

type

ARCaptureType

YUV420PType、RGBType

19. 向内部塞流

定义

参数

参数名

类型

描述

bufferRef

CVPixelBufferRef

视频流数据

rotation

ARVideoRotation

视频方向

20. 向内部塞流

定义

参数

参数名

类型

描述

data

NSData

视频流数据(yuv420格式的,或者ARGB数据)

rotation

ARVideoRotation

视频方向

width

int

视频宽

height

int

视频高

21. 加入会议

定义

参数

参数名

类型

描述

token

NSString

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

meetId

NSString

会议号(可以在anyRTC平台获得,也可以根据自己平台,分配唯一的一个Id号)

userId

NSString

开发者自己平台的用户id

userData

NSString

开发者自己平台的相关信息(昵称,头像等),还可以加入字段来限制会议人数:MaxJoiner,可选。(限制512字节)

返回

加入会议成功或者失败。

22. 离开会议室

定义

说明

相当于析构函数。

23. 设置其他人视频显示窗口

定义

参数

参数名

类型

描述

render

UIView

对方视频的视图窗口

pubId

NSString

RTC服务生成流的Id (用于标识与会者发布的流)

说明

该方法用于与会者接通后,与会者视频接通回调中(onRTCOpenRemoteVideoRender)使用。

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

定义

参数

参数名

类型

描述

videoRenderMode

ARVideoRenderMode

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

pubId

NSString

RTC服务生成流的Id (用于标识与会者发布的流)

25. 设置驾驶模式

定义

参数

参数名

类型

描述

open

BOOL

是否打开,默认关闭

26. 设置某路视频广播

定义

参数

参数名

类型

描述

enable

BOOL

广播与取消广播

peerId

NSString

视频流Id

27. 1v1授课模式

定义

参数

参数名

类型

描述

enable

BOOL

YES授课,NO取消授课

peerId

NSString

视频流Id

28. 发送消息

定义

参数

参数名

类型

描述

userName

NSString

用户昵称,不能为空,否则发送失败(最大256字节)

headerUrl

NSString

用户头像,可选(最大512字节)

content

NSString

消息内容不能为空,否则发送失败(最大1024字节)

返回

YES发送成功,NO发送失败

说明

默认普通消息,以上参数均会出现在参会者的消息回调方法中,如果加入RTC(joinRTC)没有设置userid,发送失败。

29. 设置网络质量是否打开

定义

参数

参数名

类型

描述

enable

BOOL

YES打开,NO关闭,默认关闭

30. 获取当前网络状态是否打开

定义

返回

获取网络状态。

31. 设置音频数据是否回调

定义

参数

参数名

类型

描述

enable

BOOL

YES打开回调,NO关闭回调,默认关闭

32. 获取当前音频回调是否打开

定义

33. 重新采样率

定义

参数

参数名

类型

描述

sampleRate

int

采样率,仅支持 8000,16000,32000,44100,48000

channel

int

频道数量

34. 获取人员列表

定义

返回

人员列表。

35. 打开共享

定义

参数

参数名

类型

描述

type

int

共享类型,类型自己平台设定,例如1为白板,2为文档

36. 打开共享信息

定义

参数

参数名

类型

描述

shearInfo

NSString

共享相关信息(限制512字节)

说明

打开白板成功与失败,参考onRTCShareEnable回调方法。

37. 关闭共享

定义

38. 设置Zoom显示模式

定义

参数

参数名

类型

描述

type

ARZoomType

模式,默认为ARZoomTypeSingle模式

说明

必须先设置会议模式为zoom模式才有效。

39. 设置显示页码

定义

参数

参数名

类型

描述

page

int

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

说明

分屏显示ARZoomTypeNomal。

40. 设置显示区域从index 到第几个

定义

参数

参数名

类型

描述

index

int

开始标记

showNum

int

默认为4,onRTCZoomPageInfo回调里的showNum

41. 开始录制

定义

参数

参数名

类型

描述

filePath

NSString

沙盒路径+文件名称

video

BOOL

YES录制本地视频;NO不录制视频

42. 结束录制

定义

返回

0成功,-1失败。

ARMeetKitDelegate 接口类

1. 加入会议成功

定义

参数

参数名

类型

描述

meetId

NSString

anyRTCId 会议号(在开发者业务系统中保持唯一的Id)

2. 加入会议失败

定义

参数

参数名

类型

描述

meetId

NSString

会议号(在开发者业务系统中保持唯一的Id)

code

ARMeetCode

状态码

token

NSString

错误原因,RTC错误或者token错误(错误值自己平台定义)

3. RTC服务已断开

定义

说明

收到该消息后,在网络恢复后,会有重连,重连成功,会有onRTCJoinMeetOK回调。

4. 离开会议

定义

参数

参数名

类型

描述

code

ARMeetCode

状态码

5. 其他与会者加入(音视频)

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id (用于标识与会者,每次加入会议随机生成)

pubId

NSString

RTC服务生成流的Id (用于标识与会者发布的流)

userId

NSString

开发者自己平台的用户Id

userData

NSString

开发者自己平台的相关信息(昵称,头像等)

说明

其他与会者进入会议的回调,开发者需调用设置其他与会者视频窗口(setRemoteVideoRender)方法。

6. 其他与会者离开(音视频)

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id (用于标识与会者,每次加入会议随机生成)

pubId

NSString

RTC服务生成流的Id (用于标识与会者发布的流)

userId

NSString

开发者自己平台的用户Id

说明

其他与会者离开将会回调此方法,需本地移除与会者视频视图。

7. 其他与会者加入(音频)

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id (用于标识与会者,每次加入会议随机生成)

userId

NSString

开发者自己平台的Id

userData

NSString

开发者自己平台的相关信息(昵称、头像等)

8. 其他与会者离开(音频)

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id (用于标识与会者,每次加入会议随机生成)

userId

NSString

开发者自己平台的用户Id

9. 用户开启桌面共享

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id (用于标识与会者,每次加入会议随机生成)

pubId

NSString

RTC服务生成流的Id (用于标识与会者发布的流)

userId

NSString

开发者自己平台的Id

userData

NSString

开发者自己平台的相关信息(昵称、头像等)

说明

开发者需调用设置其他与会者视频窗口(setRTCVideoRender)方法。

10. 用户退出桌面共享

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id (用于标识与会者,每次加入会议随机生成)

pubId

NSString

RTC服务生成流的Id (用于标识与会者发布的流)

userId

NSString

开发者自己平台的用户Id

说明

其他与会者离开将会回调此方法,需本地移除屏幕共享窗口。

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

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id (用于标识与会者,每次加入会议随机生成)

audio

BOOL

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

video

BOOL

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

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

定义

参数

参数名

类型

描述

audio

BOOL

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

video

BOOL

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

13. 本地视频第一帧

定义

参数

参数名

类型

描述

size

CGSize

视频窗口大小

14. 远程视频第一帧

定义

参数

参数名

类型

描述

size

NSString

视频窗口大小

pubId

NSString

RTC服务生成流的Id (用于标识与会者发布的流)

15. 本地窗口大小的回调

定义

参数

参数名

类型

描述

size

CGSize

视频窗口大小

16. 远程窗口大小的回调

定义

参数

参数名

类型

描述

size

CGSize

视频窗口大小

pubId

NSString

RTC服务生成流的Id (用于标识与会者发布的流)

17. 其他与会者音频检测回调

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的与会者标识Id(用于标识与会者用户,每次随机生成)

userId

NSString

开发者自己平台的用户Id

level

int

音频大小(0~100)

time

int

音频检测在nTime毫秒内不会再回调该方法(单位:毫秒)

说明

与会者关闭音频后(setLocalAudioEnable为NO),该回调将不再回调。对方关闭音频检测后(setAudioActiveCheck为NO),该回调也将不再回调。

18. 本地音频检测回调

定义

参数

参数名

类型

描述

level

int

音频大小(0~100)

time

int

音频检测在nTime毫秒内不会再回调该方法(单位:毫秒)

说明

本地关闭音频后(setLocalAudioEnable为NO),该回调将不再回调。对方关闭音频检测后(setAudioActiveCheck为NO),该回调也将不再回调。

19. 其他与会者网络质量回调

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的与会者标识Id(用于标识与会者用户,每次随机生成)

userId

NSString

用户平台Id

netSpeed

int

网络上行

packetLost

int

丢包率

netQuality

ARNetQuality

网络质量

20. 本地网络质量回调

定义

参数

参数名

类型

描述

netSpeed

int

网络上行

packetLost

int

丢包率

netQuality

ARNetQuality

网络质量

21. 收到消息回调

定义

参数

参数名

类型

描述

userId

NSString

发送消息者在自己平台下的Id

userName

NSString

发送消息者的昵称

headerUrl

NSString

发送者的头像

content

NSString

消息内容

22. 主持人上线

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id (用于标识与会者,每次加入会议随机生成)

userId

NSString

开发者自己平台的Id

userData

NSString

开发者自己平台的相关信息(昵称,头像等)

说明

只有主持模式下的游客身份登录才有用。

23. 主持人下线

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id (用于标识与会者,每次加入会议随机生成)

说明

只有主持模式下的游客身份登录才有用。

24. 1v1授课开启

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id (用于标识与会者,每次加入会议随机生成)

userId

NSString

开发者自己平台的Id

userData

NSString

开发者自己平台的相关信息(昵称,头像等)

25. 1v1授课关闭

定义

参数

参数名

类型

描述

peerId

NSString

RTC服务生成的标识Id (用于标识与会者,每次加入会议随机生成)

26. zoom模式页码变化

定义

参数

参数名

类型

描述

zoomType

ARZoomType

当前模式

allPage

int

总页码(一页显示4个)

currentPage

int

当前页

allRenderNum

int

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

index

int

开始位置

showNum

int

显示多少个

27. 获取视频的原始采集数据

定义

参数

参数名

类型

描述

sampleBuffer

CMSampleBufferRef

视频数据

28. 本地音频数据回调

定义

参数

参数名

类型

描述

audioSamples

char

pcm数据

sampleRate

int

采样率

channel

int

声道

length

int

数据长度

29. 远程音频数据回调

定义

参数

参数名

类型

描述

audioSamples

char

pcm数据

sampleRate

int

采样率

channel

int

声道

length

int

数据长度

peerId

NSString

RTC服务生成的与会者标识Id(用于标识与会者用户,每次随机生成)

ARShareDelegate 接口类

1. 判断是否可以开启共享回调

定义

参数

参数名

类型

描述

enable

BOOL

YES可以共享,NO不可以共享

2. 共享开启

定义

参数

参数名

类型

描述

type

int

共享类型

shareInfo

NSString

共享信息

userId

NSString

开发者自己平台的Id

userData

NSString

开发者自己平台的相关信息(昵称,头像等)

3. 共享关闭

定义

说明

打开共享的人关闭了共享。

三、更新日志

Version 3.0.1 (2019-10-15)

  • 新增塞流接口(setExternalCameraCapturer);

  • 新增流量信息监测以及音频数据信息;

  • 新增录制相关方法(startRecording:recordVideo:)。

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?