2013-10-09 1 views
0

Мое приложение чата имеет процедуру, чтобы установить статус присутствия/режима пользователя, т.е. - 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 портале)

Кто-нибудь, пожалуйста, помогите?

ответ

1

userPresence.setMode(userPresence.getMode()) похоже на не-op для меня.

Вы должны сохранить прежний режим на самой (например, в SharedPreferences) устройства

+0

Хорошо, это только последний вариант, чтобы сделать то же самое? –

+0

Здесь мой вопрос, как Gtalk управляет одним и тем же без локального сохранения информации о присутствии ??? И что произойдет, если пользователь войдет на другое устройство с использованием тех же учетных данных? Если присутствие информации хранится локально, то как оно будет обновляться на новом мобильном устройстве, в котором пользователь вошел в систему сейчас? –

+1

Давайте постараемся быть точными: присутствие (доступно) никогда не должно храниться локально. Пакет присутствия может содержать 1) свойства (dnd, away, chat и xa), который сопоставляется с setMode Smack api. 2) , который является текстовой строкой. Я был бы удивлен, если бы сервер остался на них, но вы можете проверить это: а) войти в систему с userA и установить статус на «ABC» и выйти из системы снова; b) войти в систему с userB (при условии, что A en B - друзья) и посмотреть, входящий пакет присутствия для userB содержит эту строку состояния –

 Смежные вопросы

  • Нет связанных вопросов^_^