Я работаю с jivesoftware Smack SDk для общения в режиме реального времени. Для создания соединения я использую следующий код,Android с Smack -Как получить список пользователей онлайн?
XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
config.setServiceName("world-pc");
config.setHost(serverAddress);
config.setPort(5222);
config.setDebuggerEnabled(true);
XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);
XMPPTCPConnection.setUseStreamManagementDefault(true);
connection = new XMPPTCPConnection(config.build());
XMPPConnectionListener connectionListener = new XMPPConnectionListener();
connection.addConnectionListener(connectionListener);
connection.connect();
connection.login("username","password");
И его работает удивительно хорошо. Теперь дело в том, что я хочу получить статус онлайн конкретного пользователя или получить список всех пользователей, которые находятся в сети. Я пробовал много решений из переполнения стека, но для меня ничего не работает. Одно из моего решения, которое я пытался есть,
Presence presence = new Presence(Presence.Type.available);
connection.sendPacket(presence);
Roster roster = xmppConnection.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
Presence presence;
for(RosterEntry entry : entries) {
presence = roster.getPresence(entry.getUser());
System.out.println(entry.getUser());
System.out.println(presence.getType().name());
System.out.println(presence.getStatus());
}
Это возвращает мне список, но состояние равно нулю для всех пользователей. Пожалуйста, помогите мне с точным решением.
Спасибо
Ваш клиент отправляет присутствие? – MrPk
yes..Please проверить отредактированный вопрос –