集成重连功能
环信在断开连接时,会自动重连,自动重连操作完成后回回调。有以下几种情况,会引发重连:
1.登录成功后,手机无法上网时,会调用重连回调;
2.登录成功后,网络状态变化时,会调用重连回调。
- 加入重连代码
#pragma mark - 重连
/*!
* SDK连接服务器的状态变化时会接收到该回调
*
* 有以下几种情况,会引起该方法的调用:
* 1. 登录成功后,手机无法上网时,会调用该回调
* 2. 登录成功后,网络状态变化时,会调用该回调
*
* @param aConnectionState 当前状态
*/
- (void)didConnectionStateChanged:(EMConnectionState)aConnectionState {
NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);
}
集成自动登录功能
自动登录:即首次登录成功后,不需要再次调用登录方法,在下次 APP 启动时,SDK 会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息。
SDK 中自动登录属性默认是关闭的,需要您在登录成功后设置,以便您在下次 APP 启动时不需要再次调用环信登录,并且能在没有网的情况下得到会话列表
- 加入自动登录
在登录成功中加入,
#pragma mark - 登录
- (void)em_login {
EMError *error = [[EMClient sharedClient] loginWithUsername:_accountTel.text password:_passwordTel.text];
if (!error) {
NSLog(@"登录成功");
[[EMClient sharedClient].options setIsAutoLogin:YES];
} else {
NSLog(@"error = %@", error);
}
}
自动登录在以下几种情况下会被取消:
1.用户调用了 SDK 的登出动作;
2.用户在别的设备上更改了密码,导致此设备上自动登录失败;
3.用户的账号被从服务器端删除;
4.用户从另一个设备登录,把当前设备上登录的用户踢出。
所以,在您调用登录方法前,应该先判断是否设置了自动登录,如果设置了,则不需要您再调用。
#pragma mark - 登录
- (void)em_login {
BOOL isAutoLogin = [EMClient sharedClient].options.isAutoLogin;
if (!isAutoLogin) {
EMError *error = [[EMClient sharedClient] loginWithUsername:_accountTel.text password:_passwordTel.text];
if (!error) {
NSLog(@"登录成功");
[[EMClient sharedClient].options setIsAutoLogin:YES];
} else {
NSLog(@"error = %@", error);
}
}
}
SDK 中,如果发生自动登录,会有以下回调,
/*!
* 自动登录返回结果
*
* @param aError 错误信息
*/
- (void)didAutoLoginWithError:(EMError *)aError {
NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);
}
添加EMClientDelegate,并添加回调监听代理,
- (void)viewDidLoad {
[super viewDidLoad];
// 添加回调监听代理
[[EMClient sharedClient] addDelegate:self delegateQueue:nil];
}
网友评论