MobIM-API說明

皮皮醬發表於2018-09-28

一、MobIMAPI說明

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;
 
複製程式碼
複製程式碼