00.参考官方文档
1.导入环信3.x
pod 'Hyphenate_CN', '~> 3.1.5.1'
2.SDK主要框架:
EMClient: 是 SDK 的入口,主要完成登录、退出、连接管理等功能。也是获取其他模块的入口。
EMChatManager: 管理消息的收发,完成会话管理等功能。
EMContactManager: 负责好友的添加删除,黑名单的管理。
EMGroupManager: 负责群组的管理,创建、删除群组,管理群组成员等功能。
EMChatroomManager: 负责聊天室的管理。
3.从官网下载下来的ios_IM_sdk_V3.1.5文件中含有五个部分:
- HyphenateSDK 开发使用(不包含实时通话功能)
- HyphenateFullSDK 开发使用(包含实时通话功能)
- doc SDK 相关API文档
- ChatUIDemo3.0 工程源码
- EaseUI 工程源码
- chatdemo-ui-3.x.x.ipa 打包的 ipa
4.环信基础使用
注册
注册模式分两种,开放注册和授权注册。通常来说,客户端不管注册,注册交给服务器来做,客户端只需要在自己登录自己服务器后,再暗地里登录环信的招行就行了。
只有开放注册时,才可以客户端注册。开放注册是为了测试使用,正式环境中不推荐使用该方式注册环信账号。
授权注册的流程应该是您服务器通过环信提供的 REST API 注册,之后保存到您的服务器或返回给客户端。
EMError *error = [[EMClient sharedClient] registerWithUsername:@"8001" password:@"111111"];
if (error==nil) {
NSLog(@"注册成功");
}
登录
登录:调用 SDK 的登录接口进行的操作。
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error) {
NSLog(@"登录成功");
}
自动登录
自动登录:即首次登录成功后,不需要再次调用登录方法,在下次 APP 启动时,SDK 会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息。
SDK 中自动登录属性默认是关闭的,需要您在登录成功后设置,以便您在下次 APP 启动时不需要再次调用环信登录,并且能在没有网的情况下得到会话列表。
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error)
{
[[EMClient sharedClient].options setIsAutoLogin:YES];
}
自动登录在以下几种情况下会被取消:
- 用户调用了 SDK 的登出动作;
- 用户在别的设备上更改了密码,导致此设备上自动登录失败;
- 用户的账号被从服务器端删除;
- 用户从另一个设备登录,把当前设备上登录的用户踢出。
所以,在您调用登录方法前,应该先判断是否设置了自动登录,如果设置了,则不需要您再调用。
BOOL isAutoLogin = [EMClient sharedClient].options.isAutoLogin;
if (!isAutoLogin) {
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
}
重连
当掉线时,iOS SDK 会自动重连,只需要监听重连相关的回调,无需进行任何操作。
/*!
* SDK连接服务器的状态变化时会接收到该回调
*
* 有以下几种情况,会引起该方法的调用:
* 1. 登录成功后,手机无法上网时,会调用该回调
* 2. 登录成功后,网络状态变化时,会调用该回调
*
* @param aConnectionState 当前状态
*/
- (void)didConnectionStateChanged:(EMConnectionState)aConnectionState;
退出登录
退出登录分两种类型:主动退出登录和被动退出登录。
- 主动退出登录:调用 SDK 的退出接口;
- 被动退出登录:1. 正在登录的账号在另一台设备上登录;2. 正在登录的账号被从服务器端删除。
主动退出登录
logout:YES:是否解除 device token 的绑定,在被动退出时 SDK 内部处理,不需要调用退出方法。
EMError *error = [[EMClient sharedClient] logout:YES];
if (!error) {
NSLog(@"退出成功");
}
被动退出登录
使用回调方法监听被动退出登录。
/*!
* 当前登录账号在其它设备登录时会接收到该回调
*/
- (void)didLoginFromOtherDevice;
/*!
* 当前登录账号已经被从服务器端删除时会收到该回调
*/
- (void)didRemovedFromServer;