====== 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");