环信头文件整理

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值