李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档

时间:2023-01-12 22:25:02

李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档

SDK 2.x 至 3.0 升级指南


环信 SDK 3.0 升级文档

3.0 中的核心类为 EMClient 类,通过 EMClient 类可以获取到 chatManager、groupManager、contactManager、roomManager对象。原来 2.0 版本的 SDK 很多方法提供了同步、异步回调、异步(block)三种方法,3.0 版只提供同步方法(async开头的方法为异步方法)。

例如:

//2.0版本登录方法,提供了同步、异步、异步block三种方法
- (NSDictionary *)loginWithUsername:(NSString *)username
password:(NSString *)password
error:(EMError **)pError;
- (void)asyncLoginWithUsername:(NSString *)username
password:(NSString *)password;
 
- (void)asyncLoginWithUsername:(NSString *)username
password:(NSString *)password
completion:(void (^)(NSDictionary *loginInfo, EMError *error))completion
onQueue:(dispatch_queue_t)aQueue;
//3.0版本,网络请求的方法只提供了同步方法
- (EMError *)loginWithUsername:(NSString *)aUsername
password:(NSString *)aPassword;

注册回调,3.0 SDK 对功能进行了模块化,将不同功能回调封装到不同模块。

//2.0版本回调注册
[[EaseMob sharedInstance].chatManager addDelegate:self delegateQueue:nil];
//3.0版本回调注册需要分模块注册
[[EMClient sharedClient] addDelegate:self delegateQueue:nil];//登录相关的回调
[[EMClient sharedClient].groupManager addDelegate:self delegateQueue:nil];//群组回调
[[EMClient sharedClient].contactManager addDelegate:self delegateQueue:nil];//联系人回调
[[EMClient sharedClient].roomManager addDelegate:self delegateQueue:nil];//聊天室回调
[[EMClient sharedClient].chatManager addDelegate:self delegateQueue:nil];//消息回调

使用升级替换脚本

3.0 升级辅助工具(替换枚举、属性、方法名称等):

python EMReplace.py replacePath

xcode 编译提示工具:

//1. Xcode->build Phases
//2. 添加一个新的Run Script
//3. 填写脚本:python ${路径}/EMChecker.py
//编译运行会有提示

代码升级替换文档

3.0 SDK 大部分代码与 2.0 SDK 比较,逻辑没有变化,为了统一修改了名称。2.0 版本提供的异步方法,对应的回调 3.0 不再支持(注意:3.0 只提供同步方法)。

入口的变化,2.0 版本 [EaseMob shareInstance] → 3.0 版本 [EMClient sharedClient]。

