组件导入

更新时间: 2025/09/11 16:12:09

圈组 iOS UIKit 采用 CocoaPods 进行构建,您可以采用添加远端仓库依赖或者本地代码依赖的方式(同一个组件库只能选择一种依赖方式),将所需组件快速导入到您的项目中。

  • 添加远端仓库依赖:适用于采用圈组 UIKit 默认界面的集成。
  • 添加本地代码依赖:适用于通过圈组 UIKit 进行界面自定义的集成。

前提条件

根据本文操作前,请确保您已准备如下开发环境/工具:

  • iOS 13.0 及以上版本
  • Xcode 11.0 及以上版本

实现流程

您可通过添加远端仓库依赖或者添加本地代码依赖,导入组件。

方式一:添加远端仓库依赖

本节介绍如何通过 Cocoapods 添加远程依赖,将您业务所需的的 UI 组件导入到您的项目,进行项目构建。

  1. 创建 Podfile 文件,并在 Podfile 文件中引入 UI 组件。

    导入 UI 组件时,需要指定相同版本的基础 Kit 库引入,否则可能导致后续出现报错。具体可参见下文的常见问题排查

    不指定 NIM SDK 版本
    swift# Uncomment the next line to define a global platform for your project
    platform :ios, '13.0'
    
    # 请使用您的真实项目名称替换 your project name
    target 'your project name' do
    # Comment the next line if you don't want to use dynamic frameworks
    use_frameworks!
    
    # 圈组组件
    pod 'NEQChatUIKit', '10.0.1' 
    # 通讯录组件(可选)       
    pod 'NEContactUIKit', '10.8.6'   
    # 会话列表组件(可选)    
    pod 'NEConversationUIKit', '10.8.6'  
    # 会话(聊天)组件(可选)
    pod 'NEChatUIKit', '10.8.6'  
    # 群相关设置组件(可选)        
    pod 'NETeamUIKit', '10.8.6'          
    
    # 基础 Kit 库
    pod 'NEChatKit', '10.8.6'
    pod 'NEQChatKit', '10.0.1'
    
    # 扩展库-地理位置组件
    pod 'NEMapKit', '10.8.6'         
    
    # 扩展库-呼叫组件
    pod 'NERtcCallKit/NOS_Special', '3.6.0'
    pod 'NERtcCallUIKit/NOS_Special', '3.6.0'
    
    # 扩展库,依次为 RTC 音视频基础组件RTC 音视频神经网络组件(使用背景虚化功能需要集成)RTC 音视频背景分割组件(使用背景虚化功能需要集成)
    pod 'NERtcSDK/RtcBasic'        
    pod 'NERtcSDK/Nenn'                    
    pod 'NERtcSDK/Segment'   
    end
    
    指定 NIM SDK 版本
    swift# Uncomment the next line to define a global platform for your project
    platform :ios, '13.0'
    
    # 请使用您的真实项目名称替换 your project name
    target 'your project name' do
    # Comment the next line if you don't want to use dynamic frameworks
    use_frameworks!
    
    # 指定 NIM SDK 版本,以 10.8.20 为例
    pod 'NIMSDK_LITE','10.8.20'
    pod 'NIMSDK_LITE/QChat','10.8.20'
    
    # 圈组组件 
    pod 'NEQChatUIKit/NOS_Special', '10.0.1' 
    # 通讯录组件(可选)       
    pod 'NEContactUIKit/NOS_Special', '10.8.6'   
    # 会话列表组件(可选)    
    pod 'NEConversationUIKit/NOS_Special', '10.8.6'  
    # 会话(聊天)组件(可选) 
    pod 'NEChatUIKit/NOS_Special', '10.8.6'  
    # 群相关设置组件(可选)        
    pod 'NETeamUIKit/NOS_Special', '10.8.6'          
    
    # 基础 Kit 库
    pod 'NECoreKit','9.8.0'
    pod 'NECommonKit','9.7.4'
    pod 'NECommonUIKit','9.8.1'
    pod 'NECoreIM2Kit/NOS_Special','1.1.5'
    pod 'NEChatKit/NOS_Special', '10.8.6'
    pod 'NEQChatKit/NOS_Special', '10.0.1'  
    pod 'lottie-ios', '2.5.3'
    
    # 扩展库-地理位置组件
    pod 'NEMapKit/NOS_Special', '10.8.6'         
    
    # 扩展库-呼叫组件
    pod 'NERtcCallKit/NOS_Special', '3.6.0'
    pod 'NERtcCallUIKit/NOS_Special', '3.6.0'
    
    # 扩展库,依次为 RTC 音视频基础组件RTC 音视频神经网络组件(使用背景虚化功能需要集成)RTC 音视频背景分割组件(使用背景虚化功能需要集成)
    pod 'NERtcSDK/RtcBasic'        
    pod 'NERtcSDK/Nenn'                    
    pod 'NERtcSDK/Segment'   
    end
    
    (海外数据中心)不指定 NIM SDK 版本
    swift# Uncomment the next line to define a global platform for your project
    platform :ios, '13.0'
    
    # 请使用您的真实项目名称替换 your project name
    target 'your project name' do
    # Comment the next line if you don't want to use dynamic frameworks
    use_frameworks!
    
    # 圈组组件
    pod 'NEQChatUIKit/FCS', '10.0.1' 
    # 通讯录组件(可选)       
    pod 'NEContactUIKit/FCS', '10.8.6'   
    # 会话列表组件(可选)    
    pod 'NEConversationUIKit/FCS', '10.8.6'  
    # 会话(聊天)组件(可选)
    pod 'NEChatUIKit/FCS', '10.8.6'  
    # 群相关设置组件(可选)        
    pod 'NETeamUIKit/FCS', '10.8.6'          
    
    # 基础 Kit 库
    pod 'NEChatKit/FCS', '10.8.6'
    pod 'NEQChatKit/FCS', '10.0.1'
    
    # 扩展库-地理位置组件
    pod 'NEMapKit/FCS', '10.8.6'         
    
    # 扩展库-呼叫组件
    pod 'NERtcCallKit/FCS_Special', '3.6.0'
    pod 'NERtcCallUIKit/FCS_Special', '3.6.0'
    
    # 扩展库,依次为 RTC 音视频基础组件RTC 音视频神经网络组件(使用背景虚化功能需要集成)RTC 音视频背景分割组件(使用背景虚化功能需要集成)
    pod 'NERtcSDK/RtcBasic'        
    pod 'NERtcSDK/Nenn'                    
    pod 'NERtcSDK/Segment'   
    end
    
    (海外数据中心)指定 NIM SDK 版本
    swift# Uncomment the next line to define a global platform for your project
    platform :ios, '13.0'
    
    # 请使用您的真实项目名称替换 your project name
    target 'your project name' do
    # Comment the next line if you don't want to use dynamic frameworks
    use_frameworks!
    
    # 指定 NIM SDK 版本,以 10.8.20 为例
    pod 'NIMSDK_LITE/FCS','10.8.20'
    pod 'NIMSDK_LITE/QChat','10.8.20'
    
    # 圈组组件
    pod 'NEQChatUIKit/FCS_Special', '10.0.1' 
    # 通讯录组件(可选)       
    pod 'NEContactUIKit/FCS_Special', '10.8.6'   
    # 会话列表组件(可选)    
    pod 'NEConversationUIKit/FCS_Special', '10.8.6'  
    # 会话(聊天)组件(可选)
    pod 'NEChatUIKit/FCS_Special', '10.8.6'  
    # 群相关设置组件(可选)        
    pod 'NETeamUIKit/FCS_Special', '10.8.6'          
    
    # 基础 Kit 库
    pod 'NECoreKit','9.8.0'
    pod 'NECommonKit','9.7.4'
    pod 'NECommonUIKit','9.8.1'
    pod 'NECoreIM2Kit/FCS_Special','1.1.5'
    pod 'NEChatKit/FCS_Special', '10.8.6'
    pod 'NEQChatKit/FCS_Special', '10.0.1'  
    pod 'lottie-ios', '2.5.3'
    
    # 扩展库-地理位置组件
    pod 'NEMapKit/FCS_Special', '10.8.6'         
    
    # 扩展库-呼叫组件
    pod 'NERtcCallKit/FCS_Special', '3.6.0'
    pod 'NERtcCallUIKit/FCS_Special', '3.6.0'
    
    # 扩展库,依次为 RTC 音视频基础组件RTC 音视频神经网络组件(使用背景虚化功能需要集成)RTC 音视频背景分割组件(使用背景虚化功能需要集成)
    pod 'NERtcSDK/RtcBasic'        
    pod 'NERtcSDK/Nenn'                    
    pod 'NERtcSDK/Segment'   
    end
    
  2. 执行以下命令导入组件。

    pod install
    
    • 各组件相互独立,添加或删除均不影响项目编译。
    • 上述示例代码中的 9.5.3 为版本号,仅用于示例。建议使用最新版本。 如果出现类似 版本不存在 的报错,可执行 pod update 命令,然后双击 .xcworkspace 文件,启动项目即可。
    • 如果需要在 Objective-C 项目中导入组件,头文件引用请参考以下引用方式。
      Objective-C#import <NEQChatKit/NEQChatKit-Swift.h>
      #import <NEQChatUIKit/NEQChatUIKit-Swift.h>
      #import <NECoreKit/NECoreKit-Swift.h>
      #import <NECoreIM2Kit/NECoreIM2Kit-Swift.h>
      #import <NERtcCallUIKit/NERtcCallUIKit.h>
      ...
      

