iOS即时通讯(六)- 重连与自动登录

集成重连功能

环信在断开连接时,会自动重连,自动重连操作完成后回回调。有以下几种情况,会引发重连:
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];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,731评论 0 15
  • 六.集成SDK基础功能 (仔细研习,结合实际操作) 由于环信官方文档比较详细,因此,根据项目需求,把用到的方法记录...
    夜空已沉寂阅读 6,464评论 0 7
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 10,652评论 1 23
  • 一:效果图 支持语音,图片以及emoji 和文字.在这就是未读消息显示以及自动登录.再者就是从数据库中消息的读取....
    西风颂阅读 11,793评论 18 119
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 5,182评论 0 1