簡體   English   中英

如何使用smack庫從ejbbered服務器獲取LastActivity?

[英]How To get LastActivity from ejbbered server using smack library?

我發送以下請求,使用Android中的smack庫從ejabbered服務器獲取以下用戶的LastActivity(上次看到的狀態)。

try {
    Packet pk = new Packet() {

        @Override
        public String toXML() {
            // TODO Auto-generated method stub
            return "<iq from='" + Utils.createJabberUserIdByUserId(me.getUserId()) + "'" + " id='last1' "
                    + " to='" + Utils.createJabberUserIdByUserId(friendId) + "' " + " type='get'> "
                    + "<query xmlns='jabber:iq:last'/>" + "</iq>";
        }
    };
    ConnectionManager.getInstance().getXmppConnection().sendPacket(pk);
} catch (Exception e) {
    // TODO: handle exception
}

我從服務器得到的結果是:

 <iq from="272@jabber.com">
     id="last1"
     to="274@jabber.com/64faf3314bee33c4" 
     type="result"
 </iq>

但結果應該是這樣的:

<iq from='272@jabber.com' 
    id='last1'
    to='274@jabber.com/64faf3314bee33c4'
    type='result'>
  <query xmlns='jabber:iq:last' seconds='903'/>
</iq>

我究竟做錯了什么? 請幫忙。

通常表示沒有query / jabber:iq:last提供者jabber:iq:last extension,如果你沒有在Smack中獲得IQ的子XML。 您必須向提供者管理器注冊提供者。

順便說一句,我建議使用官方的aSmack版本 ,這將自動完成。

您可以使用Smack的方法根據上一個活動獲取用戶的最后時間戳。 嘗試這個:

LastActivityManager lastactivity = 
LastActivityManager.getInstanceFor(MyXMPPconnection);
LastActivity result = lastactivity.getLastActivity(JID); // user jid
Log.d("Last seen",result.lastActivity"); 

在log-cat中打印一個長號。 您可以將其轉換為年,月,日,小時等。 您可以通過以下方式獲得確切的時間戳:

long current-millis = System.currentTimeMillis() - result.lastactivity;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM