環信頭文件整理

SDK採用模塊化設計,每一模塊的功能相對獨立和完善,用戶可以根據自己的需求選擇使用下面的模塊:
這裏寫圖片描述
EMClient是SDK的入口,主要完成登錄,退出,連接管理等功能。也是獲取其他模塊的入口。
EMChatManager管理消息的收發,完成會話管理等功能。
EMContactManager負責好友的添加刪除,黑名單的管理。
EMGroupManager負責羣組的管理,創建,刪除羣組,管理羣組成員等功能。
EMChatroomManager負責聊天室的管理。

// 帶語音的接口
 #import "EMSDKFull.h"
// 不帶語音的接口
 #import "EMSDK.h"

EMOptions(SDK的設置選項)

//
/*
 *  日誌輸出級別
 */
typedef enum {
    EMLogLevelDebug = 0, //輸出所有日誌
    EMLogLevelWarning,   //輸出警告及錯誤
    EMLogLevelError      //只輸出錯誤
} EMLogLevel;

/*
 *  app唯一標識符
 */
@property (nonatomic, strong, readonly) NSString *appkey;

/*
 *  控制檯是否輸出log, 默認爲NO
 */
@property (nonatomic, assign) BOOL enableConsoleLog;

/*
 *  日誌輸出級別, 默認爲EMLogLevelDebug
 */
@property (nonatomic, assign) EMLogLevel logLevel;

/*
 *  是否使用https, 默認爲YES
 */
@property (nonatomic, assign) BOOL usingHttps;

/*
 *  是否使用開發環境, 默認爲NO
 *  只能在[EMClient initializeSDKWithOptions:]時設置,不能在程序運行過程中動態修改
 */
@property (nonatomic, assign) BOOL isSandboxMode;

/*
 *  是否自動登錄, 默認爲YES
 *  設置的值會保存到本地。初始化EMOptions時,首先獲取本地保存的值
 */
@property (nonatomic, assign) BOOL isAutoLogin;

/*
 *  離開羣組時是否刪除該羣所有消息, 默認爲YES
 */
@property (nonatomic, assign) BOOL isDeleteMessagesWhenExitGroup;

/*
 *  離開聊天室時是否刪除所有消息, 默認爲YES
 */
@property (nonatomic, assign) BOOL isDeleteMessagesWhenExitChatRoom;

/*
 *  是否允許聊天室Owner離開, 默認爲YES
 */
@property (nonatomic, assign) BOOL isChatroomOwnerLeaveAllowed;

/*
 *  用戶自動同意羣邀請, 默認爲YES
 */
@property (nonatomic, assign) BOOL isAutoAcceptGroupInvitation;

/*
 *  自動同意好友申請, 默認爲NO
 */
@property (nonatomic, assign) BOOL isAutoAcceptFriendInvitation;

/*
 *  是否發送消息送達回執, 默認爲NO,如果設置爲YES,SDK收到單聊消息時會自動發送送達回執
 */
@property (nonatomic, assign) BOOL enableDeliveryAck;

/*
 *  iOS特有屬性,推送證書的名稱
 *  只能在[EMClient initializeSDKWithOptions:]時設置,不能在程序運行過程中動態修改
 */
@property (nonatomic, strong) NSString *apnsCertName;

/* 
 *  獲取實例
 *  @param aAppkey  App的appkey
 *  @result SDK設置項實例
 */
+ (instancetype)optionsWithAppkey:(NSString *)aAppkey;

EMClient(客戶端)

{
    EMPushOptions *_pushOptions;
}

/*
 *  SDK版本號
 */
@property (nonatomic, strong, readonly) NSString *version;

/*
 *  當前登錄賬號
 */
@property (nonatomic, strong, readonly) NSString *currentUsername;

/* 
 *  SDK屬性
 */
@property (nonatomic, strong, readonly) EMOptions *options;

/*
 *  推送設置
 */
@property (nonatomic, strong, readonly) EMPushOptions *pushOptions;

/*
 *  聊天模塊
 */
@property (nonatomic, strong, readonly) id<IEMChatManager> chatManager;

/*
 *  好友模塊
 */
@property (nonatomic, strong, readonly) id<IEMContactManager> contactManager;
/*
 *  羣組模塊
 */
@property (nonatomic, strong, readonly) id<IEMGroupManager> groupManager;

/*
 *  聊天室模塊
 */
@property (nonatomic, strong, readonly) id<IEMChatroomManager> roomManager;

/*
 *  SDK是否自動登錄上次登錄的賬號
 */
@property (nonatomic, readonly) BOOL isAutoLogin;

/*
 *  用戶是否已登錄
 */
@property (nonatomic, readonly) BOOL isLoggedIn;

/*
 *  是否連上聊天服務器
 */
@property (nonatomic, readonly) BOOL isConnected;

/*
 *  獲取SDK實例
 */
+ (instancetype)sharedClient;

1. Delegate

/*
 *  添加回調代理
 *  @param aDelegate  要添加的代理
 *  @param aQueue     執行代理方法的隊列
 */
- (void)addDelegate:(id<EMClientDelegate>)aDelegate
      delegateQueue:(dispatch_queue_t)aQueue;

/*
 *  移除回調代理
 *  @param aDelegate  要移除的代理
 */
- (void)removeDelegate:(id)aDelegate;

2. Initialize SDKDelegate

/*
 *  初始化sdk
 *  @param aOptions  SDK配置項
 *  @result 錯誤信息
 */
- (EMError *)initializeSDKWithOptions:(EMOptions *)aOptions;

#pragma mark - Register

/*
 *  註冊用戶
 *  同步方法,會阻塞當前線程. 不推薦使用,建議後臺通過REST註冊
 *  @param aUsername  用戶名
 *  @param aPassword  密碼
 *  @result 錯誤信息
 */
- (EMError *)registerWithUsername:(NSString *)aUsername
                         password:(NSString *)aPassword;

3. Login Delegate

//
/*
 *  登錄
 *  同步方法,會阻塞當前線程
 *  @param aUsername  用戶名
 *  @param aPassword  密碼
 *  @result 錯誤信息
 */
- (EMError *)loginWithUsername:(NSString *)aUsername
                      password:(NSString *)aPassword;

4. Logout Delegate

//
/*
 *  退出
 *  同步方法,會阻塞當前線程
 *  @param bIsUnbindDeviceToken 是否解除device token的綁定,解除綁定後設備不會再收到消息推送
 *  如果傳入YES, 解除綁定失敗,將返回error
 *  @result 錯誤信息
 */
- (EMError *)logout:(BOOL)bIsUnbindDeviceToken;

5. Apns

//
/*
 *  綁定device token
 *  同步方法,會阻塞當前線程
 *  @param aDeviceToken  要綁定的token
 *  @result 錯誤信息
 */
- (EMError *)bindDeviceToken:(NSData *)aDeviceToken;

/* 
 *  從服務器獲取推送屬性
 *  同步方法,會阻塞當前線程
 */
- (EMPushOptions *)getPushOptionsFromServerWithError:(EMError **)pError;

/*
 *  設置推送消息顯示的暱稱
 *  同步方法,會阻塞當前線程
 *  @param aNickname  要設置的暱稱
 *  @result 錯誤信息
 */
- (EMError *)setApnsNickname:(NSString *)aNickname;

/*
 *  更新推送設置到服務器
 *  同步方法,會阻塞當前線程
 *  @result 錯誤信息
 */
- (EMError *)updatePushOptionsToServer;

6. iOS

/*
 *  iOS專用,數據遷移到SDK3.0
 *  同步方法,會阻塞當前線程
 *  升級到SDK3.0版本需要調用該方法,開發者需要等該方法執行完後再進行數據庫相關操作
 *  @result 是否遷移成功
 */
- (BOOL)dataMigrationTo3;

/*
 *  iOS專用,程序進入後臺時,需要調用此方法斷開連接
 *  @param aApplication  UIApplication
 */
- (void)applicationDidEnterBackground:(id)aApplication;

/*
 *  iOS專用,程序進入前臺時,需要調用此方法進行重連
 */
- (void)applicationWillEnterForeground:(id)aApplication;

EMChatroom(聊天室)

/*
 *  聊天室ID
 */
@property (nonatomic, copy, readonly) NSString *chatroomId;

/*
 *  聊天室的主題
 */
@property (nonatomic, copy, readonly) NSString *subject;

/*
 *  聊天室的描述
 */
@property (nonatomic, copy, readonly) NSString *description;

/*
 *  聊天室的最大人數
 */
@property (nonatomic, readonly) NSInteger maxOccupantsCount;

/*
 *  初始化聊天室實例
 *  請使用[+chatroomWithId:]方法
 *  @result nil
 */
- (instancetype)init __deprecated_msg("Use +chatroomWithId:");

/*
 *  獲取聊天室實例
 *  @param aChatroomId   聊天室ID
 *  @result 聊天室實例
 */
+ (instancetype)chatroomWithId:(NSString *)aChatroomId;

EMConversation(聊天會話)

//
/*
 *  會話類型
 */
typedef enum{
    EMConversationTypeChat  = 0,    //單聊會話 
    EMConversationTypeGroupChat,    //羣聊會話
    EMConversationTypeChatRoom,     //聊天室會話
}EMConversationType;

/*
 *  會話唯一標識
 */
@property (nonatomic, copy, readonly) NSString *conversationId;

/*
 *  會話類型
 */
@property (nonatomic, assign, readonly) EMConversationType type;

/*
 *   會話未讀消息數量
 */
@property (nonatomic, assign, readonly) int unreadMessagesCount;

/*
 *  會話擴展屬性
 */
@property (nonatomic, strong) NSDictionary *ext;

/*
 *  會話最新一條消息
 */
@property (nonatomic, strong, readonly) EMMessage *latestMessage;

/*
 *  插入一條消息,消息的conversationId應該和會話的conversationId一致,消息會被插入DB,並且更新會話的latestMessage等屬性
 *  @param aMessage  消息實例
 *  @result 是否成功
 */
- (BOOL)insertMessage:(EMMessage *)aMessage;

/*
 *  刪除一條消息
 *  @param aMessageId  要刪除消失的ID
 *  @result 是否成功
 */
- (BOOL)deleteMessageWithId:(NSString *)aMessageId;

/*
 *  刪除該會話所有消息
 *  @result 是否成功
 */
- (BOOL)deleteAllMessages;

/*
 *  更新一條消息,不能更新消息ID,消息更新後,會話的latestMessage等屬性進行相應更新
 *  @param aMessage  要更新的消息
 *  @result 是否成功
 */
- (BOOL)updateMessage:(EMMessage *)aMessage;

/*
 *  將消息設置爲已讀
 *  @param aMessageId  要設置消息的ID
 *  @result 是否成功
 */
- (BOOL)markMessageAsReadWithId:(NSString *)aMessageId;

/*
 *  將所有未讀消息設置爲已讀
 */
- (BOOL)markAllMessagesAsRead;

/*
 *  更新會話擴展屬性到DB
 *  @result 是否成功
 */
- (BOOL)updateConversationExtToDB;

/*
 *  獲取指定ID的消息
 *  @param aMessageId  消息ID
 *  @result 消息
 */
- (EMMessage *)loadMessageWithId:(NSString *)aMessageId;

/*
 *  從數據庫獲取指定數量的消息,取到的消息按時間排序,並且不包含參考的消息,如果參考消息的ID爲空,則從最新消息向前取
 *  @param aMessageId  參考消息的ID
 *  @param aLimit      獲取的條數
 *  @result 消息列表<EMMessage>
 */
- (NSArray *)loadMoreMessagesFromId:(NSString *)aMessageId
                              limit:(int)aLimit;

/*
 *  從數據庫獲取指定類型的消息,取到的消息按時間排序,如果參考的時間戳爲負數,則從最新消息向前取,如果aLimit是負數,則獲取所有符合條件的消息
 *  @param aType        消息類型
 *  @param aTimestamp   參考時間戳
 *  @param aLimit       獲取的條數
 *  @result 消息列表<EMMessage>
 */
- (NSArray *)loadMoreMessagesWithType:(EMMessageBodyType)aType
                               before:(long long)aTimestamp
                                limit:(int)aLimit;

