李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档
李洪强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升级文档的更多相关文章
- 李洪强iOS开发之添加手势
李洪强iOS开发之添加手势 02 - 添加手势
- 李洪强iOS开发本人集成环信的经验总结_01环信SDK的导入
李洪强iOS开发本人集成环信的经验总结_01环信SDK的导入 01 - 直接在项目中导入SDK和一些静态库 这个时候,没有错误的编译没有错误的话,就说明SDK已经配置成功 还有一种方法是用cocoap ...
- 李洪强iOS开发之-环信05_EaseUI 使用指南
李洪强iOS开发之-环信05_EaseUI 使用指南 EaseUI 使用指南 简介 EaseUI 封装了 IM 功能常用的控件(如聊天会话.会话列表.联系人列表).旨在帮助开发者快速集成环信 SDK. ...
- 李洪强iOS开发之-环信04_消息
李洪强iOS开发之-环信04_消息 消息:IM 交互实体,在 SDK 中对应的类型是 EMMessage.EMMessage 由 EMMessageBody 组成. 构造消息 构造文字消息 EMT ...
- 李洪强iOS开发之-环信03_集成 SDK 基础功能
李洪强iOS开发之-环信03_集成 SDK 基础功能 集成 SDK 基础功能 在您阅读此文档时,我们假定您已经具备了基础的 iOS 应用开发经验,并能够理解相关基础概念. SDK 同步/异步方法区分 ...
- 李洪强iOS开发之-环信02.2_环信官网下载环信 SDK
李洪强iOS开发之-环信02.2_环信官网下载环信 SDK 移动客服即时通讯云 iOS SDK 当前版本:V3.1.4 2016-07-08 [ 版本历史 ] | 开发指南 | 知识库 | Demo源 ...
- 李洪强iOS开发之-环信02_iOS SDK 介绍及导入
李洪强iOS开发之-环信02_iOS SDK 介绍及导入 iOS SDK 介绍及导入 iOS SDK 介绍 环信 SDK 为用户开发 IM 相关的应用提供的一套完善的开发框架.包括以下几个部分: SD ...
- 李洪强iOS开发之-环信01_iOS SDK 前的准备工作
李洪强iOS开发之-环信01_iOS SDK 前的准备工作 1.1_注册环信开发者账号并创建后台应用 详细步骤: 注册并创建应用 注册环信开发者账号 第 1 步:在环信官网上点击“即时通讯云”,并点 ...
- 李洪强iOS开发本人集成环信的经验总结_03_注册
李洪强iOS开发本人集成环信的经验总结_03_注册 环信一共提供了三种注册的方法: 01 同步注册: 02 异步注册: 03 - 使用代理回调进行注册,但是3.0没有了,3.0之前有 调用注册 ...
随机推荐
- selendroid项目实战教程1
selendroid是国内使用非常少的框架.资料也少.刚好公司项目用到,给大家分享下,技术不太行,有错误还望指正. 使用selendroid契机,是公司开发的APP,需要大量捕捉Toast信息.公司的 ...
- 推荐几个对Asp.Net开发者比较实用的工具
推荐几个对Asp.Net开发者比较实用的工具.大家有相关工具也可以在评论区留言,一起努力学习. 工具 1.Visual stdio Productivity Power tool:visual std ...
- access应用分享
我最近开发了一个winform项目,用的是access数据库,当开发成功以后,有些电脑上就能正常运行,有些电脑就无法读取数据库文件,刚开始我以为是权限问题,后来我把安装程序卸载了,装在其它盘中(非C盘 ...
- Service层和DTO层的作用
Service层主要提供的几个作用:1.将业务逻辑层进行封装,对外提供业务服务调用.2.通过外观模式,屏蔽业务逻辑内部方法.3.降低业务逻辑层与UI层的依赖,业务逻辑接口或实现的变化不会影像UI层.4 ...
- 大型网站的架构设计问题—-大型高并发高负载网站的系
转载:http://www.cnblogs.com/cxd4321/archive/2010/11/24/1886301.html 随着中国大型IT企业信息化速度的加快,大部分应用的数据量和访问量都急 ...
- MarkDown Pad2的一些用法
一.标题 1.使用命令Ctrl+1 标题一 2.使用文字回车后,加上"-"号,再回车.就有如下的示例: 标题二 注意:减(-)号是用于最近的那一行文字变成标题. 二.背景 例如我要 ...
- UVA 11078 Open Credit System(扫描 维护最大值)
Open Credit System In an open credit system, the students can choose any course they like, but there ...
- OpenCV(7)-图像直方图
直方图定义可参考这里.图像的直方图用来表示图像像素的统计信息,它统计了图像每一个通道(如果是多通道)中,每个像素的个数(比例). 计算直方图 OpenCV提供了直接计算直方图的函数 void calc ...
- 【BZOJ3529】【莫比乌斯反演 + 树状数组】[Sdoi2014]数表
Description 有一张N×m的数表,其第i行第j列(1 < =i < =礼,1 < =j < =m)的数值为 能同时整除i和j的所有自然数之和.给定a,计算数表中不大于 ...
- (转)IOS 学习笔记 2015-03-23 如何获取IOS程序的系统信息
首页 > 程序开发 > 移动开发 > IOS > 正文 iOS 获取手机的型号,系统版本,软件名称,软件版本 -- 个评论 作者:vipa1888 收藏 我要投稿 网上搜索出来 ...