2.0版本 3.0版本
登录相关
2.0版本,当前登录的用户信息
[[[EaseMob sharedInstance] chatManager] loginInfo]
3.0版本,只提供当前登录账号
[[EMClient sharedClient] currentUsername]
2.0版本,当前是否已有登录的用户
[[[EaseMob sharedInstance] chatManager] isLoggedIn]
3.0版本
[[EMClient sharedClient] isLoggedIn]
2.0版本,是否连上聊天服务器
[[[EaseMob sharedInstance] chatManager] isConnected]
3.0版本
[[EMClient sharedClient] isConnected]
2.0版本,将数据库数据导入新的数据库
[[EaseMob sharedInstance].chatManager importDataToNewDatabase]
3.0版本,升级到SDK 3.0版本需要调用该方法,开发者需要等该方法执行完后再进行数据库查询操作
[[EMClient sharedClient] dataMigrationTo3]
2.0版本,从数据库获取信息
[[EaseMob sharedInstance].chatManager loadDataFromDatabase]
3.0版本不再支持
2.0版本,在聊天服务器上创建账号
- (BOOL)registerNewAccount:(NSString *)username password:(NSString *)password error:(EMError **)pError;
- (void)asyncRegisterNewAccount:(NSString *)username password:(NSString *)password;
- (void)asyncRegisterNewAccount:(NSString *)username password:(NSString *)password withCompletion:(void (^)(NSString *username,NSString *password,EMError *error))completion onQueue:(dispatch_queue_t)aQueue;
3.0版本,只提供同步方法
EMError *error = [[EMClient sharedClient] registerWithUsername:@"username"password:@"password"]
2.0版本,使用用户名密码登录聊天服务器
- (NSDictionary *)loginWithUsername:(NSString *)username password:(NSString *)password error:(EMError **)pError
- (void)asyncLoginWithUsername:(NSString *)username password:(NSString *)password;
- (void)asyncLoginWithUsername:(NSString *)username password:(NSString *)password completion:(void (^)(NSDictionary *loginInfo, EMError *error))completion onQueue:(dispatch_queue_t)aQueue
3.0版本,只提供同步方法
- (EMError *)loginWithUsername:(NSString *)aUsername password:(NSString *)aPassword
//调用方法:EMError *error = [[EMClient sharedClient] loginWithUsername:@"username" password:@"password"]
2.0版本,注销当前登录用户
- (NSDictionary *)logoffWithUnbindDeviceToken:(BOOL)isUnbind error:(EMError **)pError;
- (void)asyncLogoffWithUnbindDeviceToken:(BOOL)isUnbind;
- (void)asyncLogoffWithUnbindDeviceToken:(BOOL)isUnbind completion:(void (^)(NSDictionary *info, EMError *error))completion onQueue:(dispatch_queue_t)aQueue;
3.0版本,只提供同步方法
- (EMError *)logout:(BOOL)bIsUnbindDeviceToken;
//调用方法:EMError *error = [[EMClient sharedClient] logout:NO];
登录回调
2.0版本->EMChatManagerLoginDelegate 3.0版本->EMClientDelegate
用户将要进行自动登录操作的回调
- (void)willAutoLoginWithInfo:(NSDictionary *)loginInfo error:(EMError *)error;
用户登录后的回调
- (void)didLoginWithInfo:(NSDictionary *)loginInfo error:(EMError *)error;
用户注销后的回调
- (void)didLogoffWithError:(EMError *)error;
注册新用户后的回调
- (void)didRegisterNewAccount:(NSString *)username password:(NSString *)password error:(EMError *)error;
3.0版本不再支持的回调
2.0版本,用户自动登录完成后的回调
- (void)didAutoLoginWithInfo:(NSDictionary *)loginInfo error:(EMError *)error;
3.0版本使用EMClientDelegate
- (void)didAutoLoginWithError:(EMError *)error;
2.0版本,当前登录账号在其它设备登录时的通知回调
- (void)didLoginFromOtherDevice;
2.0版本,当前登录账号已经被从服务器端删除
- (void)didRemovedFromServer;
3.0版本使用EMClientDelegate,回调行为与2.0保持一致
2.0版本,将要发起自动重连操作的回调
- (void)willAutoReconnect;
自动重连操作完成后的回调
- (void)didAutoReconnectFinishedWithError:(NSError *)error;
3.0版本使用EMClientDelegate
- (void)didConnectionStateChanged:(EMConnectionState)connectionState;
消息相关
2.0版本IChatManagerChat 3.0版本IEMChatManager
2.0版本,发送消息的方法
- (EMMessage *)sendMessage:(EMMessage *)message progress:(id)progress error:(EMError **)pError;
- (EMMessage *)asyncSendMessage:(EMMessage *)message progress:(id)progress;
- (EMMessage *)asyncSendMessage:(EMMessage *)message progress:(id)progress prepare:(void (^)(EMMessage *message, EMError *error))prepare onQueue:(dispatch_queue_t)aPrepareQueue completion:(void (^)(EMMessage *message, EMError *error))completion onQueue:(dispatch_queue_t)aCompletionQueue;
3.0版本
- (void)asyncSendMessage:(EMMessage *)aMessage progress:(void (^)(int progress))aProgress completion:(void (^)(EMMessage *message, EMError *error))aProgressCompletion;
//调用: //[[EMClient sharedClient].chatManager asyncSendMessage:message progress:nil completion:^(EMMessage *aMessage, EMError *aError) {}];
2.0版本,发送一个"已读消息"(在UI上显示了或者阅后即焚的销毁的时候发送)的回执到服务器
- (void)sendReadAckForMessage:(EMMessage *)message;
3.0版本
- (void)asyncSendReadAckForMessage:(EMMessage *)message;
//调用: //[[EMClient sharedClient].chatManager asyncSendReadAckForMessage:message];
2.0版本,重新发送某一条消息
- (EMMessage *)resendMessage:(EMMessage *)message progress:(id)progress error:(EMError **)pError;
- (EMMessage *)asyncResendMessage:(EMMessage *)message progress:(id)progress;
- (EMMessage *)asyncResendMessage:(EMMessage *)message progress:(id)progress prepare:(void (^)(EMMessage *message, EMError *error))prepare onQueue:(dispatch_queue_t)aPrepareQueue completion:(void (^)(EMMessage *message, EMError *error))completion onQueue:(dispatch_queue_t)aCompletionQueue;
3.0版本
*/ - (void)asyncResendMessage:(EMMessage *)aMessage progress:(void (^)(int progress))aProgressCompletion completion:(void (^)(EMMessage *message, EMError *error))aCompletion;
//调用: //[[EMClient sharedClient].chatManager asyncResendMessage:message progress:nil completion:^(EMMessage *aMessage, EMError *aError) {}];
聊天室相关
2.0版本 3.0版本
2.0版本,聊天室的主题
@property (nonatomic, strong, readonly) NSString *chatroomSubject;
3.0版本
@property (nonatomic, copy, readonly) NSString *subject;
2.0版本,聊天室的描述
@property (nonatomic, strong, readonly) NSString *chatroomDescription;
3.0版本
@property (nonatomic, copy, readonly) NSString *description;
2.0版本,聊天室的最大人数
@property (nonatomic, readonly) NSInteger chatroomMaxOccupantsCount;
3.0版本
@property (nonatomic, readonly) NSInteger maxOccupantsCount;
群组相关
2.0版本 3.0版本
2.0版本,从数据库获取与登录者相关的群组
- (NSArray *)loadAllMyGroupsFromDatabaseWithAppend2Chat:(BOOL)append2Chat;
3.0版本
- (NSArray *)loadAllMyGroupsFromDB;
//调用:[[EMClient sharedClient].groupManager loadAllMyGroupsFromDB];
2.0版本,创建群组
- (EMGroup *)createGroupWithSubject:(NSString *)subject description:(NSString *)description invitees:(NSArray *)invitees initialWelcomeMessage:(NSString *)welcomeMessage styleSetting:(EMGroupStyleSetting *)styleSetting error:(EMError **)pError;
- (void)asyncCreateGroupWithSubject:(NSString *)subject description:(NSString *)description invitees:(NSArray *)invitees initialWelcomeMessage:(NSString *)welcomeMessage styleSetting:(EMGroupStyleSetting *)styleSetting;
- (void)asyncCreateGroupWithSubject:(NSString *)subject description:(NSString *)description invitees:(NSArray *)invitees initialWelcomeMessage:(NSString *)welcomeMessage styleSetting:(EMGroupStyleSetting *)styleSetting completion:(void (^)(EMGroup *group, EMError *error))completion onQueue:(dispatch_queue_t)aQueue;
3.0版本
- (EMGroup *)createGroupWithSubject:(NSString *)aSubject description:(NSString *)aDescription invitees:(NSArray *)aInvitees message:(NSString *)aMessage setting:(EMGroupOptions *)aSetting error:(EMError **)pError;
//调用: //EMError *error = nil; //EMGroup *group = [[EMClient sharedClient].groupManager createGroupWithSubject:@"subject" description:@"desc" invitees:source message:@"message" setting:setting error:&error];
2.0版本,创建匿名群组 3.0版本不再提供
2.0版本,加入一个匿名公开群组 3.0版本不再提供
2.0版本,退出群组(需要非owner的权限)
- (EMGroup *)leaveGroup:(NSString *)groupId error:(EMError **)pError;
- (void)asyncLeaveGroup:(NSString *)groupId;
- (void)asyncLeaveGroup:(NSString *)groupId completion:(void (^)(EMGroup *group, EMGroupLeaveReason reason, EMError *error))completion onQueue:(dispatch_queue_t)aQueue;
3.0版本
- (EMGroup *)leaveGroup:(NSString *)aGroupId error:(EMError **)pError;
//调用: //EMError *error = nil; //[[EMClient sharedClient].groupManager leaveGroup:@"groupId" error:&error];
2.0版本,解散群组,需要owner权限
- (EMGroup *)destroyGroup:(NSString *)groupId error:(EMError **)pError;
- (void)asyncDestroyGroup:(NSString *)groupId;
- (void)asyncDestroyGroup:(NSString *)groupId completion:(void (^)(EMGroup *group, EMGroupLeaveReason reason, EMError *error))completion onQueue:(dispatch_queue_t)aQueue;
3.0版本
- (EMGroup *)destroyGroup:(NSString *)aGroupId error:(EMError **)pError;
//调用: //EMError *error = nil; //[[EMClient sharedClient].groupManager destroyGroup:@"groupId" error:&error];

