iOS SDK API

更新时间: 2024/03/19 10:33:34

本文介绍 iOS SDK API 的概述性信息,并列出核心 API 与核心类或接口类,方便您查阅 API 信息。

SDK API 概述

点击查看 API 概述

调用方式

IM 所有业务均通过 NIMSDK 单例进行调用。虽然所有的云信接口都是线程安全的,但为了防范于未然,推荐您只在主线程调用相应接口。

@interface NIMSDK : NSObject
/**
 *  获取SDK实例
 *  @return NIMSDK实例
 */
+ (instancetype)sharedSDK;
@end

以获取聊天管理类为例:

id<NIMChatManager> chatManager = [[NIMSDK sharedSDK] chatManager];

通知方式

IM iOS SDK 通过以下两种方式通知上层 API 调用结果。两种方式都只在主线程触发。

  • 回调(callback),一般回调接口直接反映在对应接口的 completion 参数上,调用时设置即可。
  • 委托(delegate),委托则需要开发者在合适的时机,在对应管理类上进行添加和移除:一般推荐在相应 ViewController 或管理类初始化进行委托注册,在其销毁时进行移除。

例如,开发者需要在会话页上监听消息的发送结果。

@implementation MySessionViewController
- (void)dealloc
{
  ...
    [[NIMSDK sharedSDK].chatManager removeDelegate:self];
  ...
}
- (void)viewDidLoad 
{
  ...
    [[NIMSDK sharedSDK].chatManager addDelegate:self];
  ...
}
#pragma mark - NIMChatManagerDelegate
- (void)sendMessage:(NIMMessage *)message didCompleteWithError:(NSError *)error
{
    //发送结果
}

所有调用错误都会以 NSError 的形式暴露。针对不同场景,我们将错误进行分类,主要分为以下两种错误域和对应错误码:

错误域 错误码 说明
NIMLocalErrorDomain NIMLocalErrorCode 本地操作出错导致
NIMRemoteErrorDomain NIMRemoteErrorCode 与服务器交互出错导致

在开发过程中遇到错误情况,可以对照错误域和错误码进行排查,具体定义可以参考 NIMGlobalDefs.h。您也可以通过 NSErroruserInfo 对应的错误描述信息定位问题。

SDK API 参考

  • 客户端 API 参考(iOS):NIM SDK-iOS

    如需查看圈组 API 参考,请在进入上述链接后搜索“QChat”。

  • NIMQChatMediaKit API 参考(iOS):NIMQChatMediaKit-iOS

    NIMQChatMediaKit 是实现圈组实时互动频道的必要插件,引入 NIMQChatMediaKit 才能实现圈组的实时互动频道相关功能。

SDK 核心 API

以下仅列出 SDK 的部分核心 API,如需查阅其他 SDK API 信息,请参考上述 API 参考。

初始化 & 登录

API说明
registerWithOption: 初始化 SDK
sdkVersion 获取 SDK 版本号
sharedSDK 获取 SDK 实例
appKey 获取 AppKey
updateApnsToken: 更新 APNS Token若需要设置自定义推送文案,请使用 updateApnsToken:customContentKey:updateApnsToken:customContentKey:qchatCustomContentKey:(含圈组自定义推送文案)
updatePushKitToken: 更新 PushKit Token目前仅支持 PKPushTypeVoIP
qchatWithOption: 设置圈组选项,用于设置圈组推送证书
sharedConfig 获取配置项实例NIMSDKConfig 是一个单例,用于多样的初始化配置,包括设置缩略动图等,推荐在调用初始化接口前配置
login:token:completion: 手动登录若需要选择鉴权方式进行登录,请使用 login:token:authType:loginExt:completion:
autoLogin:token: 自动登录
logout: 登出
kickOtherClient:completion: 踢人
currentAccount 获取当前登录账号
currentAuthMode 获取当前的 SDK 鉴权模式
currentLoginClients 获取当前登录的设备列表

消息(单聊 & 群聊 & 聊天室)

