0
我的聊天應用程序有一個過程來設置用戶即存在/模式狀態 - 在線,離線,隱身,離開等我使用下面的代碼這樣做: -在XMPP /啪獲取模式
presence = new Presence(Presence.Type.available);
if (USER_STATE.equalsIgnoreCase("Online")) {
presence.setMode(Presence.Mode.available);
setUserPresence(0);
}else if (USER_STATE.equalsIgnoreCase("Invisible")) {
presence.setMode(Presence.Mode.xa);
setUserPresence(1);
} else if (USER_STATE.equalsIgnoreCase("Away")) {
presence.setMode(Presence.Mode.away);
setUserPresence(2);
} else if (USER_STATE.equalsIgnoreCase("Busy")) {
presence.setMode(Presence.Mode.dnd);
setUserPresence(3);
}
在這裏,當我設置用戶存在離開或不可見等,並註銷用戶。現在,當用戶再次登錄時,我想要獲得自他上次註銷後早些時候設置的用戶模式。我得到它: -
System.out.println("Loggeddd innn");
// Set presence to online!
Presence userPresence = new Presence(Presence.Type.available);
userPresence.setStatus("Hello CCM!");
userPresence.setPriority(24);
userPresence.setMode(userPresence.getMode());
connection.sendPacket(userPresence);
在這裏,我總是在user.getMode()
NULL,也總是得到地位可用(在Openfire的門戶網站所示)
有人請幫助?
好了,這是唯一的最後一個選項做同樣對先前的模式? –
這裏我的問題是如何Gtalk管理同樣的事情,沒有本地保存存在信息? 如果用戶使用相同的憑據登錄到其他設備會發生什麼情況?如果存在信息存儲在本地,那麼它如何更新到用戶現在登錄的新移動設備? –
讓我們試着準確:存在(可用)不應該存儲在本地。 Presence數據包可能包含1)屬性(dnd,away,chat和xa),它們映射到setMode Smack api。 2)這是一個文本字符串。如果服務器堅持這些,我會感到驚訝,但你可以通過以下方式來測試:a)使用userA登錄並將狀態設置爲「ABC」並再次註銷b)使用userB登錄(假設A和B是朋友)並查看是否用戶B的輸入狀態數據包包含此狀態字符串 –