您的位置:首页 > 其它

环信头文件整理

2016-04-22 22:11 337 查看
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
f24c
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: