一、MobIM类API说明
1. 获取当前用户信息
/**
获取当前用户信息
@return 当前用户
*/
+ (MIMUser * _Nullable)getCurrentUser;
2. 获取用户管理者对象
/**
获取用户管理对象
@return 用户管理对象
*/
+ (MIMUserManager *_Nonnull)getUserManager;
3. 获取聊天管理者对象
/**
获取聊天管理对象
@return 聊天管理对象
*/
+ (MIMChatManager *_Nonnull)getChatManager;
4. 获取群组管理者对象
/**
获取群组管理对象
@return 群组管理对象
*/
+ (MIMGroupManager *_Nonnull)getGroupManager;
5. 相关连接监听
**
正在连接服务器
@param connectingHandler 进行连接时回调
*/
+ (void)onConnecting:(void (^_Nullable)(MIMUser * _Nonnull currentUser))connectingHandler;
/**
连接服务器成功
@param connectedHandler 连接成功时回调
*/
+ (void)onConnected:(void (^_Nullable)(MIMUser * _Nonnull currentUser))connectedHandler;
/**
断开连接
@param disconnectedHandler 断开连接时回调
*/
+ (void)onDisConnected:(void (^_Nullable)(MIMError * _Nullable error))disconnectedHandler;
二、用户管理类(MIMUserManager)
1. 获取本地提醒号列表
/**
获取本地提醒号列表
@return 提醒号列表
*/
- (NSArray<MIMUser *> *)getLocalNoticers;
2. 获取用户名片,个人名片主要用于免打扰功能
/**
获取用户名片
@param userId 用户id
@return 名片
*/
- (MIMVCard *)getVCardWithUserId:(NSString *)userId;
3. 设置用户是否免打扰
/**
设置用户是否免打扰
@param userId 用户id
@param isDisturb 是否免打扰
@return 是否设置成功
*/
- (BOOL)setUserToDisturbWithUserId:(NSString *)userId isDisturb:(BOOL)isDisturb;
4. 添加、删除黑名单
/**
添加到黑名单
@param userId 要添加的人的appUserId
@param resultHandler 回调,添加成功则返回被添加到黑名单的用户信息
*/
- (void)addToBlackListWithUserId:(NSString *)userId resultHandler:(void (^)(MIMUser *user, MIMError *error))resultHandler;
/**
删除黑名单
@param userId 要删除的人的appUserId
@param resultHandler 回调,删除成功则返回从黑名单中删除的用户信息
*/
- (void)deleteBlackListWithUserId:(NSString *)userId resultHandler:(void (^)(MIMUser *user, MIMError *error))resultHandler;
5. 获取黑名单列表
/**
获取当前用户的黑名单列表
@param resultHandler 回调
*/
- (void)getBlackListWithResultHandler:(void (^)(NSArray<MIMUser *> *blackList, MIMError *error))resultHandler;
三、聊天管理类(MIMChatManager)
1. 从网络获取所有会话列表,获取完成后会缓存到MobIM本地,该接口一般只在首次启动时调用
/**
获取所有创建过的会话列表
@param completionHandler 完成回调
*/
- (void)getConversationListOnCompletion:(void (^)(NSArray<MIMConversation *> *conversationList, MIMError *error))completionHandler;
2. 获取本地会话列表,用户app启动时调用展示会话列表页
/**
获取本地会话列表
@param resultHandler 会话列表回调
*/
- (void)getLocalConversationList:(void (^)(NSArray<MIMConversation *> *conversationList))resultHandler;
3. 监听本地会话列表变更,此接口与上述两个接口配合使用
/**
监听本地会话列表变更,当本地会话列表变化时通过block回调
@param resultHandler 会话列表变更回调,通过changeType判断变更方式
*/
- (void)onLocalConversationListResultChanged:(void (^)(MIMConversation *changedConversation, NSFetchedResultsChangeType changeType))resultHandler;
4. 获取总未读消息数并监听变更
/**
获取当前所有未读消息并监听变更,该方法会直接返回本地消息表中所有未读消息,并且当本地消息表中的未读消息变化时通过block回调实时总的未读消息数
@param resultHandler 未读消息变更回调
@return 未读消息列表
*/
- (NSInteger)getAllUnreadMessagesOnResultChanged:(void (^)(NSInteger totalUnreadCount))resultHandler;
5. 发送消息
/**
发送消息
@param msg 消息对象
@param completionHandler 发送完成回调
*/
- (void)sendMessage:(MIMMessage *)msg completion:(void (^)(MIMMessage *message, MIMError *error))completionHandler;
6. 接收消息
/**
接收消息
@param handlerIdentifier 接收消息回调的唯一标识符,该标识不能为空或空字符串
@param messageHandler 处理接收到的消息block
*/
- (void)onMessageReceivedWithIdentifier:(NSString *)handlerIdentifier messageHandler:(void (^)(MIMMessage *message))messageHandler;
7. 移除消息监听,此接口配合上面接收消息的接口使用
/**
移除接收到消息的监听block
@param handlerIdentifier block标识符
*/
- (void)removeMessageHandlerForIdentifier:(NSString *)handlerIdentifier;
8. 删除消息
/**
删除一条或多条消息
@param messages 消息对象集合
@return 是否删除成功
*/
- (BOOL)deleteMessages:(NSArray<MIMMessage *> *)messages;
/**
根据会话删除某个会话所有消息
@param conversation 会话
@return 是否删除成功
*/
- (BOOL)deleteAllMessagesInConversation:(MIMConversation *)conversation;
9. 删除会话
/**
删除本地会话
@param conversations 要删除的会话集合
@return 是否删除成功
*/
- (BOOL)deleteLocalConversations:(NSArray<MIMConversation *> *)conversations;
/**
删除本地会话
@param conversationIds 要删除的会话id集合
@return 是否删除成功
*/
- (BOOL)deleteLocalConversationsByIds:(NSArray<NSString *> *)conversationIds;
10. 更新消息状态
/**
更新Message为已读状态
@param message 消息
@return 是否更新成功
*/
- (BOOL)updateMessageToReaded:(MIMMessage *)message;
/**
根据Conversation更新所有Message为已读状态
@param conversation 会话
@return 是否更新成功
*/
- (BOOL)updateMessagesToReadedInConversation:(MIMConversation *)conversation;
/**
更新语音消息为已听取状态
@param aVoiceMessage 语音消息
@return 是否更新成功
*/
- (BOOL)updateVoiceMessageToListened:(MIMMessage *)aVoiceMessage;
/**
更新附件消息下载状态
@param newStatus 新下载状态
@param message 附件消息
@return 是否更新成功
*/
- (BOOL)updateAttachDownloadStatus:(MIMDownloadStatus)newStatus withMessage:(MIMMessage *)message;
11. 查询消息
/**
根据对方id查询两个人单聊的所有本地消息
@param otherId 对方AppUid
@param lastMessage 最后一条消息
@param pageSize 每次查询多少条,若传小于等于0时,默认每次查询10条,若传大于等于50时,默认只查50条
@return 消息列表
*/
- (NSArray<MIMMessage *> *)fetchSingleChatMessagesByOtherId:(NSString *)otherId
lastMessage:(MIMMessage *)lastMessage
pageSize:(NSInteger)pageSize;
/**
根据群组id查询群组会话的所有本地消息
@param groupId 群组id
@param lastMessage 最后一条消息
@param pageSize 每次查询多少条,若传小于等于0时,默认每次查询10条,若传大于等于50时,默认只查50条
@return 消息列表
*/
- (NSArray<MIMMessage *> *)fetchGroupChatMessagesByGroupId:(NSString *)groupId
lastMessage:(MIMMessage *)lastMessage
pageSize:(NSInteger)pageSize;
/**
根据会话ID查询该会话的最后一条消息
@param conversationId 会话id
@return 该会话的最后一条消息
*/
- (MIMMessage*)fetchLastMessageByConversationId:(NSString *)conversationId;
/**
根据会话ID查询该会话所有消息
@param conversationId 会话id
@param lastMessage 最后一条消息
@param pageSize 每次查询多少条,若传小于等于0时,默认每次查询10条,若传大于等于50时,默认只查50条
@return 消息列表
*/
- (NSArray<MIMMessage *> *)fetchAllMessagesByConversationId:(NSString *)conversationId
lastMessage:(MIMMessage *)lastMessage
pageSize:(NSInteger)pageSize;
四、群组管理类(MIMGroupManager)
1. 创建群组
/**
创建群组
@param groupName 群组名称
@param groupDesc 群组简介
@param groupNoti 群组公告
@param groupMembers 群成员
@param resultHandler 回调处理
*/
- (void)createGroupWithGroupName:(NSString *)groupName
groupDesc:(NSString *)groupDesc
groupNoti:(NSString *)groupNoti
groupMembers:(NSArray<NSString *> *)groupMembers
resultHandler:(void (^)(MIMGroup *group, MIMError *error))resultHandler;
2. 修改群信息
/**
修改群名称
@param groupName 群名称
@param groupId 群id
@param resultHandler 回调
*/
- (void)updateGroupName:(NSString *)groupName
withGroupId:(NSString *)groupId
resultHandler:(void (^)(MIMGroup *group, MIMError *error))resultHandler;
/**
修改群简介
@param groupDesc 群简介
@param groupId 群id
@param resultHandler 回调
*/
- (void)updateGroupDesc:(NSString *)groupDesc
withGroupId:(NSString *)groupId
resultHandler:(void (^)(MIMGroup *group, MIMError *error))resultHandler;
/**
修改群公告
@param groupNoti 群公告
@param groupId 群id
@param resultHandler 回调
*/
- (void)updateGroupNotice:(NSString *)groupNoti
withGroupId:(NSString *)groupId
resultHandler:(void (^)(MIMGroup *group, MIMError *error))resultHandler;
3. 修改群昵称
/**
修改群昵称
@param nickname 要修改的昵称
@param groupId 群组ID
@param resultHandler 回调处理
*/
- (void)updateGroupNickname:(NSString *)nickname
inGroup:(NSString *)groupId
resultHandler:(void (^)(MIMVCard *card, MIMError *error))resultHandler;
4. 增加、删除群成员
/**
增加群成员
@param members 被添加人的id集合
@param groupId 要添加到的群组ID
@param resultHandler 回调处理
*/
- (void)addGroupMembers:(NSArray<NSString *> *)members
toGroup:(NSString *)groupId
resultHandler:(void (^)(MIMGroup *group, MIMError *error))resultHandler;
/**
删除群成员
@param members 要删除的群成员MobUserId集合
@param groupId 群组id
@param resultHandler 回调处理
*/
- (void)deleteGroupMembers:(NSArray<NSString *> *)members
inGroup:(NSString *)groupId
resultHandler:(void (^)(MIMGroup *group, MIMError *error))resultHandler;
5. 退出群组
/**
退出群组
@param groupId 要退出的群组ID
@param resultHandler 回调处理
*/
- (void)exitGroupWithGroupId:(NSString *)groupId resultHandler:(void (^)(MIMGroup *group, MIMError *error))resultHandler;
6. 转让群组
/**
转让群组
@param groupId 要转让的群组ID
@param toId 被转让人(群成员)的appUid
@param resultHandler 回调处理
*/
- (void)transferGroup:(NSString *)groupId
to:(NSString *)toId
resultHandler:(void (^)(MIMGroup *group, MIMError *error))resultHandler;
7. 获取群组信息
/**
获取群组信息
@param options 选项,可以选择群组信息,群成员列表,或者群信息+群成员
@param groupId 群组ID
@param resultHandler 回调处理
*/
- (void)getGroupInfoWithGroupId:(NSString *)groupId
options:(MIMGroupInfoOption)options
resultHandler:(void (^)(MIMGroup *group, MIMError *error))resultHandler;
8. 加入群组
/**
加入群组
@param groupId 群组id
@param resultHandler 回调处理
*/
- (void)joinToGroup:(NSString *)groupId resultHandler:(void (^)(MIMGroup *group, MIMError *error))resultHandler;
9. 获取当前用户的群组列表
/**
获取当前用户的群组列表
@param resultHandler 回调
*/
- (void)getUserGroupsWithResultHandler:(void (^)(NSArray<MIMGroup *> *groupList, MIMError *error))resultHandler;
10. 查找群组
/**
查找群组
@param groupId 群组id
@param resultHandler 回调
*/
- (void)findGroupBy:(NSString *)groupId resultHandler:(void (^)(MIMGroup *group, MIMError *error))resultHandler;
五、错误码说明
错误信息都有错误码 errorCode 和错误描述 errorDescription,根据错误描述了解具体错误情况,错误码详情请参阅:MIMErrorCode.h
/**
错误码
*/
@property (nonatomic, assign) MIMErrorCode errorCode;
/**
错误描述
*/
@property (nonatomic, copy) NSString *errorDescription;