集成 SDK(音视频)
更新时间: 2025/07/14 17:43:59
本文为您介绍了 iOS 端集成网易云信音视频通话 2.0 NERTC SDK 的操作步骤,帮助您快速集成 SDK 并实现实时音视频通话的基本功能。
准备工作
在开始运行工程之前,请您准备以下开发环境:
- Xcode 10 及以上版本。
- iOS 9.0 及以上版本的 iOS 设备。
第一步:获取 SDK
网易云信音视频通话 2.0 NERTC SDK 提供了以下三种方式获取 SDK,版本更新内容请参考 更新日志:
- 方式一:您可以通过 CocoaPods 便捷获取 SDK。集成方式请参考下文 CocoaPods 集成。
- 方式二:您可以在 SDK 下载中心 获取最新的 NERTC SDK 并查看版本号。集成方式请参考下文 手动集成。
- 方式三:若要使用其他版本,例如特殊版本或者定制版本,请 提交工单 联系网易云信技术支持工程师获取对应的版本号。
若您对包体积大小有要求,推荐您集成 4.6.20 及之后版本的 NERTC SDK,实现以插件化的方式按需集成动态库。
SDK 目录
获取了 SDK 后,您会查看到如下 SDK 目录:
diff iOS
+ |
+ |-- NERtcSDK.xcframework //推荐放置在 libs/ 目录
- |-- NMCBasicModuleFramework.framework // 5.3.0 及之后版本去掉了该库文件
+ |-- NERtcnn.xcframework //推荐放置在 libs/ 目录
+ |-- NERtcReplayKit.xcframework //推荐放置在 libs/ 目录
+ |-- NERtcBeauty.xcframework //推荐放置在 libs/ 目录
+ |-- NERtcFaceDetect.xcframework //推荐放置在 libs/ 目录
+ |-- NERtcPersonSegment.xcframework //推荐放置在 libs/ 目录
+ |-- NERtcAiDenoise.xcframework //推荐放置在 libs/ 目录
+ |-- NERtcAiHowling.xcframework //推荐放置在 libs/ 目录
+ |-- NERtcFaceEnhance.xcframework //推荐放置在 libs/ 目录
+ |-- NERtcSuperResolution.xcframework //推荐放置在 libs/ 目录
+ |-- NERtcVideoDenoise.xcframework //推荐放置在 libs/ 目录
+ |-- NERtcAudio3D.xcframework //推荐放置在 libs/ 目录
动态库
SDK 目录中的每一个 xcframework
都代表着动态库,包括基础库和特色库。以插件化的方式按需集成动态库,有助于您减轻包体积。例如:
- 您只集成音视频能力可以只接入
NERtcSDK.xcframework
。 - 您要实现美颜功能则可以只接入
NERtcSDK.xcframework
、NERtcBeauty.xcframework
、NERtcFaceDetect.xcframework
、NERtcnn.xcframework
。
NERTC SDK 详细的动态库介绍如下表所示:
.framework
文件后缀名修改为 .xcframework
。如果您采用 手动集成 方式集成 NERTC SDK,并从低版本升级至 5.6.50 及以上,请重新添加 XCFramework 依赖。
文件/文件夹名称 | subspecs 值 |
功能/插件名 | 必选? |
版本变化 |
---|---|---|---|---|
NERtcSDK.xcframework | RtcBasic |
音视频库(必选基础库) | ✔ | 一直提供 |
NERtcnn.xcframework | Nenn |
神经网络库
|
- | 4.6.20 起提供 |
NERtcReplayKit.xcframework | ScreenShare |
屏幕共享库 | - | 4.6.20 起提供 |
NERtcBeauty.xcframework | Beauty |
美颜库(美颜相关),需搭配 NERtcnn.xcframework 使用 |
- | 4.6.20 起提供 |
NERtcFaceDetect.xcframework | FaceDetect |
人脸检测库(美颜相关),需搭配 NERtcnn.xcframework 使用 |
- | 4.6.20 起提供 |
NERtcPersonSegment.xcframework | Segment |
背景分割库,需搭配 NERtcnn.xcframework 使用 |
- | 4.6.20 起提供 |
NERtcAiHowling.xcframework | AiHowling |
AI 啸叫检测库,需搭配 NERtcnn.xcframework 使用 |
- | 4.6.40 起提供 |
NERtcFaceEnhance.xcframework | FaceEnhance |
人脸增强库,需搭配 NERtcnn.xcframework 使用 |
- | 5.3.0 起提供 |
NERtcAiDenoise.xcframework | AiDenoise |
音频 AI 降噪库,需搭配 NERtcnn.xcframework 使用 |
- | 4.6.40 起提供 |
NERtcSuperResolution.xcframework | SuperResolution |
视频超分库 | - | 5.3.0 起提供 |
NERtcVideoDenoise.xcframework | VideoDenoise |
视频降噪库 | - | 5.3.0 起提供 |
NERtcAudio3D.xcframework | SpatialSound |
空间音效插件 | - | 5.4.0 起提供 |
文件/文件夹名称 | subspecs 值 |
功能/插件名 | 必选? |
版本变化 |
---|---|---|---|---|
NERtcSDK.framework | RtcBasic |
音视频库(必选基础库) | ✔ | 一直提供 |
RtcBasic |
||||
NERtcnn.framework | Nenn |
神经网络库
|
- | 4.6.20 起提供 |
NERtcReplayKit.framework | ScreenShare |
屏幕共享库 | - | 4.6.20 起提供 |
NERtcBeauty.framework | Beauty |
美颜库(美颜相关),需搭配 NERtcnn.framework 使用 |
- | 4.6.20 起提供 |
NERtcFaceDetect.framework | FaceDetect |
人脸检测库(美颜相关),需搭配 NERtcnn.framework 使用 |
- | 4.6.20 起提供 |
NERtcPersonSegment.framework | Segment |
背景分割库,需搭配 NERtcnn.framework 使用 |
- | 4.6.20 起提供 |
NERtcAiHowling.framework | AiHowling |
AI 啸叫检测库,需搭配 NERtcnn.framework 使用 |
- | 4.6.40 起提供 |
NERtcFaceEnhance.framework | FaceEnhance |
人脸增强库,需搭配 NERtcnn.framework 使用 |
- | 5.3.0 起提供 |
NERtcAiDenoise.framework | AiDenoise |
音频 AI 降噪库,需搭配 NERtcnn.framework 使用 |
- | 4.6.40 起提供 |
NERtcSuperResolution.framework | SuperResolution |
视频超分库 | - | 5.3.0 起提供 |
NERtcVideoDenoise.framework | VideoDenoise |
视频降噪库 | - | 5.3.0 起提供 |
NERtcAudio3D.framework | SpatialSound |
空间音效插件 | - | 5.4.0 起提供 |
第二步:创建项目
本步骤是可选步骤,如果您需要集成到已有的项目,请忽略该步骤。单击展开查看创建 XCode 新项目的步骤。
-
在 XCode 里,依次选择 Create a New XCode Project > Single View App > Next 新建工程。
-
配置工程相关信息和合适的工程本地路径,单击 Next。
第三步:集成 SDK
方式一:CocoaPods 集成
-
请确保您的 Mac 已经安装 Ruby 环境。
-
安装 CocoaPods。安装 CocoaPods 的详细操作说明请参考 CocoaPods 官方文档。
在终端窗口中输入如下命令可以安装 CocoaPods:
sudo gem install cocoapods
-
创建 Podfile 文件。
从 Terminal 中进入您所创建项目所在路径,运行以下命令创建
Podfile
文件。pod init
-
您可以按需选择直接使用 Podfile 集成 NERtcSDK,或在您的项目组件的 Podspec 中引入 NERtcSDK。
方式一:编辑 Podfile 文件CocoaPods
# platform :ios, '9.0' target '{YourApp}' do use_frameworks! pod 'NERtcSDK', '~> {version}' end
参数 说明 YourApp 您的 Target 名称。 version 待集成的 NERTC SDK 版本号。具体的版本号,请参考上文 获取 SDK。 方式二:编辑 Podspec 文件CocoaPods
Pod::Spec.new do |{YourSpec}| {YourSpec}.dependency "NERtcSDK", "~> {version}" end
参数 说明 YourSpec 您的 Target 名称。 version 待集成的 NERTC SDK 版本号。具体的版本号,请参考上文 获取 SDK。 若您对包体积大小有要求,请集成 4.6.20 及之后版本的 NERTC SDK,实现以插件化的方式按需集成动态库。请参考以下代码实现:
方式一:编辑 Podfile 文件CocoaPods
//集成 SDK 但不使用任何插件 # platform :ios, '9.0' target '{YourApp}' do use_frameworks! pod 'NERtcSDK', '~> {version}', :subspecs => ['RtcBasic'] end
CocoaPods
//4.6.20~4.6.X 版本,集成 SDK 且使用部分插件,以美颜模块为例 # platform :ios, '9.0' target '{YourApp}' do use_frameworks! pod 'NERtcSDK', '~> {version}', :subspecs => ['RtcBasic', 'Beauty', 'FaceDetect'] end
CocoaPods
//5.3.0 及以上版本,集成 SDK 且使用部分插件,以美颜模块为例 # platform :ios, '9.0' target '{YourApp}' do use_frameworks! pod 'NERtcSDK', '~> {version}', :subspecs => ['RtcBasic', 'Nenn', 'Beauty', 'FaceDetect'] end
CocoaPods
//5.3.0 及以上版本,集成 SDK 且使用部分插件,以音频啸叫检测插件为例 # platform :ios, '9.0' target '{YourApp}' do use_frameworks! pod 'NERtcSDKAudio', '~> {version}', :subspecs => ['RtcBasic', 'Nenn', 'AiHowling'] end
以上代码中,
subspecs
字段请填入待引入的动态库对应的值,取值说明请参考 SDK 动态库列表。方式二:编辑 Podspec 文件CocoaPods
//集成 SDK 但不使用任何插件 Pod::Spec.new do |{YourSpec}| {YourSpec}.dependency "NERtcSDK/RtcBasic", "~> {version}" end
CocoaPods
//4.6.20~4.6.X 版本,集成 SDK 且使用部分插件,以美颜为例 Pod::Spec.new do |{YourSpec}| {YourSpec}.dependency "NERtcSDK/RtcBasic", "~> {version}" {YourSpec}.dependency "NERtcSDK/Beauty", "~> {version}" {YourSpec}.dependency "NERtcSDK/FaceDetect", "~> {version}" end
CocoaPods
//5.3.0 及以上版本,集成 SDK 且使用部分插件,以美颜为例 Pod::Spec.new do |{YourSpec}| {YourSpec}.dependency "NERtcSDK/RtcBasic", "~> {version}" {YourSpec}.dependency "NERtcSDK/Nenn", "~> {version}" {YourSpec}.dependency "NERtcSDK/Beauty", "~> {version}" {YourSpec}.dependency "NERtcSDK/FaceDetect", "~> {version}" end
CocoaPods
//5.3.0 及以上版本,集成 SDK 且使用部分插件,以音频啸叫检测插件为例 Pod::Spec.new do |{YourSpec}| {YourSpec}.dependency "NERtcSDKAudio/RtcBasic", "~> {version}" {YourSpec}.dependency "NERtcSDKAudio/Nenn", "~> {version}" {YourSpec}.dependency "NERtcSDKAudio/AiHowling", "~> {version}" end
以上代码中,
dependency
字段请填入待引入的动态库对应的值,取值说明请参考 SDK 动态库列表。 -
执行以下命令查询本地库版本。
pod search NERtcSDK
-
若不是最新版本,可以执行以下命令更新本地库版本。
pod repo update
-
执行以下命令安装 SDK。
pod install
-
设置签名和添加设备权限,具体请参考 设置签名并添加媒体设备权限。
方式二:手动集成
-
前往 网易云信 SDK 下载中心 下载 SDK。
-
将解压之后的
xcframework
后缀的文件加入到工程的libs/
目录下。- 不同版本的动态库有差异,请以实际为准,具体请参考 SDK 目录。
- 若您对包体积大小有要求,请集成 4.6.20 及之后版本的 NERTC SDK,您可以通过插件化的方式按需集成动态库。
-
以使用 Xcode 11.5 版本为例,依次选择 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content,单击 +,再单击 Add Other…,将上述解压得到的 SDK 文件添加进去。
请将 Embed 属性设置为 Embed & Sign,以使得 SDK 动态库和应用签名保持一致。
-
设置签名和添加设备权限,具体请参考 设置签名并添加媒体设备权限。
第四步:设置签名
-
在 Xcode 中,依次选择 TARGETS > Project Name,单击 Signing & Capabilities,勾选 Automatically manage signing。
-
在 Team 中选择您的开发团队。
第五步:添加权限
-
若您的 App 需要在退到后台时仍然运行相关功能,请打开后台音频权限。
在 Signing & Capabilities 页面,将设置项 Background Modes 设定为 ON,并勾选 Audio,AirPlay and Picture in Picture。
打开后台音频权限之后,应用在手机后台运行时,SDK 默认在后台也可以继续处理音频流,维持通话。
-
若您的 App 需要正常使用 SDK 提供的音视频功能,请给 App 授权麦克风、摄像头和 Wi-Fi 的使用权限。
编辑
info.plist
文件,添加以下三项。-
Privacy - Microphone Usage Description,并填入麦克风使用目的提示语。
-
Privacy - Camera Usage Description,并填入摄像头使用目的提示语。
-
Application uses Wi-Fi,设置为 YES。
-
下一步
常见问题
1. 如何减小集成 SDK 后的 App 包体积?
详情请参考 减小包体积大小。
2. 如何用 Cocoapods 同时集成 RTC 与播放器?
RTC 与播放器有共用的基础库,同时集成时,原则为使用 RTC 附带的基础库。
-
若播放器为 3.1.6 及之后版本
支持用 Cocoapods 同时集成 RTC 与播放器。
-
方式 1:通过 podfile 集成的示例代码:
target 'App' do use_frameworks! pod 'NERtcSDK', 'x.x.x' pod 'NELivePlayer', '3.1.6', :subspecs => ['LivePlayer'] end
-
方式 2:通过 podspec 集成的示例代码:
Pod::Spec.new do |s| s.dependency "NELivePlayer/LivePlayer", "3.1.6" end
-
-
若播放器为 3.1.6 之前的版本
不支持用 Cocoapods 同时集成 RTC 与播放器,建议用 Cocoapods 集成 RTC,手动引入播放器并删除其附带的基础库。
3. pod 集成提示 `The 'Pods-Yaame' target has frameworks with conflicting names: nmcbasicmoduleframework.framework`
问题原因
5.3.0 之前版本的 NERTC SDK 在基础库中包含 NMCBasicModuleFramework.framework
。如果集成播放器 SDK(NELivePlayer),默认也会包含 NMCBasicModuleFramework.framework
。通过 pod 引入的话就会报错冲突。
问题解决
修改播放器 SDK(NELivePlayer) 的引入方式,只引入 LivePlayer
排除掉 NMCBasicModuleFramework.framework
库。示例代码如下:
-
方式一:通过 podfile 集成的示例代码
target 'App' do use_frameworks! pod 'NERtcSDK', 'x.x.x' pod 'NELivePlayer', '3.1.6', :subspecs => ['LivePlayer'] end
-
方式二:通过 podspec 集成的示例代码
Pod::Spec.new do |s| s.dependency "NELivePlayer/LivePlayer", "3.1.6" end