互动直播 2.0
iOS
新手接入指南
产品简介
产品介绍
功能特性
产品优势
应用场景
基本概念
使用限制
更新日志
体验 Demo
下载 SDK 和 示例代码
快速开始
接入流程
创建应用
开通服务
集成 SDK
实现互动直播
Token 鉴权
高级 Token 鉴权
基础功能
设置音频属性
设置视频属性
通话音量管理
屏幕共享
进阶功能
音频管理
客户端音频录制
原始音频数据
耳返
美声变声与混响
音效与伴音
自定义音频采集与渲染
设置音频订阅优先级
音频裸流传输
视频管理
视频截图
水印
云信美颜
第三方美颜
自定义视频采集
视频图像畸变矫正
虚拟背景
视频裸流传输
设备管理
音频设备管理
视频设备管理
体验提升
监测发言者音量
媒体补充增强信息
通话中质量监测
旁路推流
旁路推流
旁路推流画面布局
媒体流管理
视频流回退
跨房间媒体流转发
媒体流加密
AI 融合功能
AI 超分
AI 降噪
最佳实践
音视频参数配置推荐
Audio Session 使用建议
客户端 API
iOS API 参考
错误码
服务端 API
控制台指南
常见问题处理
FAQ
错题集
服务协议

集成SDK

更新时间: 2023/01/10 11:26:10

本文为您介绍了 iOS 端集成 SDK 的操作步骤,帮助您快速集成 SDK 并实现互动直播的基本功能。

前提条件

在开始运行工程之前,请您准备以下开发环境:

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

SDK 目录

  • 目录结构
iOS
|
|-- NERtcSDK.framework                     //推荐放置在 libs/ 目录
|-- NMCBasicModuleFramework.framework      //推荐放置在 libs/ 目录
|-- NERtcnn.framework                      //推荐放置在 libs/ 目录
|-- NERtcReplayKit.framework               //推荐放置在 libs/ 目录
|-- NERtcBeauty.framework                  //推荐放置在 libs/ 目录
|-- NERtcFaceDetect.framework              //推荐放置在 libs/ 目录
|-- NERtcPersonSegment.framework           //推荐放置在 libs/ 目录
|-- NERtcAiDenoise.framework               //推荐放置在 libs/ 目录
|-- NERtcAiHowling.framework               //推荐放置在 libs/ 目录
  • 目录内容
文件/文件夹名称 是否必选 说明
NERtcSDK.framework 音视频库。
NMCBasicModuleFramework.framework 基础模块库。
NERtcnn.framework 机器学习库(自 V4.6.20 起提供,以实现插件化)。
NERtcReplayKit.framework 屏幕共享(自 V4.6.20 起提供,以实现插件化)。
NERtcBeauty.framework 美颜(自 V4.6.20 起提供,以实现插件化)。
NERtcFaceDetect.framework 人脸检测(自 V4.6.20 起提供,以实现插件化)。
NERtcPersonSegment.framework 背景分割(自 V4.6.20 起提供,以实现插件化)。
NERtcAiDenoise.framework AI 降噪(自 V4.6.40 起提供,以实现插件化)。
NERtcAiHowling.framework AI 啸叫检测(自 V4.6.40 起提供,以实现插件化)。

集成 NERTC SDK

方法一 CocoaPods 集成

请确保您的 Mac 已经安装 Ruby 环境。

  1. (可选)创建项目。
您可以参考此步骤创建新项目。如果您需要集成到已有的项目,请忽略该步骤。

在 XCode 里,依次选择 Create a New XCode Project > Single View App > Next 新建工程,再配置工程相关信息和合适的工程本地路径,单击 Create

