如何在android中使用asmack 4.0.5最后一次看到

时间:2014-11-17 13:55:16

标签: java android xmpp openfire asmack

我正在使用asmack 4.0.5并想要最后一次看到用户。我尝试使用:

LastActivityManager lActivityManager = LastActivityManager.getInstanceFor(mConnection);

try {
        Log.v(TAG,"Last Activity: " + ActivityManager.getLastActivity(pArg0.getFrom()));

    } catch (NoResponseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (XMPPErrorException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (NotConnectedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

但这总是会返回0秒。应该就像应用程序处于后台时那样用户应该显示为离线。用户只有在前台有应用程序才能在线。有人知道如何最后看到用户。

2 个答案:

答案 0 :(得分:0)

当它上线时,应该发送状态为“在线”的数据包,当它离线时发送“离线”(当应用程序进入后台时,发送'离线' )。只有现在服务器才能让别人知道他们问什么。

现在,当A想要知道B的最后一次看到状态并且服务器返回0时,那么根据文档,这意味着,B已经在线.. :)否则它将是经过的时间。请阅读此处了解更多详情。

LastActivityManager Source Docs

Official XEP-0012

答案 1 :(得分:0)

到目前为止,我一直工作到目前为止我看到为了最后一次看到你必须实现xep 92,并确保你的服务器支持this.else使用你的名册的最后一个活动。显示上次看到.. 并保持数据库存储这个...并在存在数据包的帮助下,您可以得到它。或者修改您的消息包,以便在他/她上线时发送名册的存在并在他/她离线时发送其他人。并且花时间与这个数据包。当你接收(你)收到这个数据包然后更新Db。 希望表明你可以理解。:)