android单点登陆问题

在用户登陆的时候 调用这个方法
假设MyUser.getCurrentUser().getUsername()为123456
AVIMClient currentClient = AVIMClient.getInstance(MyUser.getCurrentUser().getUsername(),"Mobile");
// 第二个参数:登录标记 Tag
currentClient.open(new AVIMClientCallback() {
@Override
public void done(AVIMClient avimClient, AVIMException e) {
if(e == null){
// 与云端建立连接成功
//这里调用成功,回调,avimClient.getClientId()=123456

                }
            }
        });

然后另一台设备登陆同一账号
public class AVImClientManager extends AVIMClientEventHandler {
@Override
public void onClientOffline(AVIMClient avimClient, int i) {
if (i == 4111) {
//这里收到另一台设备登陆的消息,但是无法正常关闭
//avimClient.getClientId()=123456

        avimClient.close(new AVIMClientCallback() {
            @Override
            public void done(AVIMClient avimClient, AVIMException e) {
                if (e==null){
                  //没有执行
                }else {

------------------执行这里 这里报错//提示Please call AVIMClient.open() first

                 //avimClient.getClientId()=123456
                }
            }
        }); 
}

}

你好,「另一台设备登陆同一账号」时,是否调用了 AVIMClient.open()?

你好。感谢您的回复。
每次登陆成功后都会调用 AVIMClient.open()
也就是每个设备每次登陆都会调用AVIMClient.open()

我这边无法复现这个问题。是否可以稳定复现此问题的 Demo?我来排查原因。

点我头像发私信给我。

您好。我想我知道问题的原因了。单点登陆的时候两台设备头登陆了同一个账号,之前登陆的账号会被自动被后面登陆的账号踢下AVIMClient,所有在实现被踢下的事件中(onClientOffline(i==4111的事件))如果调用AVIMClient.close()就会出现 Please call AVIMClient.open() first。
请回复对不对。谢谢了

对的。被踢下线,就不用再调用 AVIMClient.close() 了。

好的。谢谢啦。。。