李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档的更多相关文章

  1. 李洪强iOS开发之添加手势

    李洪强iOS开发之添加手势 02 - 添加手势

  2. 李洪强iOS开发本人集成环信的经验总结_01环信SDK的导入

    李洪强iOS开发本人集成环信的经验总结_01环信SDK的导入 01 - 直接在项目中导入SDK和一些静态库 这个时候,没有错误的编译没有错误的话,就说明SDK已经配置成功 还有一种方法是用cocoap ...

  3. 李洪强iOS开发之-环信05_EaseUI 使用指南

    李洪强iOS开发之-环信05_EaseUI 使用指南 EaseUI 使用指南 简介 EaseUI 封装了 IM 功能常用的控件(如聊天会话.会话列表.联系人列表).旨在帮助开发者快速集成环信 SDK. ...

  4. 李洪强iOS开发之-环信04_消息

    李洪强iOS开发之-环信04_消息 消息:IM 交互实体,在 SDK 中对应的类型是 EMMessage.EMMessage 由 EMMessageBody 组成. 构造消息   构造文字消息 EMT ...

  5. 李洪强iOS开发之-环信03_集成 SDK 基础功能

    李洪强iOS开发之-环信03_集成 SDK 基础功能 集成 SDK 基础功能 在您阅读此文档时,我们假定您已经具备了基础的 iOS 应用开发经验,并能够理解相关基础概念. SDK 同步/异步方法区分 ...

  6. 李洪强iOS开发之-环信02.2_环信官网下载环信 SDK

    李洪强iOS开发之-环信02.2_环信官网下载环信 SDK 移动客服即时通讯云 iOS SDK 当前版本:V3.1.4 2016-07-08 [ 版本历史 ] | 开发指南 | 知识库 | Demo源 ...

  7. 李洪强iOS开发之-环信02_iOS SDK 介绍及导入

    李洪强iOS开发之-环信02_iOS SDK 介绍及导入 iOS SDK 介绍及导入 iOS SDK 介绍 环信 SDK 为用户开发 IM 相关的应用提供的一套完善的开发框架.包括以下几个部分: SD ...

  8. 李洪强iOS开发之-环信01_iOS SDK 前的准备工作

    李洪强iOS开发之-环信01_iOS SDK 前的准备工作 1.1_注册环信开发者账号并创建后台应用 详细步骤:  注册并创建应用 注册环信开发者账号 第 1 步:在环信官网上点击“即时通讯云”,并点 ...

  9. 李洪强iOS开发本人集成环信的经验总结_03_注册

    李洪强iOS开发本人集成环信的经验总结_03_注册 环信一共提供了三种注册的方法:  01 同步注册:  02 异步注册:  03 - 使用代理回调进行注册,但是3.0没有了,3.0之前有  调用注册 ...