image image
  1. 安装 CocoaPods。

    在终端窗口中输入如下命令:

    sudo gem install cocoapods
    
  2. 创建 Podfile 文件。

    从 Terminal 中进入您所创建项目所在路径,运行以下命令创建 Podfile 文件。

    pod init
    
  3. 您可以按需选择直接使用 Podfile 集成 NERtcSDK,或在您的项目组件的 Podspec 中引入 NERtcSDK。

    • 编辑 Podfile 文件。
    # platform :ios, '9.0' 
    target '{YourApp}' do
        use_frameworks!
    
        pod 'NERtcSDK', '~> {version}'
    
    参数 说明
    YourApp 您的 Target 名称。
    version 待集成的 NERTC SDK 版本号。建议使用最新版本,请从 SDK 下载中心查看 NERTC SDK 最新版本的版本号。若要使用其他版本,请联系网易云信技术支持获取对应的版本号。

    若您对包体积大小有要求,请集成 V4.6.20 及之后版本的 NERTC SDK,实现以插件化的方式按需集成动态库,请参考以下代码实现:

    //集成 SDK 但不使用任何插件
    # platform :ios, '9.0' 
    target '{YourApp}' do
    
        use_frameworks!
    
        pod 'NERtcSDK', '~> {version}', :subspecs => ['RtcBasic']
    
    //集成 SDK 且使用部分插件,以美颜为例
    # platform :ios, '9.0' 
    target '{YourApp}' do
    
        use_frameworks!
    
        pod 'NERtcSDK', '~> {version}', :subspecs => ['RtcBasic', 'Beauty', 'FaceDetect']
    

    subspecs 中请填入待引入的动态库对应的值,具体说明如下表所示。

    功能/插件 framework 动态库 subspecs 的值
    音视频 必选基础库( NERtcSDK.frameworkNMCBasicModuleFramework.frameworkNERtcnn.framework RtcBasic
    屏幕共享 屏幕共享库:NERtcReplayKit.framework ScreenShare
    美颜 美颜库: NERtcBeauty.framework Beauty
    人脸检测库: NERtcFaceDetect.framework FaceDetect
    虚拟背景 背景分割库:NERtcPersonSegment.framework Segment
    AI 降噪 AI 降噪库:NERtcAiDenoise.framework AiDenoise
    AI 啸叫检测 AI 啸叫检测库:NERtcAiHowling.framework AiHowling

    • 编辑 Podspec 文件。
    Pod::Spec.new do |{YourSpec}|
        {YourSpec}.dependency "NERtcSDK",  "~> {version}"
    
    参数 说明
    YourApp 您的 Target 名称。
    version 待集成的 NERTC SDK 版本号。建议使用最新版本,请从 SDK 下载中心查看 NERTC SDK 最新版本的版本号。若要使用其他版本,请联系网易云信技术支持获取对应的版本号。

    若您对包体积大小有要求,请集成 V4.6.20 及之后版本的 NERTC SDK,实现以插件化的方式按需集成动态库,请参考以下代码实现:

    //集成 SDK 但不使用任何插件
    Pod::Spec.new do |{YourSpec}|
        {YourSpec}.dependency "NERtcSDK/RtcBasic",  "~> {version}"
    
    //集成 SDK 且使用部分插件,以美颜为例
    Pod::Spec.new do |{YourSpec}|
        {YourSpec}.dependency "NERtcSDK/RtcBasic",  "~> {version}"
        {YourSpec}.dependency "NERtcSDK/Beauty",  "~> {version}"
        {YourSpec}.dependency "NERtcSDK/FaceDetect",  "~> {version}"
    

    dependency 中请填入待引入的动态库对应的值,具体说明如下表所示。

    功能/插件 framework 动态库 dependency 的值
    音视频 必选基础库( NERtcSDK.frameworkNMCBasicModuleFramework.frameworkNERtcnn.framework RtcBasic
    屏幕共享 屏幕共享库:NERtcReplayKit.framework ScreenShare
    美颜 美颜库: NERtcBeauty.framework Beauty
    人脸检测库: NERtcFaceDetect.framework FaceDetect
    虚拟背景 背景分割库:NERtcPersonSegment.framework Segment
    AI 降噪 AI 降噪库:NERtcAiDenoise.framework AiDenoise
    AI 啸叫检测 AI 啸叫检测库:NERtcAiHowling.framework AiHowling
  4. 执行以下命令查询本地库版本。

    pod search NERtcSDK         
    
  5. 若不是最新版本,可以执行以下命令更新本地库版本。

    pod repo update
    
  6. 执行以下命令安装安装 SDK。

    pod install        
    
  7. 设置签名和添加设备权限,具体请参见设置签名并添加媒体设备权限

方法二 手动集成

  1. 创建项目。

    若您需要创建新项目,在 XCode 里,依次选择 Create a New XCode Project > Single View App > Next 新建工程,再配置工程相关信息和合适的工程本地路径,单击 Create

    image image
  2. 前往网易云信 SDK 下载中心获取当前最新版本,或联系网易云信技术支持获取对应版本的 SDK 安装包。

  3. 将解压之后的所有 framework 后缀的文件加入到工程路径下,具体请参考 SDK 目录

    若您对包体积大小有要求,请集成 V4.6.20 及之后版本的 NERTC SDK,则可以按需集成动态库。例如:

    • 若您需要集成 SDK,但不使用任何插件,则仅需引入 NERtcSDK.frameworkNMCBasicModuleFramework.frameworkNERtcnn.framework 文件。
    • 若您需要集成 SDK,但只需要美颜功能,则仅需引入 NERtcSDK.frameworkNMCBasicModuleFramework.frameworkNERtcnn.frameworkNERtcBeauty.frameworkNERtcFaceDetect.framework 文件。
  4. 以 Xcode Version 11.5 为例,进入 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content 菜单,点击 +,再点击 Add Other…,将上述解压得到的 SDK 文件添加进去。

  5. Embed 属性设置为 Embed & Sign,以使得SDK动态库和应用签名保持一致。

  6. 设置签名和添加设备权限,具体请参见设置签名并添加媒体设备权限

在手动导入 SDK 的情况下,由于 SDK 包含模拟器版本,会导致打包失败。所以需要在打包之前将模拟器版本剥去,具体步骤参见剥离模拟器版本

设置签名并添加媒体设备权限

  1. 设置签名。

    1. 在 Xcode 中,选择目标 TARGETS 和 Project Name,单击 Signing & Capabilities 页签,选中 Automatically manage signing

    Xcode_Signing.png

    1. 在 Team 中选择您的开发团队。
  2. Signing & Capabilities 页面,打开后台音频权限。

    打开后台音频权限之后,应用在手机中后台运行时,SDK 默认在后台也可以继续处理音频流,维持通话。

  3. 编辑 info.plist 文件,授权麦克风、摄像头和 WiFi 的使用权限。

    使用 SDK 的音视频功能,需要授权麦克风和摄像头的使用权限。在 App 的 Info.plist 中添加以下三项。

    • Privacy - Microphone Usage Description,并填入麦克风使用目的提示语。
    • Privacy - Camera Usage Description,并填入摄像头使用目的提示语。
    • Application uses Wi-Fi,设置为 YES

后续步骤

  • 实现互动直播

  • 剥离模拟器版本(仅手动集成 SDK 时需要)

    1. 在工程里创建 nim_strip_archs.sh 脚本到指定目录,例如 Supporting Files 目录。

    2. Build Phases 中增加过程,类型为 New Run Script Phase。需要把去掉模拟器的 Run Script 脚本放在 Embed Frameworks 之后。

    3. 在工程里添加内容: /bin/sh 您的脚本路径,例如 /bin/sh "${SRCROOT}/NIMDemo/Supporting Files/nim_strip_archs.sh"

    4. 将如下内容复制到脚本:

      #!/bin/sh
      
      # Strip invalid architectures
      
      strip_invalid_archs() {
      binary="$1"
      echo "current binary ${binary}"
      # Get architectures for current file
      archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
      stripped=""
      for arch in $archs; do
      if ! [[ "${ARCHS}" == *"$arch"* ]]; then
      if [ -f "$binary" ]; then
      # Strip non-valid architectures in-place
      lipo -remove "$arch" -output "$binary" "$binary" || exit 1
      stripped="$stripped $arch"
      fi
      fi
      done
      if [[ "$stripped" ]]; then
      echo "Stripped $binary of architectures:$stripped"
      fi
      }
      
      APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
      
      # This script loops through the frameworks embedded in the application and
      # removes unused architectures.
      find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
      do
      FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
      FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
      echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
      
      strip_invalid_archs "$FRAMEWORK_EXECUTABLE_PATH"
      done
      
此文档是否对你有帮助?
有帮助
我要吐槽
  • 前提条件
  • SDK 目录
  • 集成 NERTC SDK
  • 方法一 CocoaPods 集成
  • 方法二 手动集成
  • 设置签名并添加媒体设备权限
  • 后续步骤