背景说明
AllInOneRTCEngine 适配了声网和腾讯两套 SDK,方便您同时集成声网和腾讯的服务,接口完全采用声网的接口调用及回调方式,仅需修改初始化逻辑,即可快速切换 SDK。
适配版本:
声网 AgoraRtcEngine_iOS: 4.3.0
腾讯 TRTC:11.7.15304
准备工作
Xcode 13.0 或以上版本。
已安装 Cocoapods。如尚未安装 Cocoapods,参见 Getting Started with CocoaPods 安装说明。
iOS 14.0 以上版本的设备。
Apple开发者证书。
开通服务
使用 AllInOneRTCEngine 需要同时开通声网服务和 TRTC 服务。
开通TRTC服务步骤如下:
1. 进入TRTC 控制台,如果没有创建应用,请先创建应用。
2. 进入应用概览,记录
SDKAppID
和SDKSecretKey
。
集成SDK
1、在终端里进入项目根目录,并运行 pod init 命令。项目文件夹下会生成一个 Podfile 文本文件。
2、打开 Podfile 文件,修改文件为如下内容。注意将 Target App 替换为你的 Target 名称。
platform :ios, '9.0'target 'Target App' do# x.y.z 请填写具体的 SDK 版本号,如 4.0.1。pod 'AllInOneRTCEngine', 'x.y.z'end
调用指引
1、初始化引擎
// 如果useTRTC传入YES,那么将使用TRTC进入房间,AppId输入TRTC控制台中获取的AppID// 如果useTRTC传入NO,那么将使用Agora进入房间,AppId输入声网控制台中获取的AppID_engine = [AIORTCEngineManager sharedEngineWithAppId:<#Your App ID#>delegate:selfuseTRTC: <#Use TRTC OR Not#>];
参数 | 使用 TRTC | 使用 agora |
appID | TRTC 控制台中获取的 AppID | 声网控制台中获取的 AppID |
useTRTC | 传入 YES,使用 TRTC | 传入 NO,使用 agora |
2、加入频道
AgoraRtcChannelMediaOptions *option = [[AgoraRtcChannelMediaOptions alloc] init];option.clientRoleType = AgoraClientRoleBroadcaster;option.publishCameraTrack = YES;option.publishMicrophoneTrack = YES;option.autoSubscribeAudio = YES;option.autoSubscribeVideo = YES;[_engine joinChannelByToken:<#Your Token#>channelId:<#Your Channel Name#>uid:uidmediaOptions:optionjoinSuccess:nil];}
参数名 | 含义 | 使用 TRTC | 使用 Agora |
token | 进房鉴权票据 | ||
channelId | 房间号 | 字符串类型的房间号 | 字符串类型的房间号 |
uid | 用户 ID | 数字类型用户名 | 数字类型用户名 |
3、发布订阅音视频流
// 设置本地视图,并开启预览AgoraRtcVideoCanvas *localCanvas = [[AgoraRtcVideoCanvas alloc] init];localCanvas.uid = _param.userId.integerValue;localCanvas.view = _localView;localCanvas.renderMode = AgoraVideoRenderModeHidden;[_engine setupLocalVideo:localCanvas];[_engine startPreview];//初始化远端用户视图,同时设置远端用户的视图在本地显示属性。//你可以通过 didJoinedOfUid 回调获取远端用户的 uid。AgoraRtcVideoCanvas *remoteCanvas = [[AgoraRtcVideoCanvas alloc] init];remoteCanvas.uid = uid;remoteCanvas.view = remoteView;remoteCanvas.renderMode = AgoraVideoRenderModeHidden;[_engine setupRemoteVideo:remoteCanvas];
4 退出房间
// 1、调用 leaveChannel 方法离开房间,相关的资源也会被释放。[_engine leaveChannel:nil];// 2、调用 destroy 销毁引擎,并释放 SDK 中使用的所有资源。[AIORTCEngineManager destroy];
常见问题
RTC 线路选择:
当 APP 集成 Agora 和 TRTC 两套 SDK 时,两套 SDK 之间不互通,这里需要一个房间分配策略用于选择使用哪套 SDK ,这里提出两种方式供参空:
按房间号来分配,每次进房需要知道此房间是使用那种类型的 SDK。
按业务来区分,同一种业务全部使用一种类型 SDK。
关于房间号 TRTC 默认使用整型房间号,如果您需要字符串类型房间号,请联系架构师帮您开通。