API说明
sendMessage:toSession:completion: 发送消息
cancelSendingMessage: 取消正在发送的消息
resendMessage:error: 重新发送消息
forwardMessage:toSession:error: 转发消息
makeForwardMessageFromMessage:error: 生成转发消息,得到转发消息后,开发者需要再调用sendForwardMessage:toSession:error: 进行发送
sendMessageReceipt:completion: 发送单聊消息已读回执
sendTeamMessageReceipts:completion: 发送群聊消息已读回执
refreshTeamMessageReceipts: 刷新群组消息已读、未读数量
queryMessageReceiptDetail:completion: 查询群组消息回执情况
queryMessageReceiptDetail:accountSet:completion: 查询群组消息指定用户的回执详情
localMessageReceiptDetail: 从本地数据库查询单条群组消息已读、未读账号列表
revokeMessage:option:completion: 撤回消息,撤回时可设置推送内容,否计入未读数等
fetchMessageAttachment:error: 收取消息附件
cancelFetchingMessageAttachment: 取消收取消息附件
messageInTransport: 消息是否正在传输 (发送/接受附件)
messageTransportProgress: 传输消息的进度 (发送/接受附件)

消息扩展

API说明
reply:to:completion: 引用一条消息进行回复,形成消息回复树状结构(Thread)
subMessages: 本地获取 Thread Talk 的消息列表
subMessagesCount: 本地获取 Thread Talk 的消息数量
fetchSubMessages:option:completion: 获取指定消息的 Thread Talk 子消息
fetchHistoryMessages:syncToDB:completion: 根据 MessageId 等获取历史消息
addQuickComment:toMessage:completion: 添加快捷评论,如表情等 reaction
deleteQuickComment:completion: 从服务端删除快捷评论
fetchQuickComments:completion: 批量获取快捷评论列表
quickCommentsByMessage:completion: 根据消息本地获取对应的快捷评论
addCollect:completion: 将某条消息添加为收藏
removeCollect:completion: 批量移除收藏
updateCollect:completion: 更新收藏的扩展信息
queryCollect:completion: 分页查询收藏列表
addStickTopSession:completion: 添加一条置顶记录
removeStickTopSession:completion: 删除一条置顶记录
udpateStickTopSession:completion: 更新一条置顶记录的扩展信息
loadStickTopSessionInfos: 查询所有的置顶记录
loadRecentSessionsWithOptions:completion: 按照置顶会话获取最近会话列表
sortRecentSessions:withStickTopInfos: 根据置顶信息排序最近会话
stickTopInfoForSession: 查询某个会话的置顶信息
addMessagePin:completion: PIN 一条消息,即添加一条 PIN 记录
removeMessagePin:completion: 删除一条消息的 PIN 记录
updateMessagePin:completion: 更新一条消息的 PIN 记录的扩展信息
loadMessagePinsForSession:completion: 查询所有的 PIN 记录(登录后首次查询该会话会触发一次网络同步)
pinItemForMessage: 查询某条消息的 PIN 记录

会话列表

API说明
deleteMessage:option: 删除某条消息
deleteAllmessagesInSession:option: 删除某个会话的所有消息
deleteAllMessages: 删除所有会话消息
deleteServerSessions:completion: 删除服务端所有会话消息
deleteMessagesInSession:option:completion: 删除指定范围内的消息,如指定时间范围
deleteRecentSession:option:completion: 删除某个最近会话
addEmptyRecentSessionBySession:option: 增加某个最近会话
markAllMessagesRead 设置所有会话消息为已读
markAllMessagesReadInSession:completion: 设置一个会话里所有消息为已读
batchMarkMessagesReadInSessions:completion: 批量设置多个会话消息已读
updateMessage:forSession:completion: 更新本地已存的消息记录
saveMessage:forSession:completion: 保存会话消息
importRecentSessions:completion: 导入最近会话
getMessagesDynamically:completion: 动态查询历史消息
messagesInSession:messageIds: 根据消息 ID 查询消息
allUnreadCount: 获取所有的最近会话未读数
allUnreadMessagesInSession:completion: 获取所有的未读会话消息
fetchServerSessions:completion: 从服务端分页获取历史会话列表
fetchServerSessionBySession:completion: 从服务端根据当前 session 获取会话信息
updateRecentLocalExt:recentSession: 更新最近会话的本地扩展
fetchMessageHistory:option:result: 从服务器上获取一个会话里某条消息之前的若干条的消息
retrieveServerMessages:option:result: 根据关键字从服务器上检索消息
searchMessages:option:result: 搜索本地会话内消息
exportMeessageInfosWithDelegate:progress:completion: 导出历史消息到本地文件
importMessageInfosAtPath:delegate:progress:completion: 导入历史消息
importMessageInfosAtPath:delegate:progress:completion: 导入历史消息

