客户端实现

更新时间: 2021/08/31 04:17:25

网易云信音视频通话 2.0 产品为您提供开源的的一对一视频通话示例项目,您可以参考本文档快速跑通示例项目,在本地运行示例 Demo,体验 NERTC SDK 的一对一实时音视频通话的效果。

前提条件

在开始运行示例项目之前,请确保您已完成以下操作:

  • 创建应用并获取 App Key。
  • 开通音视频通话 2.0 服务。
  • 在云信控制台中为指定应用开通调试模式

开发环境

在开始运行示例项目之前,请确保开发环境满足以下要求:

  • Xcode 10 及以上版本。
  • iOS 9.0 及以上版本的 iOS 设备。

注意事项

示例项目需要在调试模式下使用,此时无需传入 Token。您可以在集成开发阶段使用调试模式进行应用开发与测试。但是出于安全考虑,应用正式上线前,请在控制台中将指定应用的鉴权方式改回安全模式。

实现一对一视频通话

拷贝 NERtcVideoCall/Model 文件夹到自己的工程,导入 NERtcVideoCall.h 头文件,创建自定义 UI 界面,即可实现视频通话功能。即只复用 model 部分,自行实现 UI 部分。

具体步骤如下:

1 集成 SDK

  1. 使用 Xcode 创建工程,进入工程跟目录。

  2. 执行 pod init,创建 Podfile 文件。

  3. 通过 cocoapods 仓库添加依赖。

    pod 'NERtcSDK', '~> 3.5.1'
    pod 'NIMSDK_LITE', '~> 7.8.4'
    

最新的 SDK 版本号请在网易云信下载中心中查看。

如果您的开发环境访问 cocoapods 仓库较慢,也可以在网易云信下载中心手动下载 SDK 包,并参考集成文档手动集成到您的工程中。

产品 SDK 下载 集成文档
IM 即时通讯(含信令) IM SDK(含信令) 集成 SDK
音视频通话 2.0 NERTC SDK 集成 SDK

2 添加权限

  1. Info.plist 文件中添加相机、麦克风访问权限:
    Privacy - Camera Usage Description
    Privacy - Microphone Usage Description
    
  2. 在工程的 Signing&Capabilities 添加 Push Notifications 能力。
  3. 在工程的 Signing&Capabilities 添加 Background Modes,并勾选 Audio、Airplay、and Picture in Picture。

3 导入 NERtcVideoCall 组件

拷贝以下目录中的所有类文件到项目中,并在自定义 UI 页面导入头文件。

/NLiteAVDemo/NERtcVideoCall/Model

4 初始化并登录组件

通过 setupAppKey 初始化,并调用 login 完成组件登录。所有功能需要先进行登录后才能使用。

// 初始化 参数为云信控制台注册的App Key
[[NERtcVideoCall shared] setupAppKey:@""];

// 登录 所有功能要在登录之后调用
NEUser *user = [[NEUser alloc] init];
user.imAccid = @"";
user.imToken = @"";
user.avatar = @"";
user.mobile = @"";
[[NERtcVideoCall shared] login:user success:^{

} failed:^(NSError * _Nonnull error) {

}];

4 主叫发起视频呼叫

发起方调用 call 方法发起通话请求。

NEUser *userB = [[NEUser alloc] init];
userB.imAccid = @"";
userB.imToken = @"";
[[NERtcVideoCall shared] call:userB completion:^(NSError * _Nullable error) {

}];

6 被叫接听呼叫

如果希望接听电话,接收方可以调用 acceptCompletion,并同时调用 enableCamera() 函数打开自己本地的摄像头。接收方也可以调用 reject() 拒绝此次通话。

当双方的音视频通道建立完成后,主叫方会收到 onUserEnter 事件通知,表示对方接受呼叫,此时双方用户均可以调用startRemoteView() 展示远端的视频画面。远端的声音默认是自动播放的。

[[NERtcVideoCall shared] acceptCompletion:^(NSError * _Nullable error) {

}];

NERtcVideoCall API 列表

您可以在 NERtcVideoCall.h 中查看适用于一对一视频通话的接口。

NERtcVideoCall 组件的 API 接口 列表如下:

接口名 接口描述
setupAppKey 初始化,所有功能需要先初始化
login 登录 IM,所有功能需要先进行登录后才能使用
logout 登出 IM,登出后无法再进行拨打操作
call 开始呼叫,被邀请方会收到 onInvitedByUser 的回调
cancel 取消呼叫,被邀请方会收到 onCancelByUserId 的回调
acceptCompletion 接受呼叫
reject 拒绝呼叫
hangup 挂断
setupLocalView 设置自己画面
setupRemoteView 设置其他用户画面
enableCamera 开启/关闭摄像头
setMicMute 开启/关闭麦克风
switchCamera 切换摄像头
addDelegate 添加代理,接收回调

NERtcVideoCall 组件的 回调接口(NERTCCallingDelegate) 列表如下:

接口名 接口描述
onInvitedByUser 收到对方邀请
onUserEnter 对方接受呼叫
onRejectByUserId 对方拒绝邀请
onCancelByUserId 对方取消邀请
onUserBusy 对方忙线
timeOut 邀请超时
onCameraAvailable 开启/关闭相机
onAudioAvailable 开启/关闭麦克风
onUserHangup 对方挂断
此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 开发环境
  • 注意事项
  • 实现一对一视频通话
  • 1 集成 SDK
  • 2 添加权限
  • 3 导入 NERtcVideoCall 组件
  • 4 初始化并登录组件
  • 4 主叫发起视频呼叫
  • 6 被叫接听呼叫
  • NERtcVideoCall API 列表