集成 RTC SDK 后,你可以使用其中接口快速构建基础应用,实现基本实时音视频通话;你也能通过阅读代码,了解音视频通话的最佳实践。
如果你想了解完整的项目实现,参看快速开始 Demo。
如集成到已有项目,请直接查看步骤 2。
打开 Xcode, 创建适用于 macOS 的新项目(App)。

输入项目名称、团队名称,选择开发语言(选择 Objective-C 或者 Swift)。

选择项目存储位置,并创建。
签名设置:进入 TARGETS > Project Name > Signing & Capabilities ,勾选 Automatically manage signing,并在弹出菜单中选择 Enable Automatic。

将以下文件拖入到工程中:
libbytevc0.dylib
libeffect.dylib
RTCFFmpeg.framework
VolcEngineRTC.framework

配置音视频权限
info.plist 文件Privacy - Microphone Usage Description ,并填入使用麦克风的原因( Value )Privacy - Camera Usage Description ,并填入使用摄像头的原因( Value )
SDK 配置
进入 TARGETS > Project Name > General,选择 Frameworks, Libraries, and Embedded Content,将 libbytevc0.dylib、libeffect.dylib、RTCFFmpeg.framework 和 VolcEngineRTC.framework 设置为 Embed & Sign。

参考以下的时序图:

1.(可选)创建用户界面
根据场景需要,为你的项目创建音视频通话的用户界面。若已有用户界面,跳过此步骤。
如果你想实现基本的音视频通话,我们建议你在项目中添加如下元素:

在使用 SDK API 的文件中引入头文件。
//引入 VolcEngineRTC 头文件
#import <VolcEngineRTC/VolcEngineRTC.h>
objectivec调用 createRTCVideo:delegate:parameters: 接口,创建一个引擎实例,以使用 RTC 提供的各种音视频能力。
创建引擎实例后,你可以设置视频编码参数修改推送的视频流属性。
加入房间前,你需要设置本地视图以在通话中看到本地图像
创建引擎实例后,你需要开启视频采集,以在通话中使用视频功能。
创建引擎实例后,你需要开启音频采集,以在通话中使用音频功能。
创建房间实例 createRTCRoom创建一个房间实例,以使用房间相关的功能。
9.设置房间回调事件
调用类 ByteRTCRoom 中的 delegate 接口,设置房间回调事件
创建房间实例后,你就可以调用 ByteRTCRoom 类中的 joinRoom 方法创建/加入房间。
加入房间后,你需要在此回调中处理首次加入房间/重连加入房间的事件。
加入房间后,你需要在此回调中处理远端用户加入房间的事件。
加入房间后,你需要在此回调中处理第一帧远端视频流解码成功后的事件。
在确认收到远端用户的第一帧视频解码回调后,你需要设置远端视图以在通话中查看远端图像。
加入房间后,你需要在此回调中处理远端用户离开房间的事件。
在结束通话等场景下,你需要调用 leaveRoom 离开房间,结束通话过程,释放所有通话相关的资源。
在 RTC 引擎实例相关的业务场景全部结束后,你可调用 destroyRTCVideo 销毁由 createRTCVideo 所创建引擎实例,并释放所有相关资源。
至此,我们实现了基本的音视频通话。
项目编译运行时,如果在加入房间控制台时,看到以下的报错信息 dnssd_clientstub ConnectToServer: connect() failed path:/var/run/mDNSResponder Socket:20 Err:-1 Errno:1 Operation not permitted,应进行相应处理:
- 如果不使用 `App Sandbox`,删除即可;
- 如果使用 `App Sandbox`,需要勾选 `Incoming Connections`、`Outgoing Connections`、`Camera` 和 `Audio Input`.
