IM 即时通讯
Windows/macOS
产品介绍
简介
主要功能
产品优势
海外数据中心
IM平滑迁移方案
接口及业务限制
功能介绍
帐号集成与登录
基础消息功能
群组功能
聊天室功能
聊天室标签功能
圈组功能
多端登录与互踢策略
质量数据监控台
更新日志
Demo 更新日志
NIM SDK 更新日志
快速开始
实现单聊消息收发(不含 UI)
实现圈组消息收发(不含 UI)
开发指南
概要介绍
集成方式(当前版本)
集成方式(Windows旧版本)
集成方式(macOS旧版本)
初始化
登录登出
消息收发
最近会话
历史记录
用户资料托管
好友关系托管
事件订阅
系统通知
系统通知概述
内置系统通知管理
内置系统通知未读数
自定义系统通知收发
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
开通聊天室功能
聊天室
圈组功能
初始化
登录圈组
圈组服务器管理
圈组服务器成员管理
游客功能
频道相关
频道管理
频道分组
频道分组黑白名单
频道未读数管理
搜索服务器和频道
身份组相关
身份组概述
身份组应用场景
服务器身份组
频道身份组
频道分组身份组
频道用户定制权限
自定义权限项
成员权限判定
身份组相关查询
圈组订阅机制
圈组消息相关
圈组消息收发
圈组消息撤回
圈组消息更新
圈组消息删除
会话消息回复(Thread)
圈组快捷评论
获取频道最后一条消息
消息正在输入
圈组消息搜索
圈组消息查询
查询@我的消息
服务器未读数
圈组系统通知
圈组系统通知概述
圈组系统通知收发
圈组系统通知更新
圈组各端接口命名差异
语音录制与播放
NOS云存储服务
文档转换
反垃圾(内容审核)
API 参考
Windows/macOS API 参考
状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
配置应用客户端标识
参考文档
升级指引
开发示例
UI库指南
Demo源码导读
打包发布
类与常量定义说明
常见问题
FAQ
服务协议

集成方式(当前版本)

更新时间: 2022/10/10 16:53:09

为降低接入成本,NetEase IM SDK (以下简称 NIM SDK)从 8.4.0 版本起对发布目录进行了调整,C++ 封装层使用 CMake 进行管理,根据不同的情况您在接入 C++ 封装层时可能需要适当的修改,新的发布目录拆分为如下结构:

├─bin
├─include
├─lib
└─wrapper
  • bin/lib 存放 NIM C SDK 的动态库文件,在您发布时请打包使用到的模块,lib 后缀为 Windows 下的动态库符号链接文件
    • (lib)nim(.dll|.so|.dylib): 即时通讯
    • (lib)nim_chatroom(.dll|.so|.dylib): 聊天室
    • (lib)nim_qchat(.dll|.so|.dylib): 圈组
    • (lib)h_available(.dll|.so|.dylib): 高可用模块,被以上三个模块所依赖
    • (lib)nim_tools_http(.dll|.so|.dylib): http 工具库
    • nim_audio.dll: 音频解码库,仅支持 Windows 环境
    • nrtc.dll: 音视频通话库,仅支持 Windows 环境
    • node-nim.node: NIM SDK Node 封装层, 用于 Electron 以及 Node.js 环境下的接入
    • 其他如 msvcp120.dllmsvcr120.dll 等(系统)依赖
  • include 目录存放了 NIM C SDK 的导出头文件
  • wrapper 目录存放了 C++ 封装层的源代码(含头文件)

以 C 接口接入

如果您希望以纯 C 接口接入 NIM SDK,可通过以下步骤完成接入。

  1. 直接添加 include 为头文件搜索路径。
  2. 添加 lib 目录为依赖库文件搜索路径。
  3. 将 lib 目录下的静态库文件添加为您已有工程的附加依赖库即可使用。

以 C++ 接口接入

CMake 工程接入

如果您原工程是基于 CMake 进行管理,可通过以下步骤完成接入。

  1. 使用 ADD_SUBDIRECTORY 命令将 wrapper 目录添加为子目录。

  2. 使用 INCLUDE_DIRECTORIES 方法将 include 和 wrapper 文件夹添加为头文件搜索路径。

  3. 根据您的执行目标使用 TARGET_LINK_LIBRARIES 按需添加链接库即可。库名称分别如下:

    • nim_cpp_wrapper:NIM C++ 封装层库
    • nim_chatroom_cpp_wrapper:Chatroom C++ 封装层库
    • nim_wrapper_util:NIM 及 Chatroom C++ 封装层库通用的工具库
    • nim_tools_cpp_wrapper:NIM HTTP 组件 C++ 封装层库
    • nim_qchat_cpp_wrapper:NIM QChat 圈组 C++ 封装层库

传统方式接入(VS、Qt、Xcode)

使用传统方式接入 C++ 封装层,您需要先生成 C++ 封装层的二进制文件。根据您工程的运行时库和平台工具集来生成您需要的封装层二进制文件,以下列举了不同情况下生成 C++ 封装层所需的配置,您只需要选择其中一种符合您工程配置的选项来生成工程文件即可。

