Мое приложение чата имеет процедуру, чтобы установить статус присутствия/режима пользователя, т.е. - Online, Offline, невидимом, Away и т.д. Я делаю это с помощью следующего кода: -Получить режим в 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);
}
Здесь, когда я устанавливаю User Presence в Away или Invisible и т.д. и выхожу из системы. Теперь, когда пользователь снова войдет в систему, я хочу получить режим пользователя, который он установил ранее с момента последнего выхода из системы. Я получаю его как: -
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 управляет одним и тем же без локального сохранения информации о присутствии ??? И что произойдет, если пользователь войдет на другое устройство с использованием тех же учетных данных? Если присутствие информации хранится локально, то как оно будет обновляться на новом мобильном устройстве, в котором пользователь вошел в систему сейчас? –
Давайте постараемся быть точными: присутствие (доступно) никогда не должно храниться локально. Пакет присутствия может содержать 1) свойства (dnd, away, chat и xa), который сопоставляется с setMode Smack api. 2) , который является текстовой строкой. Я был бы удивлен, если бы сервер остался на них, но вы можете проверить это: а) войти в систему с userA и установить статус на «ABC» и выйти из системы снова; b) войти в систему с userB (при условии, что A en B - друзья) и посмотреть, входящий пакет присутствия для userB содержит эту строку состояния –