IM 即时通讯(SDK)
Windows/macOS
开发指南

NIM SDK 更新日志

更新时间: 2023/08/17 18:52:15

近期重要更新

  • 支持圈组自动订阅功能,具体请参考圈组订阅机制
  • 支持接入第三方机器人,在一对一(P2P)和群组(高级群,Team)场景中与机器人进行互动,具体请参考接入第三方机器人
  • 支持“圈组用户资料复用 IM 用户资料” 功能。

[9.12.2] - 2023-08-17

优化手动登录的重连效率。

[9.12.1] - 2023-08-01

修复

  • 修复部分设备初始化失败或崩溃问题。
  • 修复设备被踢但还自动登录的问题。

[9.12.0] - 2023-07-07

新增特性

圈组订阅机制支持自动订阅。开启自动订阅后,当用户登录到圈组服务器,无需手动订阅服务器或频道,进入服务器或频道时即可收到消息、事件和系统通知,退出时则自动取消订阅。具体请参考圈组订阅机制

优化

SetMultiUnreadCountZeroAsync 方法支持参数校验,当传入会话数量超过 50 则调用失败并返回错误码 10414。

API 变更

API 说明
QChatInitParam::auto_subscribe 新增圈组自动订阅开启/关闭参数。

[9.11.0] - 2023-05-30

新增特性

  • 支持接入第三方机器人,在一对一(P2P)和群组(高级群,Team)场景中与机器人进行互动,具体请参考接入第三方机器人
  • 新增第三方回调动态登录模式,具体请参见登录 IM

优化

  • 与聊天室建立连接时,调用 Exit 接口马上结束登录。
  • 优化登录重连机制的内部逻辑。
  • 优化 NOS 文件上传前需要确认备份文件是否与源文件匹配,若不匹配则使用源文件上传。

修复

  • 修复调用 QueryMsgAsync 方法查询群消息的结果中无用户昵称的问题。
  • 修复其他已知问题。

API 变更

API
API 说明
Client::RegRequestLoginExtensionCb 获取 IM 动态登录扩展信息,用于实现通过第三方回调动态登录 IM
Chatroom::RegRequestLoginTokenCb 获取聊天室动态 Token,用于实现通过动态 Token 登录聊天室
Chatroom::RegRequestLoginExtensionCb 获取聊天室动态登录扩展信息,用于实现通过第三方回调动态登录聊天室
nim::IMMessage 消息体中新增机器人信息字段(robot_info),用于实现机器人消息功能
GetQuickComments 调用获取圈组快捷评论接口返回的数据中新增快捷评论的创建时间,即 QChatQuickCommentDetail 中新增评论创建时间字段(create_time

[9.10.0] - 2023-04-11

优化

  • 优化内部拉黑后的消息重发逻辑。
  • 内部升级 libcurl。

问题修复

  • 修复调用 QueryMsgByIDAysnc 接口会将自己发的文件消息路径修改为临时路径的问题。
  • 修复调用 TeamMsgQueryUnreadList 接口查询群消息已读/未读的成员列表异常问题。
  • 修复转发文件消息异常的问题。
  • 修复其他已知问题。

[9.9.2] - 2023-03-09

新增特性

新增 “圈组用户资料复用 IM 用户资料” 的能力。

  • 如果某用户未配置自己的服务器成员信息,该用户进入服务器后的初始成员信息将直接复用对应的 IM 用户资料(目前仅支持复用昵称和头像)。

  • 如果某用户在未配置自己的服务器成员信息的情况下修改了自己的 IM 用户资料(昵称或头像),系统通知(枚举值kNIMQChatSystemNotificationTypeMyMemberInfoUpdated)将触发,通知当前用户需要在哪些服务器中重新获取自己的成员信息。

API 变更

API 新增

API
API 说明
CreateTeamAsyncEx 创建群组的新接口,默认创建高级群,可以选择 type 创建普通群(即讨论组,当前版本 SDK 中讨论组已废弃,不建议使用) 原创建群接口CreateTeamAsync已废弃。

数据结构变更

  • 圈组的系统通知类型NIMQChatSystemNotificationType中新增枚举kNIMQChatSystemNotificationTypeMyMemberInfoUpdated,表示修改 IM 用户资料触发的圈组服务器成员信息的联动修改。该系统通知的具体触发条件、接收者和接收条件,请参见圈组系统通知概述中对USER_INFO_UPDATE(35)的说明。

  • 圈组系统通知的投递对象类型NIMQChatSystemNotificationToType新增枚举值kNIMQChatSystemNotificationToTypeAccids,表示发送给指定的用户。

问题修复

部分已知问题修复与优化。

[9.9.0] - 2023-02-09

新增特性

SDK 支持查询指定频道中@当前用户的未读消息,同时也支持批量查询消息是否@当前用户。具体请参见查询@我的消息

API 新增

API
API 说明
Message::GetMentionedMeMessages 查询指定频道中@当前用户的未读消息
Message::AreMentionedMeMessages 批量查询消息是否@当前用户

优化

  • 修复已读/未读状态显示错误问题。
  • 修复其他已知问题。

[9.8.0] - 2022-12-27

该版本的圈组模块新增了游客功能。

新增特性

序号
新增特性
特性描述
相关文档
1 游客功能 以游客身份进入服务器,可查询部分信息和接收消息,也可接收部分系统通知 游客功能
2 频道对游客的可见性 创建和更新频道时可设置频道是否对游客可见 频道管理
3 频道分组对游客的可见性 如果频道对游客可见,则包含该频道的频道分组也对游客可见,且频道分组的查看模式变更可能导致频道对游客的可见性变更 频道分组
4 频道可见性变更系统通知 新增系统通知类型CHANNEL_VISIBILITY_TO_VISITOR_UPDATE,表示频道对游客的可见性发生变更 游客可接收的系统通知

API 变更

API 新增

API
API 说明
Server::EnterAsVisitor 以游客身份进入服务器
Server::LeaveAsVisitor 以游客身份离开服务器
Channel::SubscribeAsVisitor 以游客身份订阅频道
Server::SubscribeAsVisitor 以游客身份订阅服务器

API 变更

API
API 说明 变更说明
Channel::CreateChannel 创建频道 新增参数visitor_mode,用于设置频道是否对游客可见
Channel::UpdateChannel 修改频道信息 新增参数visitor_mode,用于设置频道是否对游客可见

[9.7.0] - 2022-12-2

新增特性

IM 新增动态查询连续完整的历史消息功能,具体请参见动态查询历史消息

相较于频繁从云端获取,该查询方法在保证历史消息完整的同时,减少了耗时和耗能。

API 新增

API API 说明
GetMessagesDynamically 动态查询连续完整的历史消息

优化

  • 日志文件按照进程分开保存。
  • 修复已知问题。

[9.6.3] - 2022-10-27

新增特性

聊天室模块新增根据标签(Tags)查询聊天室历史消息的功能,具体请参见根据标签查询历史消息

API 新增

V9.6.3 的聊天室模块引入了如下 API。

API
API 说明
GetMessageHistoryByTagsOnlineAsync 通过聊天室标签(可多个)来检索聊天室历史消息。

修复

修复解析非期望的服务器数据包后未重连的问题。

[9.6.0] - 2022-9-26

新增特性

序号
新增特性
特性描述
相关文档
1 @身份组 支持在圈组发送消息时@指定身份组 圈组消息收发
2 身份组自定义权限 支持通过服务端 API 为身份组添加自定义权限项,帮助开发者快速实现符合自身业务需求的权限管控能力 自定义权限

API 变更

API
API 说明
变更说明
Send 在圈组的频道中发送消息 新增参数mention_role_ids,如传入该参数,则表示发送的消息需要@指定的身份组。@身份组需要拥有“@身份组”权限(kPermissionAtRole
UpdateServerRole 修改服务器身份组
  • 可配置的权限项新增“@身份组”(kPermissionAtRole)。拥有该权限的成员可在圈组发送消息时@指定身份组(最多10个)
  • 定义身份组权限项的QChatPermission中新增自定义权限项(如果已通过服务端API创建),键值大于或等于 10000 的 int 型权限项即为自定义权限项
UpdateChannelRole 修改频道身份组
  • 可配置的权限项新增“@身份组”(kPermissionAtRole)。拥有该权限的成员可在圈组发送消息时@指定身份组(最多10个)
  • 定义身份组权限项的QChatPermission中新增自定义权限项(如果已通过服务端API创建),键值大于或等于 10000 的 int 型权限项即为自定义权限项
UpdateChannelCategoryRole 修改频道分组身份组
  • 可配置的权限项新增“@身份组”(kPermissionAtRole)。拥有该权限的成员可在圈组发送消息时@指定身份组(最多10个)
  • 定义身份组权限项的QChatPermission中新增自定义权限项(如果已通过服务端API创建),键值大于或等于 10000 的 int 型权限项即为自定义权限项
UpdateChannelCategoryMemberRole 修改频道分组用户定制权限
  • 可配置的权限项新增“@身份组”(kPermissionAtRole)。拥有该权限的成员可在圈组发送消息时@指定身份组(最多10个)
  • 定义身份组权限项的QChatPermission中新增自定义权限项(如果已通过服务端API创建),键值大于或等于 10000 的 int 型权限项即为自定义权限项
UpdateMemberRole 修改(频道下的)用户定制权限
  • 可配置的权限项新增“@身份组”(kPermissionAtRole)。拥有该权限的成员可在圈组发送消息时@指定身份组(最多10个)
  • 定义身份组权限项的QChatPermission中新增自定义权限项(如果已通过服务端API创建),键值大于或等于 10000 的 int 型权限项即为自定义权限项
CheckPermissions 查询自己是否拥有某些权限 支持查询自定义权限(如果已通过服务端 API 创建)
CheckPermission 查询自己是否拥有某个权限 支持查询自定义权限(如果已通过服务端 API 创建)

优化改进

优化带有附件的消息处理:

  • 在根据消息 ID 查询所有消息的场景中,当存在多消息附件时,会进行处理得到默认的消息附件地址,即调用 QueryMsgByIDAysnc方法后,带有附件的消息的 local_res_path字段会被赋予路径。
  • 创建多媒体转发消息时,若 url 不存在,则自动从数据库中获取。

[9.5.2] - 2022-9-7

修复断网场景下进行数据上报引起的崩溃问题。

[9.5.1] - 2022-8-31

更新 wrapper 层的 CMakeLists.txt,修复 cmake configure 失败的问题。

[9.5.0] - 2022-8-29

新增特性

V9.5.0 的圈组模块新增搜索频道成员功能,具体请参见搜索服务器和频道

优化改进

优化 LBS 策略。

新增 API

V9.5.0 的圈组模块引入了如下 API。

API
API 说明
ChannelMemberSearch 搜索频道成员

[9.4.0] - 2022-8-8

新增特性

V9.4.0 的圈组模块新增如下特性:

序号
新增特性
特性描述
相关文档
1 批量查询权限 支持查询自己是否拥有某些权限 查询当前用户是否拥有某些权限
2 以圈组服务器维度处理未读消息数 支持订阅服务器所有频道的消息,且支持清空服务器未读数 服务器未读数
3 搜索消息 支持分页搜索对用户可见的消息。您可通过msg_sub_type参数进行相应的上层业务开发,实现消息可见性逻辑。支持配置该参数的 API,请参见下文的 API 变更说明 搜索消息

API 变更

V9.4.0 的圈组模块引入了如下新增 API 和 变更 API。

新增 API

API
API 说明
CheckPermissions 查询自己是否圈组内的某些(圈组)权限
SearchMsgByPage 分页搜索圈组消息
SubscribeAllChannel 一次性订阅圈组服务器下最多 200 个频道。单次调用可传入的服务器 ID 数量上限为 10 个。即使多次调用,单个服务器下最多仅能订阅 200 个 频道
MarkRead 清空圈组服务器的未读数

变更 API

API
变更说明
Message::Send 新增入参和回参msg_sub_type,表示消息子类型。该参数可以用来做特殊渲染、可见性判断、动画效果展示等。例如,您可通过该参数开发相应的上层业务逻辑,实现发送消息时设置消息对其他用户的可见性
Message::Reply 新增入参和出参msg_sub_type,表示消息子类型
Message::Update 新增入参和出参msg_sub_type,表示消息子类型
Message::GetMessages 新增出参msg_sub_type,表示消息子类型
Message::GetMessagesCache 新增出参msg_sub_type,表示消息子类型
Message::GetLastMessages 新增出参msg_sub_type,表示消息子类型
Message::GetMessageHistoryByIds 新增出参msg_sub_type,表示消息子类型
Message::GetReferMessages 新增出参msg_sub_type,表示消息子类型
Message::GetThreadMessages 新增出参msg_sub_type,表示消息子类型
Message::GetThreadRootMessagesMeta 新增出参msg_sub_type,表示消息子类型
Message::MessageSearchByPage 新增出参msg_sub_type,表示消息子类
Message::RegRecvCb 新增出参msg_sub_type,表示消息子类
Message::RegUpdatedCb 新增出参msg_sub_type,表示消息子类

[9.3.0] - 2022-7-25

新增特性

序号
新增特性
特性描述
相关文档
1 获取服务器未读数 获取服务器下所有频道的累加消息未读数 获取服务器未读数
2 获取频道最后一条消息 获取多个频道的最后一条消息,从而在频道列表展示各频道的最后一条消息 获取频道最后一条消息
3 圈组搜索结果自定义排序 搜索圈组服务器和频道的匹配结果,可按自定义排序 圈组搜索功能
4 查询邀请/申请记录 查询服务器的邀请和申请记录,以及用户个人被邀请加入服务器和申请加入服务器的记录 查询申请/邀请的历史记录
5 生成邀请码 拥有“邀请他人加入服务器的权限”的用户可生成邀请码,其他用户可通过邀请码加入服务器 生成邀请码
6 通过邀请码加入服务器 获取到邀请码的用户,可通过邀请码加入服务器 通过邀请码加入服务器

优化改进

新增自动取消订阅逻辑:新增 频道对当前用户可见性变更当前用户进入/退出服务器 内置系统通知类型。当收到前者时,如存在相应频道的订阅信息,则自动取消订阅该频道的请求。当收到后者(且为退出服务器)时,如存在相应服务器的订阅信息,则自动取消订阅该服务器以及该服务器下所有已订阅频道的请求。圈组的具体订阅机制,请参见圈组订阅机制

API 变更

新增 API

API
API 说明
GenerateInviteCode 生成邀请码
JoinByInviteCode 通过邀请码加入服务器
GetInviteApplyRecordOfServer 查询服务器下的申请记录和邀请记录
GetInviteApplyRecordOfSelf 用户查询自己的申请记录和邀请记录
RegUnreadCb 注册/注销服务器未读数变更回调

变更 API

API
变更说明
Invite 新增ttl入参(可选),表示加入服务器邀请的有效时长
Apply 新增ttl入参(可选),表示加入服务器申请的有效时长
AcceptApply 新增requestId入参(必传),表示加入服务器申请的标识
RejectApply 新增request_id入参(必传),表示加入服务器申请的标识
AcceptInvite 新增request_id入参(必传),表示加入服务器邀请的标识
RejectInvite 新增request_id入参(必传),表示加入服务器邀请的标识
CreateChannel 可创建的频道类型枚举增加枚举值kNIMQChatChannelTypeRTC,表示 实时互动频道。
UpdateServerRole 可修改的服务器身份组权限新增 实时互动频道相关权限、邀请申请管理权限和邀请申请历史记录查看权限
UpdateChannelRole 可修改的频道身份组权限新增 实时互动频道相关权限
UpdateMemberRole 可修改的个人定制权限新增 实时互动频道相关权限
UpdateChannelCategoryRole 可修改的个人定制权限新增 实时互动频道相关权限
UpdateChannelCategoryMemberRole 可修改的频道分组维度的个人定制权限新增 实时互动频道相关权限
ServerSearchByPage 新增入参sort,表示频道的排序条件
ChannelSearchByPage 新增入参sort,表示频道的排序条件

[9.2.8] - 2022-7-1

优化自动重连机制,实现国内外节点平滑迁移。

[9.2.5] - 2022-6-13

该版本在圈组模块增加了圈组系统通知的类型。

相关模块
新增特性
相关文档
圈组系统通知 1. 新增以下 5 种圈组系统通知类型:
  • 加入服务器身份组成员
  • 移除服务器身份组成员
  • 更新服务器身份组权限
  • 更新频道身份组权限
  • 更新频道个人定制权限
具体可参考 NIMQChatSystemNotificationType

2. 对应新增 5 种圈组系统通知结构体,具体可查看QChatSystemNotificationDataBase
系统通知

[9.2.1] - 2022-5-25

修复融合存储短链下载无响应的问题。

[9.2.0] - 2022-5-24

该版本在圈组模块增加了频道分组、消息正在输入状态显示和搜索功能等更新。

新增特性

序号
新增特性
特性描述
相关文档
1 频道分组 支持对频道进行分组管理 频道分组
2 频道分组黑白名单 支持为频道分组设置黑白名单成员/身份组,与频道类型(私密/公开)共同判定频道分组是否对用户可见 频道分组黑白名单
3 频道分组身份组 支持在频道分组维度设置身份组和定制权限,增加用户权限控制的层级 频道分组身份组
4 消息正在输入 支持显示频道消息正在输入 消息正在输入
5 圈组搜索功能 支持通过关键字对服务器、频道和服务器成员进行搜索 圈组搜索功能

API 新增与变更

新增 API

API
API 说明
CreateChannelCategory 创建频道分组
AddChannelCategoryRole 创建频道分组身份组。创建后,默认继承服务器身份组的权限。如需更改权限,需调用UpdateChannelCategoryRole
RemoveChannelCategoryRole 删除频道分组身份组
UpdateChannelCategoryRole 更新频道分组身份组。设置频道分组身份组的权限,需调用该方法
GetChannelCategoryRolesPage 查询频道分组身份组信息
AddChannelCategoryMemberRole 创建频道分组某人的定制权限,创建后还需调用UpdateChannelCategoryMemberRole才能授予某人权限
RemoveChannelCategoryMemberRole 删除频道分组某人的定制权限
UpdateChannelCategoryMemberRole 修改频道分组某人的定制权限。创建某人定制权限后,需再调用本方法才能授予某人权限
GetChannelCategoryMemberRolesPage 查询频道分组某人的定制权限
UpdateChannelCategoryWhiteBlackRole 更新频道分组黑白名单身份组
GetExistingChannelCategoryWhiteBlackRoles 根据身份组 ID 查询频道分组白/黑名单身份组列表
GetChannelCategoryWhiteBlackRolesPage 分页查询频道分组黑白名单身份组列表
UpdateChannelCategoryWhiteBlackMembers 更新频道分组白/黑名单成员
GetExistingChannelCategoryWhiteBlackMembers 根据成员 ID 查询频道分组黑白名单列表
GetChannelCategoryWhiteBlackMembersPage 分页查询频道分组白/黑名单成员列表
RegRecvTypingEvent 监听正在输入事件
SendTypingEvent 发送正在输入事件
ServerSearchByPage 分页搜索服务器
ServerMemberSearch 搜索服务器成员
ChannelSearchByPage 搜索频道

变更 API

API
变更说明
CreateChannel 新增category_idsync_mode参数,调用时传入category_id可将频道加入某个频道分组;通过设置sync_mode,可实现频道数据与频道分组数据的同步。具体同步的数据包括查看模式(私密或公开)、黑白名单和身份组权限。

[9.1.0] - 2022-4-11

新增

[9.0.0] - 2022-3-14

新增

  1. 网易云信即时通讯服务全新能力“圈组”发布。相关功能介绍和开发集成请分别参见什么是圈组圈组接入流程

修复

  1. 初始化后不登陆直接Cleanup崩溃。

8.11.0 - 2022-01-10

新增

  • 聊天室空间消息 示例代码
  • 聊天室定向消息 示例代码
  • 聊天室标签实时更新 标签介绍
  • 匿名聊天室和独立聊天室支持第三方token鉴权, 进入聊天室时AuthType设为2, 并注册自定义token回调(RegCustomTokenCb/nim_chatroom_reg_custom_token_cb)
  • 资料反垃圾, 涉及以下接口
    • Enter/nim_chatroom_enter EnterInfo增加配置反垃圾相关参数
    • IndependentEnter/nim_chatroom_independent_enter EnterInfo增加配置反垃圾相关参数
    • IndependentEnter2/nim_chatroom_independent_enter2 EnterInfo增加配置反垃圾相关参数
    • AnonymousEnter/nim_chatroom_enter_with_anoymity EnterInfo增加配置反垃圾相关参数
    • AnonymousEnter2/nim_chatroom_enter_with_anoymity2 EnterInfo增加配置反垃圾相关参数
    • UpdateMyUserNameCard/nim_user_update_my_user_name_card 接口json扩展增加配置反垃圾相关参数
    • UpdateTeamInfoAsync/nim_team_update_team_info_async 接口json扩展增加配置反垃圾相关参数
    • CreateTeamAsync/nim_team_create_team_async 接口json扩展增加配置反垃圾相关参数
    • UpdateSuperTeamInfoAsync/nim_super_team_update_team_info_async 接口json扩展增加配置反垃圾相关参数
    • UpdateRoomInfoAsync/nim_chatroom_update_room_info_async 接口json扩展增加配置反垃圾相关参数
    • UpdateMyRoomRoleAsync/nim_chatroom_update_my_role_async 接口json扩展增加配置反垃圾相关参数

8.10.0 - 2021-12-23

修复

  • QueryLastFewSessionAsync查询出来的会话都没有未读数

新增

  • 支持AWS S3存储

8.9.0 - 2021-12-03

修复

  • 修复update msglog时SQL语句错误导致返回21

新增

  • 从8.9.0开始不再支持xp系统
  • 提升好友数至1万

8.8.0 - 2021-11-04

修复

  • 修复离线消息和漫游消息同步顺序可能导致用旧的消息更新会话
  • 在注册回调执行函数之后部分带有指针的回调到用户线程后超出生命周期

新增

  • 新增根据时间排序的全文检索消息接口
  • 批量添加聊天室队列元素

[8.7.2] - 2021-09-28

新增

  • 安全通增加反垃圾自定义过滤规则和回执C/C++(2021 年 9 月 28 日前接入安全通(易盾反垃圾)的客户,需要升级到最新版安全通能力才可使用此接口能力,升级请联系商务经理)

修复

  • NOS 短链换长链后下载资源失败

[8.7.0] - 2021-08-25

新增

  • 聊天室撤回消息通知,用户可关注聊天室通知 kChatRoomNotificationIdRecallMessage 在业务层删除指定消息
  • 聊天室队列支持指定队列所有人 C++

修复

  • 漫游消息会重复下发问题
  • 发送多次已读回执问题
  • 多次调用 Cleanup 死锁
  • 保存时间戳到数据库有溢出问题

[8.6.2] - 2021-08-06

修复

  • C++ 封装层代码在 VS2013 下无法编译通过

[8.5.0] - 2021-06-17

新增

  • 增加服务器全文检索接口 C/ C++

  • 增加群组已读回执查询重载接口,支持传入指定 IDs 列表查询 C++

修复

  • 未调用 Cleanup 直接退出应用场景做进一步保护
  • IDE 调试退出场景 NRTC 模块抛出异常
  • 登录地址非自动解析场景下登录失败
  • Node C++ addon 编译后无法执行异步回调
  • 网络重连成功后没有标记重连状态为 false 导致下次无法重连
  • 断线重连过程中登出无效

[8.4.0] - 2021-04-26

新增

  • 聊天室设置标签标志加入聊天室及按标签发送消息、查询成员详情及总数、禁言能力
  • 增加本地可读版本号上传至服务器能力
  • 删除会话时可以设置是否缓存会话数据,如未读计数等 C/C++

优化

  • 对 C++ 封装层目录结构及编译方式进行调整,详情请见 8.4.0 C++ 封装层接入指南
  • 透传高级通知事件 attach 字段到应用上层
  • 发送图片时若打开文件失败则尝试重新发送图片,最多重试 3 次,失败后上报错误码 kNIMLocalResMsgFileNotAccess 10403
  • 高可用组件稳定性提升
  • Windows 及 macOS SDK 功能对齐

修复

  • Windows XP 下无法正常加载 SDK 组件
  • 聊天室断线重连异常场景崩溃
  • 使用 Stick 相关接口置顶会话后查询会话列表返回状态不正确
  • 修复群组超过 99 条未读时数据统计不准确问题
  • Pin 消息解析 Json 异常崩溃
  • 修复 macOS AppDataDir 相对路径 Init 崩溃问题

[8.3.1] - 2021-03-22

优化

  • 提高SDK稳定性

  • 优化缺省lbs生成规则

修复

  • SDK初始化时对httpdns访问过于频繁的问题

[8.3.0] - 2021-03-03

新增

优化

  • 修改日志模块引起的句柄泄露

修复

  • 取消消息附件下载操作时可能引起的崩溃

  • 上传/下载文件没有进度回调的问题

  • 消息已读状态可能不准确的问题

  • 邀请已在群内成员(管理员/群主)再次进群后,群成员类型被覆盖为0的问题

  • 断线重连后消息丢失的问题

  • 删除会话最后一条消息后,会话列表中最后一条消息信息不准确的问题

  • nim::Client::Cleanup2可能假死的问题

[8.2.5] - 2021-02-03

优化

  • 完善域名高可用策略,提升服务稳定性

修复

  • db加密可能失效的问题

  • 非正常场景下卸载SDK模块引起的崩溃

[8.2.0] - 2020-12-30

新增

  • 查询会话列表,可指定最后一条会话消息要排除掉的类型(列表)c/c++

  • 删除最近联系人,同时指定是否删除漫游消息c/c++

  • 最近联系人项(多条)未读数清零c/c++

  • 发送群消息已读回执返回成功/失败/忽略列表c/c++

  • 查询给定的一组群ID详细信息c/c++

优化

  • IM断网及重连检测速度

修复

  • SDK异常退出导致的崩溃

[8.1.0] - 2020-11-13

新增

  • 调整IM、聊天室消息去重逻辑
  • NOS下载支持独立CDN域名配置
  • NOS下载域名加速支持多域名配置
  • 聊天室支持CDN消息
  • 聊天室新增匿名进入扩展接口,可传入私有化参数c/c++
  • 聊天室新增独立进入扩展接口,可传入私有化参数c/c++

修复

  • IM、聊天室SDK在windows ucrtbase版本号为"10.0.10240"时,初始化卡死的问题
  • 增加稳定性,排除可能产生的崩溃

[8.0.0] - 2020-09-28

新增

[7.8.1] - 2020-07-29

新增

[7.8.0] - 2020-07-21

新增

[7.7.2] - 2020-06-12

新增

修复

  • 获取黑名单不准确的问题

[7.7.1] - 2020-06-01

修复

  • 退出聊天室时导致应用程序卡死的问题

[7.6.1] - 2020-05-13

修复

  • 用户配置本地缓存加密情况下加密未生效的问题

[7.6.0] - 2020-05-13

新增

[7.5.0] - 2020-03-31

修复

  • 卸载http模块时可能引起的崩溃

[7.4.0] - 2020-03-10

新增

修复

  • 连接代理后,登录失败的问题
  • 查询会话列表时,返回结果中msg_sender字段缺失的问题

[7.3.0] - 2020-03-02

变更

  • SDK二制文件存放目录由原来的"bin" 改为"libs"

修复

  • 登录后马上断网,可能引起的崩溃
  • SDK初始化路径包含中文时,可能引起崩溃
  • 修改拼写错误

[7.2.0] - 2020-01-13

新增

优化

  • cpp_wrapper_util工程添加到解决方案,不再以编译好的lib库引入,开发者需要根据工程属性选择加载md/mt项目到解决方案

[7.1.0] - 2019-12-17

sdk升级6.6.6及以上版本引导

新增

[7.0.0] - 2019-11-13

sdk升级6.6.6及以上版本引导

新增

优化

[6.9.0] - 2019-09-19

sdk升级6.6.6及以上版本引导

新增

  • 超大群增加消息撤回功能

  • 超大群支持自定义系统通知

  • 超大群增加离线消息处理

  • 查询指定数量的最后会话数据

    c定义如下

      /** @fn void nim_session_query_all_recent_session_async(const char *json_extension, nim_session_query_recent_session_cb_func cb, const void *user_data)
      * 查询指定数量的最后会话数据
      * @param[in] limit		要返回的最大数量
      * @param[in] json_extension json扩展参数(备用,目前不需要)
      * @param[in] cb			查询会话列表的回调函数, nim_session_query_recent_session_cb_func回调函数定义见nim_session_def.h
      * @param[in] user_data	APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
      * @return void 无返回值
      */
      NIM_SDK_DLL_API void nim_session_query_last_few_session_async(int limit, const char *json_extension, nim_session_query_recent_session_cb_func cb, const void *user_data);
    

    c++定义如下

      /** @fn static void QueryAllRecentSessionAsync(const QuerySessionListCallabck& cb, const std::string& json_extension = "")
      * 查询指定数量的最后会话数据
      * @param[in] limit		要返回的最大数量
      * @param[in] cb			查询会话列表的回调函数
      * @param[in] json_extension json扩展参数(备用,目前不需要)
      * @return void 无返回值
      */
      static void QueryLastFewSessionAsync(int limit, const QuerySessionListCallabck& cb, const std::string& json_extension = "");
    
  • SDKConfig

    新增私有化是否启用HTTPS协议

      c
      static const char *kPrivateEnableHttps = "https_enabled"; /**< bool,(必填,私有化配置是否启用HTTPS协议,启用私有化配置时会覆盖 kNIMUseHttps,为true时kNIMDefaultNosUploadHost必填) */
      c++
      bool SDKConfig::private_enable_https_; /**< bool,(必填,私有化配置是否启用HTTPS协议,启用私有化配置时会覆盖 use_https_,为true时default_nos_upload_host_必填) */	
    

    在调用 Login 接口后无论成功是否上报历史错误日志到服务器

      c
      static const char *kUploadSDKEventsAfterLogin = "upload_sdk_events_after_login"; /**< bool,在调用 Login 接口后无论成功是否上报历史错误日志到服务器(目前支持 408、415、500)默认为 false */
      c++
      bool SDKConfig::upload_sdk_events_after_login_;  /**< bool,在调用 Login 接口后无论成功是否上报历史错误日志到服务器(目前支持 408、415、500)默认为 false */		
    

优化

  • IM SDK改用跨平台的方案实现,不再支持Windows XP及以下系统,目前只适配了win7/win10,后续版本中将会适配Mac、linux等系统(以更新说明为准),6.8.2版本 branch:6.8.x继续提供Windows xp (sp3+)支持,

[6.8.1] - 2019-08-14

修复

  • NOS:修复调用 StopDownloadResourceEx(nim_nos_stop_download_ex) 接口时无法停止使用 DownloadResourceEx(nim_nos_download_ex)发起的任务。

[6.7.0] - 2019-08-01

sdk升级6.6.6及以上版本引导

新增

  • 未接通的音视频通话消息统一计入未读数

    功能通过以下配置来开启或关闭

      bool GlobalConfig::vchat_miss_unread_count_;/**< bool,语音消息未接通消息是否计入未读数,默认false */
      static const char *kNIMVChatMissUnreadCount = "vchat_miss_unread_count";
    
  • 获取最近会话列表可选是否排除掉某类型消息

    c定义如下

      /** @fn void nim_session_query_all_recent_session_with_last_msg_excluded_type_async(const char *json_extension, nim_session_query_recent_session_cb_func cb, enum NIMMessageType last_msg_excluded_type,const void *user_data)
      * 查询会话列表,可指定最后一条会话消息要排除掉的类型
      * @param[in] json_extension json扩展参数(备用,目前不需要)
      * @param[in] cb	查询会话列表的回调函数, nim_session_query_recent_session_cb_func回调函数定义见nim_session_def.h
      * @param[in] last_msg_excluded_type 最后一条会话消息要排除掉的类型,如果不排除任何消息,参数请传入NIMMessageType::kNIMMessageTypeUnknown
      * @param[in] user_data	APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
      * @return void 无返回值
      */
      NIM_SDK_DLL_API void nim_session_query_all_recent_session_with_last_msg_excluded_type_async(const char *json_extension, nim_session_query_recent_session_cb_func cb, enum NIMMessageType last_msg_excluded_type,const void *user_data);
    

    c++定义如下

      /** @fn static void nim::Session::QueryAllRecentSessionAsync(NIMMessageType last_msg_excluded_type,const QuerySessionListCallabck& cb, const std::string& json_extension = "");
      * 查询会话列表,可指定最后一条会话消息要排除掉的类型
      * @param[in] last_msg_excluded_type 最后一条会话消息要排除掉的类型,如果不排除任何消息,参数请传入NIMMessageType::kNIMMessageTypeUnknown
      * @param[in] cb	查询会话列表的回调函数
      * @param[in] json_extension json扩展参数(备用,目前不需要)	
      * @return void 无返回值
      */
      static void nim::Session::QueryAllRecentSessionAsync(NIMMessageType last_msg_excluded_type,const QuerySessionListCallabck& cb, const std::string& json_extension = "");
    
  • 超大群新增 群移交群主、设置/取消管理员、禁言/解除禁言群成员等操作的通知消息 定义如下

      kNIMNotificationIdSuperTeamOwnerTransfer = 406,    /**< 超大群移交群主,{"id":"a1","uinfos":["uinfo1", "uinfo2"]}*/
      kNIMNotificationIdSuperTeamAddManager = 407,	/**< 超大群增加管理员,{"ids":["a1","a2"],"uinfos":["uinfo1", "uinfo2"]}*/
      kNIMNotificationIdSuperTeamRemoveManager = 408,    /**< 超大群删除管理员,{"ids":["a1","a2"],"uinfos":["uinfo1", "uinfo2"]}*/
      kNIMNotificationIdSuperTeamMuteMember = 409,	/**< 超大群禁言/解禁群成员,{"uinfos":["uinfo1", "uinfo2"],“tinfo”:tinfo,"id":"a1","mute":1-禁言,0-解禁}*/
    

优化

  • 修改本地反垃圾过滤逻辑,在不传入本地反垃圾词库名称时,对于替换规则会进行所有词库的匹配

[6.6.6] - 2019-07-16

新增

  • 根据时间段删除部分会话的历史消息接口

    • c 定义如下

      /** @typedef void (*nim_msglog_modify_res_cb_func)(int res_code, const char *json_extension, const void *user_data)
      * 消息历史操作结果的回调函数定义(只关心rescode)
      * @param[out] res_code		操作结果,成功200
      * @param[out] json_extension	json扩展数据(备用)
      * @param[out] user_data		APP的自定义用户数据,SDK只负责传回给回调函数,不做任何处理!
      * @return void 无返回值
      */
      typedef void (*nim_msglog_modify_res_cb_func)(int res_code, const char *json_extension, const void *user_data);
      
      /** @fn void nim_msglog_delete_msg_by_time_async(const char *account_id, enum NIMSessionType to_type, uint64_t from_time, uint64_t to_time, const char *json_extension, nim_msglog_res_cb_func cb, const void *user_data);
      * 根据时间区间删除指定会话指定类型的本地消息
      * @param[in] account_id	会话id,对方的account id或者群组tid
      * @param[in] to_type	    会话类型
      * @param[in] timestamp1	与 timestamp2 组成一个时间段,SDK 内部会判断大小调整入参顺序
      * @param[in] timestamp2	与 timestamp1 组成一个时间段,SDK 内部会判断大小调整入参顺序
      * @param[in] json_extension json扩展参数(备用,目前不需要)
      * @param[in] cb			操作结果的回调函数, nim_msglog_modify_res_cb_func回调函数定义见nim_msglog_def.h
      * @param[in] user_data	APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
      * @return void 无返回值
      * @note 错误码	200:成功
      *		0:失败
      */
      NIM_SDK_DLL_API void nim_msglog_delete_by_time_async(const char *account_id, enum NIMSessionType to_type, uint64_t timestamp1, uint64_t timestamp2, const char *json_extension, nim_msglog_modify_res_cb_func cb, const void *user_data);
      
    • c++定义如下

      typedef DBFunctionCallback DeleteMsgByTimeCallback;	/**< 根据时间段删除部分消息历史回调模板 */
      
      /** @fn static bool DeleteMsgByTimeAsync(const std::string& session_id, NIMSessionType to_type, uint64_t from_time, uint64_t to_time, const DeleteMsgByTimeCallback& cb, const std::string& json_extension = = "")
      * 根据时间段删除部分会话的历史消息
      * @param[in] session_id	要删除消息的会话ID
      * @param[in] to_type	要删除消息的会话类型
      * @param[in] timestamp1	与 timestamp2 组成一个时间段,SDK 内部会判断大小调整入参顺序
      * @param[in] timestamp2	与 timestamp1 组成一个时间段,SDK 内部会判断大小调整入参顺序
      * @param[in] json_extension json扩展参数(备用,目前不需要)
      * @param[in] cb			操作结果的回调函数
      * @return bool 检查参数如果不符合要求则返回失败
      * @note 错误码	200:成功
      				0:失败
      */
      static bool MsgLog::DeleteMsgByTimeAsync(const std::string& session_id, NIMSessionType to_type, uint64_t timestamp1, uint64_t timestamp2, const DeleteMsgByTimeCallback& cb, const std::string& json_extension = "");
      
  • 获取当前服务器时间戳

    • c定义如下

      /** @typedef void(*nim_client_get_server_current_time_cb_func)(int rescode, bool calc_local, uint64_t time,const char *json_params, const void *user_data)
      * 多端推送设置/同步回调
      * @param[out] rescode
      * @param[out] calc_local 是否为本地计算
      * @param[out] time 当前服务器时间(ms)
      * @param[out] user_data APP的自定义用户数据,SDK只负责传回给回调函数,不做任何处理!
      * @return void 无返回值
      */
      typedef void(*nim_client_get_server_current_time_cb_func)(int rescode, bool calc_local, uint64_t time, const void *user_data);
      
      /** @fn void nim_client_get_server_current_time(bool calc_local,nim_client_get_server_current_time_cb_func cb, const char *json_extension,const void *user_data)
      * 获取当前服务器时间
      * @param[in] calc_local 是否在本地计算,false:直接到服务端查询 ,true:根据上次查询到的服务端时间与本地系统启动时间来计算,不会到服务端查询 
      * @param[in] cb 操作结果的回调函数
      * @param[in] json_extension json扩展参数(备用,目前不需要)
      * @param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
      * @return void
      * @note 由于网络上/下行的原因,返回的时间会存在一定误差,
       当 calc_local == false 时,如果跟上次调用该方法的时间间隔小于2000ms,SDK会采用 calc_local == true 时的方案以减少服务端的压力,并会在回调中指明返回的时间是由本地计算的。
       如果返回 code != 200,同样会返回一个本地计算结果
      */
      NIM_SDK_DLL_API void nim_client_get_server_current_time(bool calc_local,nim_client_get_server_current_time_cb_func cb, const char *json_extension,const void *user_data);
      
    • c++定义如下

      typedef std::function<void(int, bool, uint64_t)> GetCurrentServerTimeCallback;	/**< 查询服务器当前时间回调模板 */
      
      /** @fn void GetServerCurrentTime(bool calc_local, const Client::GetCurrentServerTimeCallback& cb)
      * 获取当前服务器时间
      * @param[in] cb 操作结果的回调函数
      * @param[in] calc_local 是否在本地计算,false:直接到服务端查询 ,true:根据上次查询到的服务端时间与本地系统启动时间来计算,不会到服务端查询
      * @return void
      * @note 由于网络上/下行的原因,返回的时间会存在一定误差,
      * 当 calc_local == false 时,如果跟上次调用该方法的时间间隔小于2000ms,SDK会采用 calc_local == true 时的方案以减少服务端的压力,并会在回调中指明返回的时间是由本地计算的。
      * 如果返回 code != 200,同样会返回一个本地计算结果
      */
      static void nim::Client::GetServerCurrentTime(const Client::GetCurrentServerTimeCallback& cb, bool calc_local = false);
      

变更

[6.6.0] - 2019-06-25

新增

  • C接口新增在线查询消息接口nim_msglog_query_msg_online_async2,可以参数中传入需要查询的消息类型列表

修复

  • 创建高级群时,被邀请人收到两次邀请通知的问题

[6.5.5] - 2019-06-12

新增

  • 超大群功能,开通功能请联系商务,接口定义文件:C接口:nim_super_team.h CPP接口:nim_cpp_super_team.h

[6.5.0] - 2019-05-24

新增

  • 新增查询群成员邀请人的accid接口

变更

  • 再次进入经进入的聊天室时,进入聊天室结果由step2改为step5,rescode改为20002

修复

  • 同时(几乎)调用进入同一聊天室接口可能引起的崩溃

[6.4.0] - 2019-04-26

修复

  • 邀请群成员不需要被邀请人同意时,群内其他成员无法从"TeamEvent"拿到attach字段的问题

变更

  • Sdk升级到vs2017,对于不开启自动更新的windows系统,需要追加对应的运行时库。相关的运行时库见sdk包中的redist_packages文件夹。用户产品发布时将redist_packages下的库文件需放到执行目录下。

[6.3.0] - 2019-04-18

新增

  • 从服务器上清空P2P消息的历史和漫游记录接口
  • 针对撤回消息的操作是否减少未读数的功能开关
  • 删除好友同时可指定是否删除备注信息接口

[6.2.0] - 2019-03-14

新增

  • 话单消息(有通话时长)支持存云端历史消息、支持漫游
  • NOS资源支持安全链接(短链)功能

优化

  • 群成员同步完成后,无论是否有变化都会通知应用层

[6.1.1] - 2019-02-15

优化

  • 修复多次对SDK进行初始化/清理,可能引起SDK卡死的问题

[6.1.0] - 2019-01-22

新增

  • 导出本地消息记录到云端
  • 导入云端消息记录到本地
  • 邀请群成员添加输入attachment字段接口
  • 新增注销与退出SDK聚合接口

优化

  • 修改因没有初始化SDK调用SDK接口导致的崩溃的问题
  • 修改登录后立即退出,再次登录时可能会收到重复IM消息的问题

[6.0.0] - 2019-01-14

优化

  • 修改SDK 清理后再次初始化可能存在的崩溃
  • 调整C++封装层对VS2015及其以上版本的支持

[5.9.0] - 2018-11-28

新增

  • 可配置IM消息(图片、视频)的缩略图命名格式(以"{filename}"做为通配符)
  • 创建群聊时支持指定该群的群人数上限可配
  1. 创建群聊时支持指定该群的群人数上限(可选参数),默认为该app当前整体配置的群人数上限。
  2. 指定的群人数上限不可超过当前app配置的群人数上限,否则创建/修改失败,返回相关的错误码。
  3. 群人数达到上限时,无法添加新的成员入群,申请加群/同意进群的操作返回加群失败。
  4. SDK创建群时支持指定,不支持修改。修改通过服务端API来修改。
  • IM SDK 按session id获取 session data 接口

优化

  • 上传资源(图片、视频、语音、文件)生成的下载链接改为CDN域名
  • 增加SDK回调线程,以防止应用层阻塞SDK核心线程

[5.8.0] - 2018-11-13

优化

  • SDK 全部改为VS2013 update5版本编译,运行时库由VS2010改为VS2013

[5.7.0] - 2018-10-12

新增

  • 登录客户端描述新增自定义信息字段
  • 聊天室协议新增批量更新聊天室通用队列元素接口

优化

  • 文件上传支持快传,即上传重复的大文件上传将不不再需要重复传输,相关接口内部优化

[5.6.0] - 2018-08-30

新增

  • 新增独立的音视频通话代理接口(c接口:nim_rts_set_proxy),该接口和全局接口优先级一致,当和全局代理不同时可以独立调用修改音视频的代理。该接口只支持socks5。
  • 新增独立的音视频通话代理接口(c接口:nim_vchat_set_proxy),该接口和全局接口优先级一致,当和全局代理不同时可以独立调用修改音视频的代理。该接口只支持socks5。

[5.5.0] - 2018-08-07

新增

  • 文件上传增加“场景”信息

    使用5.5版本及其以上SDK(PC端、移动端、web端)实现的客户端(简称:5.5+ SDK),向使用PC5.4及其以下版本SDK实现的客户端(简称:PC 5.4- SDK),发送图片消息且客户端开启下载缩略图功能时(即:5.5+ SDK 向 PC 5.4- SDK(preload_attach_=true),发送图片消息),接收到的缩略图片可能是原图。建议升级SDK到5.5及其以上版本或者在UI层对缩略图做缩放处理。

  • 本地数据文件(*.db)备份功能

修复

  • Windows x64 下http库可能引起的崩溃

[5.3.0] - 2018-06-26

新增

  • 好友信息新增server_ex字段(客户端sdk只读,服务端api读写)

[5.1.0] - 2018-05-17

新增

  • 聊天室被踢后可以获取扩展通知内容
  • 服务器端批量踢人的客户端通知
  • 获取云端历史消息支持类型筛选
  • 聊天室增加批量消息上报接口

修复

  • 修复偶现初始化崩溃问题

[5.0.0] - 2018-03-29

新增

  • 客户端反垃圾功能
  • SDK提供缓存管理接口(查询、删除),nim_global.h
  • 群消息已读功能
  • 群组禁言功能

[4.8.0] - 2018-02-08

新增

  • 易盾的客户,可以配置某条消息是否要过反垃圾

修复

  • 修复移动端创建群,PC端同步到的群信息有误导致群无效需要重启的问题
  • 不能将群昵称置空的问题
  • 同一台电脑两个应用同时匿名登陆同一个聊天室后的异常表现
  • 偶现群成员获取不全的问题

[4.6.0] - 2018-01-04

新增

  • 群主或群管理员可以撤回其他群成员发送的消息的功能
  • 用户配置的对某单条消息另外的反垃圾的业务ID的功能
  • 视频消息主动获取封面功能
  • NOS域名迁移
  • NOS加速地址,上传、下载地址等统一配置
  • 聊天室历史记录拉取可以按类型筛选功能
  • 聊天室队列权限可配置
  • 聊天室更新用户信息后,断线重连进入聊天室时,相应信息依旧还在的功能

[4.4.0] - 2017-11-16

新增

  • 聊天室用户异常掉线或主动退出的时候自动清除队列, nim_chatroom.h
    • nim_chatroom_queue_offer_async(...), json_extension = "{"transient":true}" 设置此次更新的元素会在特定场景下被自动清除
    • 新增通知类 kNIMChatRoomNotificationIdQueueBatchChanged 用在麦序队列中有批量变更,发生在元素提交者离开聊天室或者从聊天室异常掉线时

修复

  • 修复获取最近会话列表时可能导致CPU增高的问题

[4.3.0] - 2017-10-13

新增

  • 群消息支持「只接收管理员消息提醒」的免打扰选项
  • 全员广播
  • 批量清空所有会话未读数的接口
  • 搜索历史记录支持多类型组合
  • 聊天室游客模式
  • 获取图片缩略图需要支持动图缩略图

修复

  • 修复群信息界面 普通成员无法修改群消息通知模式的bug

[4.2.0] - 2017-09-12

新增

  • 群通知消息是否计为未读数增加开关配置 nim_client.h
  • 聊天室支持机器人

修复

  • 修复某些场景下群成员同步bug

[4.1.0] - 2017-08-08

新增

  • 音视频MP4录制添加一个,录制全体声音的开关,允许在录制单个画面时录制通话的全体混音声音
  • 音视频声卡采集设备改为非限定,允许在非通话的时候开启(需要用户主动关闭)
  • 发送群自定义系统通知支持存离线
  • 普通成员可以操作聊天室队列
  • 新增多端登陆时对Mac端的支持

修复

  • 修复登录时有大量离线消息时导致的掉线等异常情况
  • 修复开启HTTPS后文件不会续传的问题
  • 修复NOS::StopUploadResourceEx不能停止非续传任务
  • 修复群成员入群后同步到本地的群成员列表存在无效成员的问题

[4.0.0] - 2017-07-06

新增

  • 机器人模块, nim_robot.h
  • 聊天室消息不存历史记录开关
  • 聊天室队列变更通知增加变更内容
  • 支持Https(默认Http)

修复

  • 修复管理后台创建群(不需要用户同意)时,在线客户端无法同步该群信息到本地的问题
  • 修复申请加入群(不需要管理员同意)时,本地群列表里没有该群信息的问题

[3.9.1] - 2017-06-29

修复

  • 修复已知问题

新增

  • 在点对点白板发起、点对点音视频发起、多人音视频创建接口中追加webrtc兼容模式的参数,用于和web的webrtc音视频互通,该WebRTC为beta版,如果没有 webrtc 客户端参与,不要打开该开关

[3.9.0] - 2017-06-23

修复

  • SDK优化了音视频相关的音频前处理功能,追加一个nrtc_audio_process.dll模块,并优化了音频编码

新增

  • 视频通话的发送分辨率等级添加一个960*540的分辨率
  • 音视频数据监听 nim_vchat_set_audio_data_cb_ex 接口添加一个伴音混音数据监听
  • 音视频状态监听回调中 nim_vchat_cb_func 添加一个回调类型 kNIMVideoChatSessionTypeLiveState 通知直播推流的服务器状态
  • 添加互动直播时主播可以选择自定义布局,多人join的时候主播追加一个参数kNIMVChatCustomLayout ,在NIMVChatVideoSplitMode设置为kNIMVChatSplitCustomLayout时生效

[3.8.0] - 2017-06-06

新增

  • 聊天室更新固定成员信息时,支持nick,avator和ext字段的持久化
  • 语音采集模块路径相关参数类型改为宽字符, nim_audio.h

[3.6.0] - 2017-04-27

新增

  • 音视频通话时可以录制其他成员的MP4文件,在原先的MP4发起和结束接口中json支持扩展的kNIMVChatUid,如果是本人和之前一样不填
  • 音视频数据监听追加 nim_vchat_set_audio_data_cb_ex 接口用于监听伴音数据
  • 音视频原先的动态推流接口nim_vchat_set_streaming_mode废弃,用户如果要互通推流需要在发起时确定
  • 音视频追加发送画面裁剪接口nim_vchat_set_video_frame_scale
  • 增加事件订阅相关接口

修复

  • 修复无法修改好友备注的bug
  • 优化弱网环境下的链接稳定性
  • 修复聊天室异常登陆状态下发送消息ack通知信息不全的问题

[3.5.0] - 2017-03-15

新增

  • 音视频通话时可以录制aac的混音音频文件(自己和对方所有人的混音),同时通过音视频状态回调接口返回录制状态
  • 音视频通话和白板通话邀请时追加一个keepcalling的功能,默认打开
  • 聊天室历史消息拉取接口现在支持正反向一起拉,nim_chatroom_get_msg_history_online_async第二个参数增加条件配置, nim_chatroom_def.h #分获取历史消息条件Keys
  • 新增代理测试接口, nim_global.h

修复

  • 优化麦克风和摄像头的设备遍历接口,防止错误的设备导致接口调用崩溃
  • 修复音视频网络探测接口调用失败后导致的cpu高占用率的问题
  • 优化白板数据接口在高频率调用时的崩溃问题
  • 优化麦克风自动调节功能,会较明显的提升麦克风音量过小的问题
  • 修复HTTP模块发送大文件容易超时的问题
  • 优化本地数据持久化方案
  • 修复近期反馈的崩溃问题

[3.4.0] - 2017-01-20

新增

  • 在接口client init(sdk 初始化)中,追加一个必填的参数app key,如果用户不填,会导致音视频模块初始化失败
  • 添加音视频模块网络探测功能,网络探测会返回探测结果,针对结果可以参考开发手册计算出当前的网络情况
  • 点对点白板通话中,白板数据和音频数据的服务器录制开关分离
  • 追加互动直播的服务器录制开关
  • C接口支持隐式调用
  • 进入聊天室增加账号禁用通知(422)

修复

  • 解决伴音采集导致异常崩溃的问题
  • 修复x64下,打开扬声器导致的崩溃问题
  • 优化弱网下的SDK的提示,增加本地网络错误的错误号10010
  • 修复发送文件过程中,文件大小有变化导致的接收端无法正常接收文件的问题

[3.3.0] - 2016-12-28

新增

  • SDK 追加文档转换模块,文档上传和下载复用nos模块功能
  • SDK 音视频设备中支持修改音频采集时是否开启降噪、人言检查、消回音功能
  • SDK 音视频通话支持高清语音模式,3.3.0 之前的版本无法加入已经开启高清语音的多人会议
  • SDK 初始化是增加配置登录最大重试次数, nim_client_def.h
  • SDK IM/聊天室/音视频(C#)提供64位编译版本,伴音功能暂不提供64位版本。
  • nim_nos.h HTTP上传下载扩展接口增加支持断点续传和暂停功能 nim_nos_def.h
  • HTTP下载扩展接口增加“另存为”指定到自定义路径 nim_nos_def.h
  • HTTP上传下载扩展接口增加超时时间的自定义设置入口, nim_nos_def.h
  • nim_nos.h 增加监听上传任务结果回调全局广播的全局注册接口,开发者可以通过监听获取多媒体消息的下载地址。
  • 聊天室“进入聊天室”的聊天室通知增加三个内容:该进入成员是否被禁言,该进入成员是否被临时禁言,该进入成员临时禁言还剩时长, nim_chatroom_def.h

修复

  • 优化 注销退出流程
  • 修复 退出后cleanup可能会卡住调用线程的问题

[3.2.5] - 2016-12-19

新增

  • SDK IM/聊天室/音视频支持64位,伴音功能暂时不提供64位版本。
  • SDK 内容调整,增加nim_audio.dll、nim_tools_http.dll对应的c/c++接口的描述文件和相关定义的头文件,文件夹nim_tools_c_sdk、 文件夹nim_tools_cpp_sdk。
  • 调整CPP接口命名:DeleteStatusByTypeAsync(...)调整为DeleteByTypeAsync(...),nim_cpp_sysmsg.h。
  • C/CPP 接口注释增加错误码备注。

[3.2.0] - 2016-11-30

修复

  • 优化音频处理流程
  • 优化高清摄像头数据解析,提高高清摄像头采集帧率
  • 变更逻辑:关闭麦克风将不认为是静音状态,与伴音功能兼容
  • 服务器白板录制,针对3.2之后的版本,在每条数据前追加4字节长度信息和4字节的时间戳,详情看开发手册
  • 优化IM和聊天室登录流程

新增

  • 新增多人白板功能,通过nim_rts_create_conf创建多人白板,再由nim_rts_join_conf接口加入多人白板。多人白板不支持视频通道,如果需要上层APP可以另外开启多人音视频通话。
  • 白板的创建及加入等接口将返回白板通道的channelid,用于和服务器的白板会话抄送对应。
  • 新增设备类型 kNIMDeviceTypeAudioHook,用户可采集播放器音频,需要使用sdk新增的nim_audio_hook.dll
  • 设备监听中可以监听伴音设备,kNIMDeviceTypeAudioHook开始工作和被顶替(顶替是指伴音只允许有一个,如果有别的进程也使用了sdk中的伴音功能,则会被顶替,这时之前的伴音失效),将会通过回调上报。
  • 会话消息已读未读状态多端同步
  • 会话属性增加设置置顶和扩展数据字段接口, nim_session.h
  • IM和聊天室增加获取当前登陆状态的接口, nim_client.h nim_chatroom.h

[3.1.0] - 2016-10-26

修复

  • 修复撤回消息成功后重登会再次受到通知的问题
  • 调整CPP接口CreateRoomMessage(...)(nim_chatroom_cpp.h),增加结构体ChatRoomMessageSetting(nim_chatroom_helper.h)
  • 修改CPP封装层结构体定义TeamInfo,TeamMemberProperty,nim_team_helper.h

新增

  • 群组、聊天室增加全员禁言状态,nim_team_def.h, nim_chatroom_def.h
  • 获取群组被禁言成员列表,nim_team.h
  • 撤回消息通知增加所撤回的消息的消息时间戳,nim_talk_def.h
  • 发送P2P消息,群组消息,聊天室消息增加反垃圾字段,nim_talk_def.h, nim_chatroom_def.h
  • 增加查询好友关系同步接口,nim_friend.h

[3.0.0] - 2016-10-20

修复

  • 优化登录流程。
  • 登录后离线消息、同步消息的会话更新通知广播不再每条上报,改为最后一条上报。
  • 批量获取消息接口的结果增加kNIMMsglogQueryKeySource,区分来源(本地或者云端),nim_msglog_def.h。
  • 登录回调通知里增加kNIMRetrying,说明当前登录结果后SDK是否还在自动尝试登陆(针对此次登录失败时),nim_client_def.h。
  • 修改群成员属性kNIMTeamUserKeyBits的注释说明,nim_team_def.h。
  • 调整CPP接口CreateCustomNotificationMsg(...)(nim_cpp_sysmsg.h),增加结构体SysMessageSetting(nim_sysmsg_helper.h)。

新增

  • 支持实时修改音视频通话的视频发送帧率上限
  • 支持实时的音视频通话音频音量回调
  • 实现实时修改推流的开始和结束。在发起直播时原先的连麦参数"bypass_rtmp"变成推流开关,主播如果要直接开始推流需要填此参数
  • 变更:加入房间时,主播如果要直接开始推流需要填写kNRTCChatBypassRtmp

[2.9.0] - 2016-09-19

修复

  • 白板通话(不含音视频)的挂断失败问题修复
  • 优化消息附件(图片、语音和文件等)的下载
  • 优化对高清摄像头的支持
  • 优化视频编解码策略
  • 优化音视频通话中本地MP4录制时声音图像不同步的问题

新增

  • 初始化SDK接口新增两个配置项,设置接收图片消息后预下载图片的质量:kPreloadImageQuality, kPreloadImageResize。 nim_client_def.h
  • 音视频通话,全局状态回调添加kNIMVideoChatSessionTypeInfoNotify类型,返回实时的音视频数据状态

[2.8.0] - 2016-08-30

修复

  • V2.7.0版本下载文件暂停继续下载的问题。
  • 聊天室接口注册发送消息回执回调接口命名修改:nim_chatroom_reg_send_msg_arc_cb接口变更为nim_chatroom_reg_send_msg_ack_cb。 nim_chatroom.h
  • 消息历史插入本地DB一条消息的接口命名和参数调整:typedef void(*nim_msglog_write_db_only_async)(const char *account_id, NIMSessionType to_type, const char *msg_id, const char *json_msg, const char *json_extension, nim_msglog_res_cb_func cb, const void *user_data); 调整为 typedef void(*nim_msglog_insert_msglog_async)(const char *talk_id, const char *json_msg, bool need_update_session, const char *json_extension, nim_msglog_res_cb_func cb, const void *user_data); 。 nim_msglog.h
  • 合并错误码:10414和10450统一为10414,新增错误码kNIMLocalResMsgNosDownloadCheckError。nim_res_code_def.h
  • 群成员收到退群通知后群成员数据不从本地删除,通过标记位标记为无效,具体调用方法请参考api文档或开发文档。
  • 修复某种情况下session change通知时session id为空的问题。

新增

  • 撤回消息。 nim_talk.h

[2.7.0] - 2016-08-11

修复

  • 优化登录后同步群成员列表。
  • 优化 SDK 在登
此文档是否对你有帮助?
有帮助
我要吐槽
  • 近期重要更新
  • [9.12.2] - 2023-08-17
  • [9.12.1] - 2023-08-01
  • 修复
  • [9.12.0] - 2023-07-07
  • 新增特性
  • 优化
  • API 变更
  • [9.11.0] - 2023-05-30
  • 新增特性
  • 优化
  • 修复
  • API 变更
  • [9.10.0] - 2023-04-11
  • 优化
  • 问题修复
  • [9.9.2] - 2023-03-09
  • 新增特性
  • API 变更
  • API 新增
  • 数据结构变更
  • 问题修复
  • [9.9.0] - 2023-02-09
  • 新增特性
  • API 新增
  • 优化
  • [9.8.0] - 2022-12-27
  • 新增特性
  • API 变更
  • API 新增
  • API 变更
  • [9.7.0] - 2022-12-2
  • 新增特性
  • API 新增
  • 优化
  • [9.6.3] - 2022-10-27
  • 新增特性
  • API 新增
  • 修复
  • [9.6.0] - 2022-9-26
  • 新增特性
  • API 变更
  • 优化改进
  • [9.5.2] - 2022-9-7
  • [9.5.1] - 2022-8-31
  • [9.5.0] - 2022-8-29
  • 新增特性
  • 优化改进
  • 新增 API
  • [9.4.0] - 2022-8-8
  • 新增特性
  • API 变更
  • 新增 API
  • 变更 API
  • [9.3.0] - 2022-7-25
  • 新增特性
  • 优化改进
  • API 变更
  • 新增 API
  • 变更 API
  • [9.2.8] - 2022-7-1
  • [9.2.5] - 2022-6-13
  • [9.2.1] - 2022-5-25
  • [9.2.0] - 2022-5-24
  • 新增特性
  • API 新增与变更
  • 新增 API
  • 变更 API
  • [9.1.0] - 2022-4-11
  • 新增
  • [9.0.0] - 2022-3-14
  • 新增
  • 修复
  • 8.11.0 - 2022-01-10
  • 新增
  • 8.10.0 - 2021-12-23
  • 修复
  • 新增
  • 8.9.0 - 2021-12-03
  • 修复
  • 新增
  • 8.8.0 - 2021-11-04
  • 修复
  • 新增
  • [8.7.2] - 2021-09-28
  • 新增
  • 修复
  • [8.7.0] - 2021-08-25
  • 新增
  • 修复
  • [8.6.2] - 2021-08-06
  • 修复
  • [8.5.0] - 2021-06-17
  • 新增
  • 修复
  • [8.4.0] - 2021-04-26
  • 新增
  • 优化
  • 修复
  • [8.3.1] - 2021-03-22
  • 优化
  • 修复
  • [8.3.0] - 2021-03-03
  • 新增
  • 优化
  • 修复
  • [8.2.5] - 2021-02-03
  • 优化
  • 修复
  • [8.2.0] - 2020-12-30
  • 新增
  • 优化
  • 修复
  • [8.1.0] - 2020-11-13
  • 新增
  • 修复
  • [8.0.0] - 2020-09-28
  • 新增
  • [7.8.1] - 2020-07-29
  • 新增
  • [7.8.0] - 2020-07-21
  • 新增
  • [7.7.2] - 2020-06-12
  • 新增
  • 修复
  • [7.7.1] - 2020-06-01
  • 修复
  • [7.6.1] - 2020-05-13
  • 修复
  • [7.6.0] - 2020-05-13
  • 新增
  • [7.5.0] - 2020-03-31
  • 修复
  • [7.4.0] - 2020-03-10
  • 新增
  • 修复
  • [7.3.0] - 2020-03-02
  • 变更
  • 修复
  • [7.2.0] - 2020-01-13
  • 新增
  • 优化
  • [7.1.0] - 2019-12-17
  • 新增
  • [7.0.0] - 2019-11-13
  • 新增
  • 优化
  • [6.9.0] - 2019-09-19
  • 新增
  • 优化
  • [6.8.1] - 2019-08-14
  • 修复
  • [6.7.0] - 2019-08-01
  • 新增
  • 优化
  • [6.6.6] - 2019-07-16
  • 新增
  • 变更
  • [6.6.0] - 2019-06-25
  • 新增
  • 修复
  • [6.5.5] - 2019-06-12
  • 新增
  • [6.5.0] - 2019-05-24
  • 新增
  • 变更
  • 修复
  • [6.4.0] - 2019-04-26
  • 修复
  • 变更
  • [6.3.0] - 2019-04-18
  • 新增
  • [6.2.0] - 2019-03-14
  • 新增
  • 优化
  • [6.1.1] - 2019-02-15
  • 优化
  • [6.1.0] - 2019-01-22
  • 新增
  • 优化
  • [6.0.0] - 2019-01-14
  • 优化
  • [5.9.0] - 2018-11-28
  • 新增
  • 优化
  • [5.8.0] - 2018-11-13
  • 优化
  • [5.7.0] - 2018-10-12
  • 新增
  • 优化
  • [5.6.0] - 2018-08-30
  • 新增
  • [5.5.0] - 2018-08-07
  • 新增
  • 修复
  • [5.3.0] - 2018-06-26
  • 新增
  • [5.1.0] - 2018-05-17
  • 新增
  • 修复
  • [5.0.0] - 2018-03-29
  • 新增
  • [4.8.0] - 2018-02-08
  • 新增
  • 修复
  • [4.6.0] - 2018-01-04
  • 新增
  • [4.4.0] - 2017-11-16
  • 新增
  • 修复
  • [4.3.0] - 2017-10-13
  • 新增
  • 修复
  • [4.2.0] - 2017-09-12
  • 新增
  • 修复
  • [4.1.0] - 2017-08-08
  • 新增
  • 修复
  • [4.0.0] - 2017-07-06
  • 新增
  • 修复
  • [3.9.1] - 2017-06-29
  • 修复
  • 新增
  • [3.9.0] - 2017-06-23
  • 修复
  • 新增
  • [3.8.0] - 2017-06-06
  • 新增
  • [3.6.0] - 2017-04-27
  • 新增
  • 修复
  • [3.5.0] - 2017-03-15
  • 新增
  • 修复
  • [3.4.0] - 2017-01-20
  • 新增
  • 修复
  • [3.3.0] - 2016-12-28
  • 新增
  • 修复
  • [3.2.5] - 2016-12-19
  • 新增
  • [3.2.0] - 2016-11-30
  • 修复
  • 新增
  • [3.1.0] - 2016-10-26
  • 修复
  • 新增
  • [3.0.0] - 2016-10-20
  • 修复
  • 新增
  • [2.9.0] - 2016-09-19
  • 修复
  • 新增
  • [2.8.0] - 2016-08-30
  • 修复
  • 新增
  • [2.7.0] - 2016-08-11
  • 修复