iOS

最近更新时间:2024-03-28 22:04:32

我的收藏

背景说明

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 服务。
开通声网服务参见 开通服务,创建项目,获取 appId 和 token。
开通TRTC服务步骤如下:
1. 进入TRTC 控制台,如果没有创建应用,请先创建应用。
2. 进入应用概览,记录SDKAppIDSDKSecretKey




集成SDK

cocoapod 集成
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:self
useTRTC: <#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:uid
mediaOptions:option
joinSuccess:nil];
}
参数名
含义
使用 TRTC
使用 Agora
token
进房鉴权票据
您可以使用 AppId 和 uid 计算出 token,计算方法请参见 如何计算及使用 UserSig
参见 声网文档 获取临时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 默认使用整型房间号,如果您需要字符串类型房间号,请联系架构师帮您开通。