方式二:添加本地代码依赖

本节介绍如何通过 Cocoapods 添加本地依赖,将所需的圈组 UIKit 源码导入到您的项目。

  1. 前往 网易云信开源代码仓库,下载开源的圈组 UIKit 到本地,然后将源码文件夹拷贝到项目目录。

  2. 将上述远端仓库依赖的 Podfile 文件中的对应库改为本地依赖,例如将 UI 组件和地图组件改为本地依赖只需更改以下内容(其他组件):

    pod 'NEChatUIKit', :path => 'NEChatUIKit/NEChatUIKit.podspec'
    pod 'NEQChatUIKit', :path => 'NEQChatUIKit/NEQChatUIKit.podspec'
    pod 'NEContactUIKit', :path => 'NEContactUIKit/NEContactUIKit.podspec'
    pod 'NEConversationUIKit', :path => 'NEConversationUIKit/NEConversationUIKit.podspec'
    pod 'NETeamUIKit', :path => 'NETeamUIKit/NETeamUIKit.podspec'
    pod 'NEMapKit', :path => 'NEMapKit/NEMapKit.podspec'
    pod 'NERtcCallUIKit', :path => 'NERtcCallUIKit/NERtcCallUIKit.podspec'
    

    上述内容中的 path 为相对路径,即当对应组件源码文件与 Podfile 文件处于同级目录时,才能通过上述相对路径正确引入组件。

  3. 执行以下命令导入圈组 UIKit 源码。

    pod install
    

下一步

导入组件后,需进行 初始化

常见问题

pod 冲突报错

  • 问题原因

    如果执行 步骤 1 导入组件时,只导入了 QChat UIKit 的 UI 组件,在特殊情况下可能出现库版本不一致导致的报错(UI 组件版本与其内部依赖的基础 kit 库的版本不一致)。

    例如导入的 QChat UIKit 的 UI 组件版本为 v9.5.3,但导入的基础 Kit 库版本为 v9.3.2。这会导致基础库用到日志库(alog)和 UI 组件用到的 alog 不一致,进而导致 pod 冲突报错。

  • 处理建议

    导入 UI 组件时,同时也指定推荐版本的基础 Kit 库。

    以导入 v9.5.3 的 QChat UI 组件为例,推荐的基础 Kit 库版本为:

    #基础 kit 库
    pod 'NECommonUIKit', '9.6.5'
    pod 'NECommonKit', '9.6.4'
    pod 'NECoreQChatKit', '9.6.5'
    pod 'NECoreKit', '9.6.5'
    
此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 实现流程
  • 方式一:添加远端仓库依赖
  • 方式二:添加本地代码依赖
  • 下一步
  • 常见问题