logo
当前页

离线登录

功能简介

离线登录,是指应用被清理后,用户再次点击应用图标启动应用时,在无网络、未登录成功的状态下直接访问用户本地 SDK 数据,常用于自动登录 App。

说明

用户只能使用上一次成功登录的 UserID 进行离线登录;否则,登录不会成功。

技术原理

当调用接口离线登录时,ZIM SDK 会进行校验(UseID 校验;如果使用 token 方式登录,还会校验 token 有效期)。校验成功后,SDK 会先行返回登陆成功的回调,允许用户查询本地数据,而 SDK 内部会自动尝试连接后台服务。

实现流程

1 离线登录

在无网络且应用已被清理的情况下,可以调用 loginWithUserID 接口时,ZIMLoginConfig 中的 isOfflineLogin 传入 YES,实现使用上一次的用户信息离线登录 App。当通过 ZIMLoggedInCallback 回调确定登录成功后,即可访问本地 SDK 数据。

说明

建议您缓存每次登录使用的用户信息。当 App 打开时,读取缓存,实现以下逻辑:

  • 如果判断用户不是使用上一次在线登录的 UserID ,此时 isOfflineLogin 应为 NO,此时离线登录会失败,不允许用户访问该 UserID 的本地 SDK 数据。
  • 如果用户使用上一次在线登录的 UserID,为了实现自动登录、加速进入 App 主页以及提前渲染 UI,isOfflineLogin 应为 YES,实现离线登录。

Login 接口定义

示例代码
ZIMLoginConfig *config = [[ZIMLoginConfig alloc] init];
config.userName = @"usserName";
// 使用 AppSign 鉴权时,此参数不填
config.token = @"token";
config.isOfflineLogin = YES;
[[ZIM getInstance] loginWithUserID:@"userID" config:config callback:^(ZIMError * _Nonnull errorInfo) {
    if(errorInfo.code == ZIMErrorCodeSuccess){
        // 离线登录成功,可以查询 SDK 本地数据
    }
}];
1
Copied!

2 访问本地 SDK 数据

离线登录成功后,用户可以在断网时实现以下操作(截至 2.15.0 版本):

分类接口
用户相关
群组相关
消息相关
呼叫邀请相关queryCallInvitationListWithConfig
会话相关
缓存管理

3 监听事件

用户可以监听 connectionStateChanged 事件通知获取 SDK 与 ZIM 后台服务的连接情况。

当离线登录成功时,connectionStateChanged 返回 ZIMConnectionState 为 Connecting(枚举值为 1)。

当用户网络恢复连接,ZIM SDK 内部自动连接 ZIM 后台服务成功后,connectionStateChanged 返回 ZIMConnectionState 为 Connected(枚举值为 2)时,ZIM SDK 才允许调用强依赖网络的接口,并同步后台数据。

Previous

多端登录

Next

黑名单管理