默认
发表评论 8
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 怎么获取到MobileIMSDK用户登录成功的返回值问题
现在应用中集成了MobileIMSDK,用户登录时,首先登录的是自己服务器,登录成功后,登录IM服务器,但IM服务器是通过异步回调返回结果的。于是我的问题就出来了。

1.代码表示大概意思。
就是我登录的时候,需要能够明确的返回一个成功或失败,但IM的登录是异步的,每次等login()方法返回了false,然后才执行到onLoginSucessObserver里面,这样我就得不到IM的登录状态。

public boolean login(){
   boolean status = true;// 自己的接口服务器端登录成功
    boolean loginStatus = false;
   if(status) {
        onLoginSucessObserver = new Observer() {
            @Override
            public void update(Observable observable, Object data) {
                                                
                //服务端返回的登录结果
                int code = (Integer) data;
                    if (code == 0) {
                        loginStatus = true;
                    } else {
                        loginStatus = false;
                    }
                }
            };
        doLoginIMServer(username, password);

    }

    return loginStatus
}

2.问题是,怎么在调用或执行login方法的时候,能够准确的返回IM的回调onLoginSucessObserver的登录结果?

请大神指教,现在每次登录的时候,都是false,急急急!!!
谢谢!!!


即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK
上一篇:[已回复] 模拟器上运行android demo一段时间后客户端收不到udp消息下一篇:[已解决] 修改MobileIMSDK代码后,Android客户端接收不到服务端下发的响应
推荐方案
评论 8
异步编程模型都这样的,你看看MobileIMSDK官方demo,异步登际发出和结果的接收都给你写好了,看一下就明白了。

原理就是分两步:
1)im连接请求发出后此步完成,界面可以显一个转动的菊花并保持;
2)通过观察者等待异步的连接结果(就像demo里为你演示的一样),收到登陆结果后,可以去掉菊花并跳转到你主界面。
引用:JackJiang 发表于 2018-08-02 18:42
异步编程模型都这样的,你看看MobileIMSDK官方demo,异步登际发出和结果的接收都给你写好了,看一下就明白 ...

你说的这个我知道,我现在做的就是这样的。

不过我的场景有点特殊,我是有自己服务器登录,然后紧接着MobileIMSDK登录,也是有加载动画的。但我的现在就是把这些封装起来了,给别人的APP调用,这样就是别人的APP的登录成功以后,调用我的login(服务器登录和MobileIMSDK登录)接口,需要知道我的服务器登录和MobileIMSDK登录的结果码。

所以是说别人APP那里需要知道我的明确的登录返回结果。
引用:JackJiang 发表于 2018-08-02 18:42
异步编程模型都这样的,你看看MobileIMSDK官方demo,异步登际发出和结果的接收都给你写好了,看一下就明白 ...

我想了想,我也可以像你说的这样类似处理。
别人调用我的登录接口时,就显示加载动画,然后SDK返回时,取消加载动画,应该差不多
引用:dzl2005328 发表于 2018-08-03 10:23
你说的这个我知道,我现在做的就是这样的。

不过我的场景有点特殊,我是有自己服务器登录,然后紧接着 ...

看了你描述了这么多,我想你可能是不知道如何设置你这个onLoginSucessObserver观察者,并接收异步结果。

你可以在MobileIMSDK的Android官方demo里的LoginActivity.java类里,找到以下代码行,就是这样设置:
[已回复] 怎么获取到MobileIMSDK用户登录成功的返回值问题_WX20180803-103957@2x.jpg
引用:JackJiang 发表于 2018-08-03 10:43
看了你描述了这么多,我想你可能是不知道如何设置你这个onLoginSucessObserver观察者,并接收异步结果。
...

我感觉讲不清了

我自己的APP现在登录一切正常,就是像你截图的那种使用方式的。

只不过现在把我的APP做成SDK给别人的APP使用,别人的APP也有登录操作,他登录时希望我能直接返回我APP里面的结果码给它,但因为MobileIMSDK是异步的,我不好返回给它。
引用:dzl2005328 发表于 2018-08-03 11:19
我感觉讲不清了。

我自己的APP现在登录一切正常,就是像你截图的那种使用方式的。

异步的体验都是这样的,没有更好的办法。否则我写的demo里可以更简单,能往 简单写,我一定不会写复杂的
引用:JackJiang 发表于 2018-08-03 11:21
异步的体验都是这样的,没有更好的办法。否则我写的demo里可以更简单,能往 简单写,我一定不会写复杂的

好的,明白,谢谢了
引用:dzl2005328 发表于 2018-08-03 11:39
好的,明白,谢谢了

打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部