====== SDK 2.1.4 release note ====== ---- ===== 强推更新SDK方式: ===== - 将旧的sdk从工程中删除,导入新的sdk - 编译工程,会出现一系列的error和warning - 将error和warning逐个击破,千万不要忽略warning,亲~~。 ===== SDK目录讲解 ===== sdk文件夹中有三个子文件夹:include、lib、resources,请不要擅自修改这些文件夹的任何东西,下面依次介绍这三个子文件夹。 * lib 静态库,包含连个静态库libEaseMobClientSDK.a和libEaseMobClientSDKLite.a。libEaseMobClientSDKLite.a不包含实时语音功能,libEaseMobClientSDK.a包含所有功能。如果你的app中不需要实时语音功能,删掉libEaseMobClientSDK.a只使用libEaseMobClientSDKLite.a即可。 * resources sdk的bundle,包含旧版sdk的数据库、消息提示音,sdk配置文件。其中sdk配置文件已加密,旧版sdk数据库几乎没什么实质作用。 * include 包含sdk的头文件。 主要介绍下include,所有的接口都在这个文件夹中。 ###include目录讲解 {#explainInclude} * EaseMobClientSDK/EaseMobClientSDKLite 包含在项目中要引用的总头文件,即在代码中只需#import”EMSDKFull.h”或#import”EaseMob.h”即可调用所有对应的api。 * CallService 包含实时语音相关的接口 * ChatService 包含聊天相关的接口,比如注册、登录、退出、单聊、群聊、群组等 * Utility 包含DeviceManager和ErrorManager。DeviceManager硬件相关接口,ErrorManager错误码定义 注: - include包含5个子文件夹:CallService、ChatService、EaseMobClientSDK、EaseMobClientSDKLite、Utility。如果无需实时语音功能,将CallService和EaseMobClientSDK删掉即可。 - 类似EM@Manager命名格式的文件夹的内部结构都是相似的。delegates文件夹包含各种代理接口,internal文件夹包含各种协议的声明,types文件夹包含各种实例的声明。 ===== 注意事项 ===== - 发送一个含多个附件的EMMessage, 附件包括图片/语音/视频/文件,正在优化; - 转发或插入一条含附件的EMMessage, 附件包括图片/语音/视频/文件,不支持; - 多附件下载或上传的进度回调,进度会不准; ===== Bug fix ===== - 会话conversation数量很多的时候,偶尔会出现两条一样的; - 群名称中包含“(”或者“)”,会造成crash; - EMConversation.latestMessage.deliveryState值有时不对; ===== SDK内部细节调整 ===== - 发送附件类消息,如果附件发送失败,这条消息将设置为失败状态; - 拨打实时语音,如果对方不在线,回调返回不在线的error; ===== SDK性能优化 ===== - 实时语音通话接通概率; - 从数据库load conversation的速度; ===== 新功能大放送 ===== 1. 自定义是否关闭打印的log,不能关闭log写入文件,目前我们需要log文件定位问题,望见谅。 sdk中相关接口: /*! @method @brief 初始化SDK @discussion 失败返回EMError,成功返回nil @param anAppKey 申请应用时的appkey @param anAPNSCertName 需要使用的APNS证书名字(需要与后台上传时的APNS证书名字相同, 客户端打包时的证书, 需要与服务器后台的证书一一对应) @param anOtherConfig 其他初始化配置。目前支持自定义 1、是否打印Console Log(对应key为kSDKConfigEnableConsoleLogger) @result 初始化是否成功 */ - (EMError *)registerSDKWithAppKey:(NSString *)anAppKey apnsCertName:(NSString *)anAPNSCertName otherConfig:(NSDictionary *)anOtherConfig; demo中使用示例: AppDelegate+EaseMob.m 2. 添加DNS解析功能 添加理由:有些app出现过连我们的域名解析不出来的,这个好像跟区域有关系。直接使用ip一般情况下应该是会连上的,不排除特殊的可能性。 sdk中相关接口 /*! @property @brief 是否使用ip @discussion */ @property (nonatomic) BOOL isUseIp; ===== new api ===== EaseMob 添加理由:用户自定义是否打印log /*! @method @brief 初始化SDK @discussion 失败返回EMError,成功返回nil @param anAppKey 申请应用时的appkey @param anAPNSCertName 需要使用的APNS证书名字(需要与后台上传时的APNS证书名字相同, 客户端打包时的证书, 需要与服务器后台的证书一一对应) @param anOtherConfig 其他初始化配置。目前支持自定义 1、是否打印Console Log(对应key为kSDKConfigEnableConsoleLogger) @result 初始化是否成功 */ - (EMError *)registerSDKWithAppKey:(NSString *)anAppKey apnsCertName:(NSString *)anAPNSCertName otherConfig:(NSDictionary *)anOtherConfig; EMChatManagerChatDelegate /*! @method @brief 收到发送消错误的回调 @param messageId 消息Id @param conversationChatter 会话的username/groupId @param error 错误信息 */ - (void)didReceiveMessageId:(NSString *)messageId chatter:(NSString *)conversationChatter error:(EMError *)error;