/*
 *  從數據庫獲取包含指定內容的消息,取到的消息按時間排序,如果參考的時間戳爲負數,則從最新消息向前取,如果aLimit是負數,則獲取所有符合條件的消息
 *  @param aKeywords    搜索關鍵字
 *  @param aTimestamp   參考時間戳
 *  @param aLimit       獲取的條數
 *  @result 消息列表<EMMessage>
 */
- (NSArray *)loadMoreMessagesContain:(NSString*)aKeywords
                               before:(long long)aTimestamp
                                limit:(int)aLimit;

/*
 *  收到的對方發送的最後一條消息
 *  @result 消息實例
 */
- (EMMessage *)latestMessageFromOthers;

EMCursorResult(分段結果)

/*
 *  結果列表<id>
 */
@property (nonatomic, strong) NSArray *list;

/*
 *  獲取下一段結果的遊標
 */
@property (nonatomic, copy) NSString *cursor;

/*
 *  創建實例
 *  @param aList    結果列表<id>
 *  @param aCusror  獲取下一段結果的遊標
 *  @result 分段結果的實例
 */
+ (instancetype)cursorResultWithList:(NSArray *)aList
                           andCursor:(NSString *)aCusror;

EMError(SDK定義的錯誤)

/*
 *  錯誤碼
 */
@property (nonatomic) EMErrorCode code;

/*
 *  錯誤描述
 */
@property (nonatomic, strong) NSString *errorDescription;

/*
 *  初始化錯誤實例
 *  @param aDescription  錯誤描述
 *  @param aCode         錯誤碼
 *  @result 錯誤實例
 */
- (instancetype)initWithDescription:(NSString *)aDescription
                               code:(EMErrorCode)aCode;

/*
 *  創建錯誤實例
 *  @param aDescription  錯誤描述
 *  @param aCode         錯誤碼
 *  @result 對象實例
 */
+ (instancetype)errorWithDescription:(NSString *)aDescription
                                code:(EMErrorCode)aCode;

EMGroup(羣組)

//
/*
 *  羣組ID
 */
@property (nonatomic, copy, readonly) NSString *groupId;

/*
 *  羣組的主題,需要獲取羣詳情
 */
@property (nonatomic, copy, readonly) NSString *subject;

/*
 *  羣組的描述,需要獲取羣詳情
 */
@property (nonatomic, copy, readonly) NSString *description;

/*
 *  羣組當前的成員數量,需要獲取羣詳情
 */
@property (nonatomic, readonly) NSInteger occupantsCount;

/*
 *  羣組屬性配置,需要獲取羣詳情
 */
@property (nonatomic, strong, readonly) EMGroupOptions *setting;

/*
 *  羣組的所有者,擁有羣的最高權限,需要獲取羣詳情
 *  羣組的所有者只有一人
 */
@property (nonatomic, copy, readonly) NSString *owner;

/*
 *  羣組的成員列表,需要獲取羣詳情
 */
@property (nonatomic, copy, readonly) NSArray *members;

/*
 *  羣組的黑名單,需要先調用獲取羣黑名單方法
 *  需要owner權限才能查看,非owner返回nil
 */
@property (nonatomic, strong, readonly) NSArray *bans;

/*
 *  羣組的所有成員(包含owner和members)
 */
@property (nonatomic, strong, readonly) NSArray *occupants;

/*
 *  此羣組是否接收消息推送通知
 */
@property (nonatomic, readonly) BOOL isPushNotificationEnabled;

/*
 *  此羣是否爲公開羣,需要獲取羣詳情
 */
@property (nonatomic, readonly) BOOL isPublic;

/*
 *  是否屏蔽羣消息
 */
@property (nonatomic, readonly) BOOL isBlocked;

/*
 *  初始化羣組實例
 *  請使用+groupWithId:方法
 *  @result nil
 */
- (instancetype)init __deprecated_msg("Use +groupWithId:");

/*
 *  獲取羣組實例,如果不存在則創建
 *  @param aGroupId    羣組ID
 *  @result 羣組實例
 */
+ (instancetype)groupWithId:(NSString *)aGroupId;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章