SDK 2.1.6 release note
SDK内部细节调整
- 离线消息调整为3s调用一次回调,将3s内接收到的离线消息抛出;
- 从sdk中获取所有会话conversation时,会将没有消息的conversation一起返回,请开发者自己在app层面自由定制;
- 创建群组的同时默认添加群成员的操作 在2.1.6以前版本,默认群成员的操作是异步进行的,这样会出现群组创建成功了,但是群成员还没有添加完,这时去获取群信息就会出现信息不准确。 2.1.6版本将默认群成员操作改成同步进行,即创建群之后,调用同步添加群成员方法,群成员都添加完之后,才将整个创建方法结束。 2.1.6版本方法的弊端是默认群成员很多时,这个创建方法进行的时间会稍长,不能容忍的开发者,请在创建群组接口的默认成员参数传入nil,群组创建成功之后,自由定制是否异步进行加人操作。 其中创建群组的接口:[createGroupWithSubject:…], 加人的接口:[addOccupants:…]/[asyncAddOccupants:…];
- 从SDK数据库中load数据 SDK提供了一系列的从数据库中获取数据的方法,IOS的接口以load开头,比如[loadDataFromDatabase] ,[loadAllConversationsFromDatabaseWithAppend2Chat:] ,[loadAllMyGroupsFromDatabaseWithAppend2Chat:]。 IOS SDK在2.1.1版本开始,使用了sqlite,废弃了旧版的数据库,所以开发者们在写从2.1.0版本升级功能时,需要调用接口【importDataToNewDatabase】,在该接口成功之后,再调用load相关方法进行获取数据。 IOS SDK从2.1.6版本开始,不再在内部进行load相关方法,开发者可以根据自己的需求,自主定制调用load接口。比如,登录成功之后,你只想获取群组,那你就可以只调用[loadAllMyGroupsFromDatabaseWithAppend2Chat:]方法;如果你想获取所有数据,就要调用[loadDataFromDatabase] ,so easy。
- messageID统一由服务器生成,如果您之前使用demo的code,请将MessageModel的实现也做相应修改。
IOS SDK性能优化:
- 优化wifi && 非rely环境下的实时语音接通率;
- 减小实时语音的静态库大小;
新功能大放送
- 添加实时视频功能,beta版。 需要在demo中添加依赖库libc++.dylib,实时视频不支持后台运行。
- 添加接口:离开群时是否自动删除群会话(Default is YES),该接口的设置不会进行存储,需要开发者每次在自动登录的回调中设置一下
[[EaseMob sharedInstance].chatManager isAutoDeleteConversationWhenLeaveGroup];
new api
IChatManagerSettingOptions
/*!
@property
@brief 离开群时是否自动删除群会话(Default is YES)
@discussion
设置为YES时, 当离开该群时会自动删除该群对应的会话
*/
@property (nonatomic) BOOL isAutoDeleteConversationWhenLeaveGroup;
IChatManagerBuddy
/*!
@method
@brief 异步方法,将username的用户加到黑名单(该用户不会被从好友中删除,若想删除,请自行调用删除接口)
@param username 加入黑名单的用户username
@param relationship 黑名单关系(both:双向都不接收消息;
from:能给黑名单中的人发消息,接收不到黑名单中的人发的消息;
to:暂不支持)
@discussion
函数执行完, 回调[didBlockBuddy:error:]会被触发
*/
- (void)asyncBlockBuddy:(NSString *)username
relationship:(EMRelationship)relationship;
/*!
@method
@brief 异步方法,将username的用户加到黑名单(该用户不会被从好友中删除,若想删除,请自行调用删除接口)
@param username 加入黑名单的用户username
@param relationship 黑名单关系(both:双向都不接收消息;
from:能给黑名单中的人发消息,接收不到黑名单中的人发的消息;
to:暂不支持)
@param completion 完成后的回调
@param aQueue 回调block时的线程
@discussion
加黑名单成功 判断条件:completion中,error == nil 函数执行完, 会调用参数completion
*/
- (void)asyncBlockBuddy:(NSString *)username
relationship:(EMRelationship)relationship
withCompletion:(void (^)(NSString *username, EMError *error))completion
onQueue:(dispatch_queue_t)aQueue;
/*!
@method
@brief 异步方法,将username的用户移出黑名单
@param username 加入黑名单的用户username
@discussion
函数执行完, 回调[didUnblockBuddy:error:]会被触发
*/
- (void)asyncUnblockBuddy:(NSString *)username;
/*!
@method
@brief 异步方法,将username的用户移出黑名单
@param username 加入黑名单的用户username
@param completion 完成后的回调
@param aQueue 回调block时的线程
@discussion
移出黑名单成功 判断条件:completion中,error == nil 函数执行完, 会调用参数completion
*/
- (void)asyncUnblockBuddy:(NSString *)username
withCompletion:(void (^)(NSString *username, EMError *error))completion
onQueue:(dispatch_queue_t)aQueue;
change api
EMChatManagerBuddyDelegate
/*!
@method
@brief 将好友加到黑名单完成后的回调
@discussion
@param username 加入黑名单的好友
@param pError 错误信息
*/
- (void)didBlockBuddy:(NSString *)username error:(EMError *)pError;
/*!
@method
@brief 将好友移出黑名单完成后的回调
@discussion
@param username 移出黑名单的好友
@param pError 错误信息
*/
- (void)didUnblockBuddy:(NSString *)username error:(EMError *)pError;