APNs 离线推送

API说明
currentMultiportConfig 获取当前多端推送策略配置
updateApnsMultiportConfig:completion: 设置推送自定义多端推送策略配置
currentSetting 获取当前的推送免打扰设置
updateApnsSetting:completion: 更新推送免打扰设置

群组

API说明
createTeam:users:completion: 创建群组
addUsers:toTeam:postscript:attach:completion: 邀请用户入群
kickUsers:fromTeam:completion: 从群组中移除成员,只有群主和管理员有此权限
dismissTeam:completion: 解散群组,只有群主有权限
quitTeam:completion: 退出群组
allMyTeams 获取我的所有群组
updateTeamInfos:teamId:completion: 修改群组信息,可一次性修改群组的多个属性,如名称,公告等,传入的数据键值对是 {@(NIMTeamUpdateTag) : NSString},无效数据将被过滤同时 SDK 支持修改单个群组属性的接口,如只修改群组名称:updateTeamName:teamId:completion:
更多群组属性修改的接口请参见NIMTeamManager
updateTInfosLocal: 更新群组的本地信息
updateUserNick:newNick:inTeam:completion: 修改群成员昵称,只有群主才有此权限
updateMyCustomInfo:inTeam:completion: 修改群组中自己的扩展字段
fetchTeamInfo:completion: 查询单个群组信息
fetchTeamsWithTimestamp:completion: 查询所有的群组信息
teamById: 根据群 ID 查询具体的单个群信息
fetchTeamInfoList:completion: 根据群 ID 查询具体的群列表信息,最多10个
searchTeamWithOption:completion: 根据关键字等选项搜索群组
applyToTeam:message:completion: 申请加入群组
passApplyToTeam:userId:completion: 同意入群申请
rejectApplyToTeam:userId:rejectReason:completion: 拒绝入群申请
addManagersToTeam:users:completion: 添加管理员,仅群主有此权限
removeManagersFromTeam:users:completion: 移除管理员,仅群主有此权限
transferManagerWithTeam:newOwnerId:isLeave:completion: 转让群组,只有群主有此权限
acceptInviteWithTeam:invitorId:completion: 接受别人的入群邀请
rejectInviteWithTeam:invitorId:rejectReason:completion: 拒绝别人的入群邀请
teamMember:inTeam: 获取指定的单个群成员信息
fetchTeamMembers:completion: 获取群成员列表
fetchTeamMembersFromServer:completion:searchTeam 从服务器上查询群组成员
updateMuteState:userId:inTeam:completion: 禁言/解除禁言某个群成员
updateMuteState:inTeam:completion: 对整个群禁言或解除禁言,对普通成员生效,只有群主有此权限
fetchTeamMutedMembers:completion: 查询被禁言群成员列表
fetchInviterAccids:withTargetMembers:completion: 查询群成员邀请人账号
updateNotifyState:inTeam:completion: 修改群通知状态
notifyStateForNewMsg: 获取群通知状态

超大群

