SDK 2.1.7 release note
Bug fix
- sdk的bug:登录后,免打扰群组列表获取有延迟;
- demo的bug:连续播放音频时可能crash;
- demo的bug:iPhone4上,点击重发按钮,重发按钮不会立刻消失。相应的修改代码在demo的重发操作里;
SDK内部细节调整
- 将语音的录制和播放相关代码从SDK中开源出来了,SDK不再管理相关代码,请开发者自由定制;
- 请使用EaseMob单实例引用callManager. 在从2.1.7版本开始不会提供EMSDKFull及其头文件. EMSDKFull的功能将整合进EaseMob中;
- 登录操作返回的错误码调整:
EMErrorNotFound(用户不存在),
EMErrorServerTooManyOperations(已经登录或者正在登录),
EMErrorNetworkNotConnected(未连网),
EMErrorInvalidUsername_NULL(用户名为空),
EMErrorInvalidUsername_Chinese(用户名是中文),
EMErrorServerAuthenticationFailure(用户名或密码错误),
EMErrorServerNotReachable(未连接到服务器),
EMErrorConfigInvalidAppKey(appkey不可用),
MErrorServerTimeout(超时)
其他的error类型统称登录失败
新功能大放送
聊天室,大家期待已久的聊天室上线了。 在环信demo的源代码中,Chatroom文件夹下是关于聊天室接口的使用示例。
new api
EMConversation
/*!
@method
@brief 根据消息id加载它之前的指定条数消息
@param aCount 要加载的消息条数
@param messageId 消息id,如果传nil就是取最后一条消息
@discussion
加载后的消息按照升序排列;
@result 加载的消息列表
*/
- (NSArray *)loadNumbersOfMessages:(NSUInteger)aCount withMessageId:(NSString *)messageId;
IChatManagerChatroom
该头文件中所有的接口都是新添加的
EMChatManagerChatroomDelegate
该头文件中所有的回调接口都是新添加的
EMChatManagerDefs
/*
@brief 会话类型
@constant eConversationTypeChat 单聊会话
@constant eConversationTypeGroupChat 群聊会话
@constant eConversationTypeChatRoom 聊天室会话
*/
typedef NS_ENUM(NSInteger, EMConversationType){
eConversationTypeChat,
eConversationTypeGroupChat,
eConversationTypeChatRoom
};
/*
@brief 会话类型
@constant eConversationTypeChat 单聊会话
@constant eConversationTypeGroupChat 群聊会话
@constant eConversationTypeChatRoom 聊天室会话
*/
typedef NS_ENUM(NSInteger, EMConversationType){
eConversationTypeChat,
eConversationTypeGroupChat,
eConversationTypeChatRoom
};
IChatManagerGroup
/*!
@method
@brief 异步方法, 获取所有公开群组
@param completion 消息完成后的回调
@param aQueue 回调block时的线程
*/
- (void)asyncFetchAllPublicGroupsWithCompletion:(void (^)(NSArray *groups,
EMError *error))completion
onQueue:(dispatch_queue_t)aQueue;
/*!
@method
@brief 获取指定范围内的公开群
@param cursor 获取公开群的cursor,首次调用传空即可
@param pageSize 期望结果的数量, 如果 < 0 则一次返回所有结果
@param pError 出错信息
@return 获取的公开群结果
@discussion
这是一个阻塞方法,用户应当在一个独立线程中执行此方法,用户可以连续调用此方法以获得所有的公开群
*/
- (EMCursorResult *)fetchPublicGroupsFromServerWithCursor:(NSString *)cursor
pageSize:(NSInteger)pageSize
andError:(EMError **)pError;
/*!
@method
@brief 异步方法, 获取指定范围的公开群
@param cursor 获取公开群的cursor,首次调用传空即可
@param pageSize 期望结果的数量, 如果 < 0 则一次返回所有结果
@param completion 完成回调,回调会在主线程调用
*/
- (void)asyncFetchPublicGroupsFromServerWithCursor:(NSString *)cursor
pageSize:(NSInteger)pageSize
andCompletion:(void (^)(EMCursorResult *result, EMError *error))completion;
change api
IChatManagerConversation
/*!
@method
@brief 获取所有conversation的未读消息数量
@discussion
@result 未读消息数量
*/
- (NSUInteger)totalUnreadMessagesCount EM_DEPRECATED_IOS(2_1_0, 2_1_6, "Use - loadTotalUnreadMessagesCountFromDatabase");
/*!
@method
@brief 获取某个用户的会话
@discussion
此方法获取会话的顺序如下:
1. 查找内存会话列表中的会话;
2. 如果没找到, 试图从数据库中查找此条会话;
3. 如果仍没找到, 创建一个新的会话, 加到会话列表中, 并触发didUpdateConversationList:回调
@param chatter 需要获取会话对象的用户名, 对于群组, 则是群组ID
@result 会话对象
*/
- (EMConversation *)conversationForChatter:(NSString *)chatter
isGroup:(BOOL)isGroup EM_DEPRECATED_IOS(2_0_0, 2_1_6, "Use - conversationForChatter:conversationType");
/*!
@method
@brief 获取某个用户的会话
@discussion
此方法获取会话的顺序如下:
1. 查找内存会话列表中的会话;
2. 如果没找到, 试图从数据库中查找此条会话;
3. 如果仍没找到, 创建一个新的会话, 加到会话列表中, 并触发didUpdateConversationList:回调
@param chatter 需要获取会话对象的用户名, 对于群组是群组ID,聊天室则是聊天室ID
@result 会话对象
*/
- (EMConversation *)conversationForChatter:(NSString *)chatter
conversationType:(EMConversationType)type;
IChatManagerChat
/*!
@method
@brief 发送一个"已读消息"(在UI上显示了或者阅后即焚的销毁的时候发送)的回执到服务器
@discussion
@param message 从服务器收到的消息
@result
*/
- (void)sendHasReadResponseForMessage:(EMMessage *)message EM_DEPRECATED_IOS(2_0_0, 2_1_6, "Use - sendReadAckForMessage:");
EMConversation
/*!
@property
@brief 是否是群聊
*/
@property (nonatomic, readonly) BOOL isGroup EM_DEPRECATED_IOS(2_0_0, 2_1_6, "Use - conversationType");
EMMessage
/*!
@property
@brief 此消息是否是群聊消息
*/
@property (nonatomic) BOOL isGroup EM_DEPRECATED_IOS(2_0_0, 2_1_6, "Use - messageType");