随机推荐

  1. 盲注----基于布尔的SQL盲注

    构造逻辑判断常用字符串截取函数http://www.cnblogs.com/yyccww/p/6054569.html常用函数left(a,b)  从左侧截取a的前b位right(a,b)  从右侧截 ...

  2. ABAP 单位转换函数

    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'         EXPORTING           input                = wa_all-btg ...

  3. Selenium2Library系列 keywords 之 _SelectElementKeywords 之_get_select_list_options(self, select_list_or_locator)

    def _get_select_list_options(self, select_list_or_locator): if isinstance(select_list_or_locator, Se ...

  4. 【转】漫谈linux文件IO--io流程讲的很清楚

    [转]漫谈linux文件IO--io流程讲的很清楚 这篇文章写的比较全面,也浅显易懂,备份下.转载自:http://blog.chinaunix.net/uid-27105712-id-3270102 ...

  5. OJ随笔——【1102-海明距离】——位运算

    题目如下: Description 海明距离是在指二进制情况下,一个整数变成另外一个整数需要翻转的位数.比如2转换到3需要翻转1位,所以2到3的海明距离是1.给你两个正整数x和y,(x,y<=1 ...

  6. Java中获取文件大小的正确方法

    本文出处:http://blog.csdn.net/djy1992/article/details/51146837,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在原始 ...

  7. php数组实现根据某个键值将相同键值合并生成新二维数组的方法

    $infos = array( array( 'a' => 36, 'b' => 'xa', 'c' => '2015-08-28 00:00:00', 'd' => '201 ...

  8. 关于&dollar;ORACLE&lowbar;HOME&sol;bin&sol;oracle文件属性

    OS:AIX 7.1DB:12.1.0.2.0 RAC oracle@DB01:/home/oracle>sqlplus / as sysdba SQL*Plus: Release 12.1.0 ...

  9. 如何实现织梦dedecms表单提交时发送邮箱功能【已解决】

    我们通过织梦系统制作网站时,很多客户需要有在线留言功能,这时就会用到自定义表单.但是很多用户觉得经常登陆后台查看留言信息太麻烦了,于是想能否在提交留言是直接把内容发送到指定邮箱.网站经过测试终于实现了 ...

  10. 尚硅谷springboot学习17-SpringBoot日志

    SpringBoot使用它来做日志功能: <dependency> <groupId>org.springframework.boot</groupId> < ...