API说明
addUsers:toTeam:postscript:attach:completion: 邀请用户加入超大群
kickUsers:fromTeam:completion: 从超大群中移除成员,只有群主和管理员有此权限
quitTeam:completion: 退出超大群
allMyTeams 获取我的所有超大群
updateTeamInfos:teamId:completion: 修改超大群信息,可一次性修改超大群的多个属性,如名称,公告等,传入的数据键值对是 {@(NIMTeamUpdateTag) : NSString},无效数据将被过滤同时 SDK 支持修改单个超大群属性的接口,如只修改超大群名称:updateTeamName:teamId:completion:
更多超大群属性修改的接口请参见NIMSuperTeamManagerr
updateUserNick:newNick:inTeam:completion: 修改群成员昵称,只有群主才有此权限
updateMyCustomInfo:inTeam:completion: 修改超大群中自己的扩展字段
fetchTeamInfo:completion: 查询单个超大群信息
teamById: 根据群 ID 查询具体的单个超大群信息
applyToTeam:message:completion: 申请加入超大群
passApplyToTeam:userId:completion: 同意加入超大群的申请
rejectApplyToTeam:userId:rejectReason:completion: 拒绝加入超大群的申请
addManagersToTeam:users:completion: 添加超大群管理员,仅群主有此权限
removeManagersFromTeam:users:completion: 移除超大群管理员,仅群主有此权限
transferManagerWithTeam:newOwnerId:isLeave:completion: 转让超大群,只有群主有此权限
acceptInviteWithTeam:invitorId:completion: 接受别人的加入超大群的邀请
rejectInviteWithTeam:invitorId:rejectReason:completion: 拒绝别人的加入超大群的邀请
teamMember:inTeam: 获取指定的单个群成员信息
fetchTeamMembers:completion: 获取超大群成员列表
updateMuteState:userIds:inTeam:completion: 禁言/解除禁言某个群成员
updateMuteState:inTeam:completion: 对整个超大群禁言或解除禁言,对普通成员生效,只有群主有此权限
fetchTeamMutedMembers:completion: 查询被禁言群成员列表
updateNotifyState:inTeam:completion: 修改超大群通知状态
notifyStateForNewMsg: 获取超大群通知状态

聊天室

API说明
enterChatroom:completion: 进入聊天室
exitChatroom:completion: 退出聊天室
chatroomAuthMode: 聊天室登录模式
updateLocation:completion: 更新坐标
fetchMessageHistory:option:result: 查询服务器保存的聊天室消息记录
getMessagesByTags:completion: 按标签从云端拉取聊天室消息,每一个标签代表的是某个标签化分组下的聊天室成员
kickMember:completion: 将特定成员踢出聊天室
fetchChatroomInfo:completion: 获取聊天室信息
fetchChatroomMembers:completion: 获取聊天室成员信息
fetchChatroomMembersByIds:completion: 根据用户的 IM 账号(accid)获取聊天室成员信息
fetchChatroomMembersByTag:completion: 根据标签获取聊天室内该标签下的成员
queryChatroomMembersCountByTag:completion: 根据标签查询聊天室内该标签下的在线成员数量
updateTags:completion: 更新标签
updateMemberBlack:completion: 将用户添加或移出聊天室黑名单
updateMemberMute:completion: 将用户添加到禁言名单或取消禁言
updateMemberTempMute:duration:completion: 设置聊天室成员临时禁言
markNormalMember:completion: 将用户设为聊天室普通成员
markMemberManager:completion: 将用户设为聊天室管理员
tempMuteTag:completion: 针对标签更新聊天室临时禁言状态
updateMyChatroomMemberInfo:completion: 更新本人在聊天室内的信息
updateChatroomInfo:completion: 更新聊天室信息
updateChatroomQueueObject:completion: 加入或者更新聊天室队列的元素。聊天室队列指聊天室(房间)中由多个元素(key-value 键值对)构成的队列,应用于直播间中的连麦队列场景和礼物队列展示等涉及队列化展示的场景,其中的元素可以是麦位、礼物展示位等
batchUpdateChatroomQueueObject:completion: 批量更新聊天室队列的元素
dropChatroomQueue:completion: 删除聊天室队列
fetchChatroomQueue:completion: 获取聊天室队列
removeChatroomQueueObject:completion: 移除聊天室队列元素

圈组

圈组的 SDK API 数量较多,请前往下文的圈组核心类/接口类查阅圈组的 SDK API。

用户信息 & 用户关系

API说明
fetchUserInfos:completion: 从服务器批量获取用户资料
userInfo: 获取本地数据库中所有用户资料
updateMyUserInfo:completion: 更新本人的用户资料
searchUserWithOption:completion: 搜索用户
requestFriend:completion: 添加好友
deleteFriend:removeAlias:completion: 删除好友
myFriends 获取我的所有好友账号
addToBlackList:completion: 将用户添加至黑名单
removeFromBlackBlackList:completion: 将用户从黑名单中移除
updateNotifyState:forUser:completion: 设置消息提醒
myBlackList 获取我的黑名单中用户列表
updateUser:completion: 修改自己与目标用户的关系

系统通知

API说明
sendCustomNotification:toSession:completion: 发送自定义系统通知
fetchSystemNotifications:limit:filter: 获取本地存储的系统通知
allUnreadCount: 获取系统通知未读数
deleteNotification: 删除单条系统通知
deleteAllNotifications 删除所有系统通知
deleteAllNotifications: 根据通知类型删除系统通知
markNotificationsAsRead: 标记单条系统通知已读
markAllNotificationsAsRead 标记所有系统通知已读
markAllNotificationsAsRead: 根据通知类型标记系统通知已读

事件订阅

API说明
publishEvent:completion: 发布事件
subscribeEvent:completion: 订阅事件
querySubscribeEvent:completion: 查询订阅事件
unSubscribeEvent:completion: 取消订阅事件

SDK 核心类/接口类

以下仅列出 SDK 的核心类和接口类,如需查阅其他类或接口类的信息,请进入iOS SDK API 参考搜索与查阅。

初始化 & 登录相关

类/接口说明
NIMSDK SDK 核心类,提供初始化 SDK,获取各个服务能力接口,获取当前版本等接口
NIMSDKConfig SDK 配置项修改的接口
NIMSDKConfigDelegate SDK 配置项修改的委托接口
NIMServerSetting 服务器配置接口,私有化需要自定义设置,必须在注册 AppKey 完成之前设置
NIMLoginManager 登录接口类,提供鉴权、登录、登出、踢人等接口
NIMLoginManagerDelegate 登录的委托接口,提供登录、登出、踢人等事件注册接口

消息(单聊 & 群聊 & 聊天室)与会话相关

类/接口说明
NIMChatExtendManager IM 消息扩展接口类,提供收藏消息、快捷评论等接口
NIMChatExtendManagerDelegate IM 消息扩展委托接口,提供收藏消息、快捷评论等事件的注册接口
NIMChatManager IM 消息管理接口类,提供消息发送、消息查询、消息撤回等相关接口
NIMChatManagerDelegate IM 消息管理委托接口,提供消息发送、消息查询、消息撤回等相关事件的注册接口
NIMConversationManager 会话管理接口类,提供获取/删除会话消息、设置会话消息已读等相关接口
NIMConversationManagerDelegate 会话管理委托接口,提供会话相关事件的注册接口
NIMDocTranscodingManager 文档转码管理接口类,提供查询文档转码信息、删除转码文档等接口
NIMMediaManager 录制和播放音频管理接口类,提供语音录制和播放相关接口
NIMMediaManagerDelegate 音频管理委托接口,提供录制、播放音频等事件的注册接口
NIMResourceManager 资源管理接口类,提供下载、搜索、查询资源等接口
NIMIndexManager 消息检索接口类,提供消息检索相关接口

APNs 离线推送相关

类/接口说明
NIMApnsManager IM 的 APNs 离线推送服务接口类,提供 IM 的 APNs 离线推送服务相关配置接口
NIMApnsManagerDelegate IM 的 APNs 离线推送服务委托接口,提供 IM 的 APNs 离线推送服务相关配置事件的注册接口

群组相关

