IOS

DEMO运行指引

1.环境准备

2.导入项目
解压工程,可以看到目录结构如下

用Xcode打开GuRenRTC.xcodeproj,可以看到目录结构如下

3.运行项目
如果没有错误,可以看到登陆界面

输入房间号,点击登陆即可。

SDK获取及集成

1.SDK概述:
SDK包含静态库
libxRTCEngineCore-iOS.a

导出头文件有
xRTCEngineKit.h

SDK提供了Objective-C语言接口。目前没有提供swift版本。iOS文档只介绍OC的接口调用,如果要用C++, 请访问C++语言子目录的文档。
可以看到项目依赖系统库列表
2.下载SDK:
请在官网的下载页面获取。

3.引入SDK:
添加下列库

4.权限管理:
需要添加麦克风和摄像头权限,打开info.plist文件,添加Privacy - Microphone Usage Description 和Privacy - Camera Usage Description 条目,描述里写“需要您的许可才能访问麦克风”和“需要您的许可才能访问麦克风”或者自定义。

5.开始使用:

功能实现文档

多人视频实现流程简述:

  1. SDK初始化
  2. 设置用户登陆参数及登陆
  3. 打开&关闭播放,打开&关闭麦克风,打开&关闭视频
  4. 实现回调
  5. 退出频道&&销毁对象

1.SDK初始化:

  1. create:初始化SDK环境,设置APPID。
  2. setVideoProfile:设置本地视频流分辨率属性,属性列表在接口文档xRTCProfile中有详细定义。
  3. 具体代码参考DEMO ViewController.m,部分关键代码如下:
- (void)loadEngine{
if (_engineDelegate == nil) {
_engineDelegate = [[RtcEngineDelegate alloc]init];
__weak typeof(self) weakSelf = self;
_engineDelegate.userEnterBlock = ^(uint64_t uid){
if (weakSelf.roomVC) {
[weakSelf.roomVC userEnter:uid];
}
};
_engineDelegate.userLeaveBlock = ^(uint64_t uid){
if (weakSelf.roomVC) {
[weakSelf.roomVC userLeave:uid];
}
};
}
if (_engine == nil) {
_engine = [ xRTCEngineKit sharedEngineWithAppId:@"ios_test" delegate:_engineDelegate] ;
[_engine setChannelProfile:xRTC_ChannelProfile_Communication] ;
[_engine setVideoProfile:_profile swapWidthAndHeight:NO] ;
}
}

2.设置用户登陆参数及登陆:

  1. joinChannelByKey:参数列表为channelname,roomid,info,userid。
  2. xRTCVideoCanvas:参数列表为UIView,renderMode,uid。注释:renderMode在接口文档xRTCVideoCanvas类中有详细定义,ud为0代表自己。
  3. 具体代码参考demo RoomViewController.m,部分关键代码如下:
_userId = arc4random() ;
_myCanvas = [[xRTCVideoCanvas alloc]init] ;
_myCanvas.uid = _userId ;
_myCanvas.renderMode = RENDER_TYPE_ADAPTIVE ;
_myCanvas.view = myView ;
- (void)startEngine{
[_engine enableAudio] ;
[_engine enableVideo] ;

[_engine joinChannelByKey:NULL channelName:_roomId info:NULL uid:_userId] ;
[_engine setupLocalVideo:_myCanvas] ;

_videoMuted = NO;
_audioMuted = NO;
}

4.强烈建议token值(info)应该由服务端传给客户端,不应该写死于客户端中。

3.打开&关闭播放,打开&关闭麦克风,打开&关闭视频:

- (IBAction)muteVideoButtonTapped:(id)sender{
if (_engine) {
[_engine muteLocalVideoStream:!_videoMuted];
_videoMuted = !_videoMuted;
[_muteVideoButton setTitle:_videoMuted ? @"打开视频" : @"关闭视频" forState:UIControlStateNormal];
}
}

- (IBAction)muteAudioButtonTapped:(id)sender{
if (_engine) {
[_engine muteLocalAudioStream:!_audioMuted];
_audioMuted = !_audioMuted;
[_muteAudioButton setTitle:_audioMuted ? @"打开音频" : @"关闭音频" forState:UIControlStateNormal];
}
}

4.实现回调:

5.退出频道&&销毁对象:
参考demo ViewController.m实现

- (void)leaveEngine{
if (_engine) {
[_engine leaveChannel:0];
[xRTCEngineKit destroy];
_engineDelegate = nil;
_engine = nil;
}
}