使用 CMake GUI 工具生成

  1. 使用 CMake GUI 工具打开打开 C++ 封装层文件夹并配置生成缓存目录。

  2. 点击 Configure 按钮后会提示您来配置工程选项,您可参考下图配置您的工程。

  3. 点击 Finish 按钮后工程初始化完成。

  4. 在界面配置生成工程文件的选项,再点击 Generate 按钮生成工程文件。

    请参考下图配置:

    您可以通过配置 BUILD_SHARED_LIBS 选择生成动态库还是静态库,默认情况下将生成静态库。CMAKE_INSTALL_PREFIX 选项决定了 C++ 头文件和库文件的导出目录,指定为 SDK 的根目录即可。

  5. 点击 Open Project 按钮即可打开工程。

  6. 在打开的工程中右键点击 INSTALL生成项目。

    生成完成后,C++ 封装层的头文件及库文件会自动拷贝到 SDK 根目录下的 include 及 lib 目录下。

    Install configuration: "Debug"
    Installing: E:/nim-sdk/lib/nim_wrapper_util_d.lib
    Installing: E:/nim-sdk/lib/nim_cpp_wrapper_d.lib
    Installing: E:/nim-sdk/lib/nim_chatroom_cpp_wrapper_d.lib
    Installing: E:/nim-sdk/lib/nim_tools_cpp_wrapper_d.lib
    Installing: E:/nim-sdk/include/nim_chatroom_cpp_wrapper
    Installing: E:/nim-sdk/include/nim_chatroom_cpp_wrapper/api
    Installing: E:/nim-sdk/include/nim_chatroom_cpp_wrapper/api/nim_chatroom_cpp.h
    .......
    Installing: E:/nim-sdk/include/nim_cpp_wrapper
    Installing: E:/nim-sdk/include/nim_cpp_wrapper/api
    .......
    
  7. 在项目中,将 include 目录添加为头文件搜索路径,将 lib 目录添加到您工程的库文件搜索路径,并链接指定库文件即可。 以 Visual Studio 举例,分别对应:

    • 头文件搜索路径,工程右键属性->C/C++->常规,右侧的“附加包含目录”
    • 库文件搜索路径,工程右键属性->链接器->常规,右侧的“附加库目录”
    • 链接库文件,工程右键属性->链接器->输入,右侧“附加依赖项”

    对于 v 8.4.0 以前的版本升级到 v 8.4.0 的情况,您需要将原来头文件包含路径从原来的 nim_sdk 修改为 include 目录。

使用命令行工具生成

通常情况下我们需要在 CI 集成阶段自动化编译步骤,您可以通过命令行来生成 C++ 封装层代码:

# 在 SDK 目录下新建一个 build 文件夹缓存编译 C++ 封装层时产生的临时文件
md build && cd build
# 生成工程文件,您可以添加不同参数来决定生成的工程文件属性
# 添加 -DCMAKE_CXX_FLAGS_DEBUG=/MTd -DCMAKE_CXX_FLAGS_RELEASE=/MT 生成 MTd/MT 工程
# 添加 -DBUILD_SHARED_LIBS=ON 来生成动态库工程
# 添加 -G"Visual Studio 15 2017 Win64" 来生成 VS2017 64 位工程
# 添加 -G"Visual Studio 14 2015" 来生成 VS2015 的工程
# 添加 -T"v141_xp" 来生成支持 Windows XP 的工程
cmake ../wrapper
# 编译工程文件并导出头文件及库文件
# --build 参数描述了要编译当前目录下的工程
# --config 参数指定了你要编译 Release 还是 Debug 版本的库文件
# --target 表示您要编译的指定目标,这里使用 install,在 macOS 下请注意 install 单词大小写
cmake --build . --config Debug --target install

团队协作与 CI 集成

我们不建议将 CMake 产生的工程文件直接引用到项目中使用,因为 CMake 使用将绝对路径写入到工程的配置文件(.vcxproj)中,您在自己开发机上生成的工程文件无法在其他电脑顺利编译。

所以建议您在 CI 集成或者与其他同事协作时,通过自定义脚本在项目编译前始终执行 CMake 来生成并编译工程得到需要的二进制文件产物。

当然您同样可以将生成好的 .dll.lib 上传到您的代码版本控制系统,这样虽然方便但在每次更新 SDK 版本时都上传二进制文件到代码版本控制系统中会导致代码仓库体积不断增大。

如果您的工程项目已经是基于 CMake 管理,则不存在这样的问题,只需将 wrapper 工程作为您主项目的依赖即可,其他无需任何多余配置。

此文档是否对你有帮助?
有帮助
我要吐槽
  • 以 C 接口接入
  • 以 C++ 接口接入
  • CMake 工程接入
  • 传统方式接入(VS、Qt、Xcode)
  • 团队协作与 CI 集成