类/接口说明
NIMTeamManager 群组接口类,提供创建群组、添加群成员等群组操作相关接口
NIMTeamManagerDelegate 群组委托接口,提供群组成员变动、资料变动等事件的注册接口

超大群相关

类/接口说明
NIMSuperTeamManager 超大群服务接口类,提供超大群成员管理、超大群消息发送、超大群资料管理等相关接口

聊天室相关

类/接口说明
NIMChatroomManager 聊天室服务接口类,提供进出聊天室、发送聊天室消息、聊天室成员管理、聊天室队列服务、聊天室标签等接口
NIMChatroomManagerDelegate 聊天室委托接口, 提供聊天室相关事件的注册接口

圈组相关

类/接口说明
NIMQChatManager 圈组接口类,提供圈组登录登出相关接口
NIMQChatManagerDelegate 圈组委托接口,提供圈组登录登出相关事件的注册接口
NIMQChatServerManager 圈组服务器接口类,提供圈组服务器相关接口,如创建服务器、邀请服务器成员、查询服务器成员等接口
NIMQChatChannelManager 圈组频道接口类,提供圈组频道相关接口,如创建频道、查询频道、查询频道未读信息等接口
NIMQChatRoleManager 圈组身份组接口类,提供圈组身份组相关接口,如将某人加入身份组、查询自己的权限等接口
NIMQChatMessageManager 圈组消息接口类,提供发送消息、撤回消息、发送消息正在输入事件等接口
NIMQChatMessageManagerDelegate 圈组消息委托接口,提供圈组消息相关事件的注册接口
NIMQChatApnsManager 圈组的 APNs 离线推送服务接口类,提供圈组的 APNs 离线推送服务相关配置接口
NIMQChatRTCChannelManager 圈组实时互动频道接口类,提供更新、查询实时互动频道信息等接口
NIMQChatMessageExtendManager 圈组消息扩展接口类,提供发送、删除快捷评论等接口

圈组实时互动频道模块(QChatMedia)

类/接口说明
NIMQChatMediaKit 圈组实时互动频道接口类,提供圈组实时互动频道的初始化接口
NIMQChatMediaChannelManager 圈组实时互动频道管理接口类,提供实时互动频道成员管理、摄像头切换、扬声器管理、视频画布设置等接口
NIMQChatMediaChannelDelegate 圈组实时互动频道委托接口,提供实时互动频道相关事件的注册接口

用户资料 & 用户关系相关

类/接口说明
NIMUserManager 用户信息与用户关系操作相关接口类,提供用户信息管理和好友关系管理相关接口
NIMUserManagerDelegate 用户信息与好友关系委托接口,提供好友状态变化,黑名单列表变化等事件的注册接口

系统通知相关

类/接口说明
NIMSystemNotificationManager 系统通知接口类,提供发送、标记、删除系统通知等接口
NIMSystemNotificationManagerDelegate 系统通知委托接口, 提供系统通知相关事件的注册接口

事件订阅相关

类/接口说明
NIMEventSubscribeManager 事件订阅接口类,提供发布、查询、订阅事件等接口
NIMEventSubscribeManagerDelegate 事件订阅委托接口, 提供事件订阅相关事件的注册接口
此文档是否对你有帮助?
有帮助
去反馈
  • SDK API 概述
  • 调用方式
  • 通知方式
  • SDK API 参考
  • SDK 核心 API
  • 初始化 & 登录
  • 消息(单聊 & 群聊 & 聊天室)
  • 消息扩展
  • 会话列表
  • APNs 离线推送
  • 群组
  • 超大群
  • 聊天室
  • 圈组
  • 用户信息 & 用户关系
  • 系统通知
  • 事件订阅
  • SDK 核心类/接口类
  • 初始化 & 登录相关
  • 消息(单聊 & 群聊 & 聊天室)与会话相关
  • APNs 离线推送相关
  • 群组相关
  • 超大群相关
  • 聊天室相关
  • 圈组相关
  • 圈组实时互动频道模块(QChatMedia)
  • 用户资料 & 用户关系相关
  • 系统通知相关
  • 事件订阅相关