![](/img/trans.png)
[英]how ot get lastactivity using openfire server and asmack in android
[英]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.