XMPP/Smack中的Get模式
我的聊天应用程序有一个设置用户状态的过程,即在线、离线、不可见、离开等。我使用以下代码进行设置:-XMPP/Smack中的Get模式,xmpp,asmack,Xmpp,Asmack,我的聊天应用程序有一个设置用户状态的过程,即在线、离线、不可见、离开等。我使用以下代码进行设置:- presence = new Presence(Presence.Type.available); if (USER_STATE.equalsIgnoreCase("Online")) { presence.setMode(Presence.Mode.available); setUserPresence(0
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()
中获取空值,并且总是获取可用状态(如openfire门户中所示)
有人请帮忙吗?userPresence.setMode(userPresence.getMode())对我来说似乎是个禁忌
您应该在设备本身上存储以前的模式(例如在
SharedReferences
)好的,这是唯一的最后一个相同的选项?这里我的问题是,Gtalk如何在不本地保存状态信息的情况下管理相同的事情???如果用户使用相同的凭据登录到其他设备,会发生什么情况??如果状态信息存储在本地,那么如何将其更新到用户现在已登录的新移动设备???让我们尽量准确地说:状态(可用)永远不应存储在本地。状态信息包可能包含1)属性(dnd、away、chat和xa),这些属性映射到setMode Smack api。2) 这是一个文本字符串。如果服务器坚持这些,我会感到惊讶,但您可以通过a)使用userA登录并将状态设置为“ABC”,然后再次注销b)使用userB登录(假设a en b是朋友)来测试这一点并查看userB的传入状态数据包是否包含此状态字符串。当用户注销并再次登录时,状态数据包始终显示null。这是我们的主要问题me@GauravArora:嗨,我正在创建聊天应用程序。你能告诉我从哪里开始,我需要什么资源吗?比如服务器等等。