客户端实现
更新时间: 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
-
使用 Xcode 创建工程,进入工程跟目录。
-
执行
pod init
,创建 Podfile 文件。 -
通过 cocoapods 仓库添加依赖。
pod 'NERtcSDK', '~> 3.5.1' pod 'NIMSDK_LITE', '~> 7.8.4'
如果您的开发环境访问 cocoapods 仓库较慢,也可以在网易云信下载中心手动下载 SDK 包,并参考集成文档手动集成到您的工程中。
产品 | SDK 下载 | 集成文档 |
---|---|---|
IM 即时通讯(含信令) | IM SDK(含信令) | 集成 SDK |
音视频通话 2.0 | NERTC SDK | 集成 SDK |
2 添加权限
- 在
Info.plist
文件中添加相机、麦克风访问权限:Privacy - Camera Usage Description Privacy - Microphone Usage Description
- 在工程的 Signing&Capabilities 添加 Push Notifications 能力。
- 在工程的 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 | 对方挂断 |