Não é possível obter a presença do plantel usando smack, openfire
Eu sou novo para beijar API. Eu estou tentando desenvolver um aplicativo de bate-papo onde eu estava tentando definir e obter a presença.
Quando eu mudo a presença de um usuário, ele funciona perfeitamente e está se refletindo no Openfire Server.
Mas quando eu tento obter a presença de um usuário, estou sempre ficando o status como "indisponível", mesmo que sua presença em openfire está mostrando como "disponível".
Eu estou usando o seguinte código para definir o status.
Presence presence = new Presence(Presence.Type.available);
presence.setStatus("Online, Programmatically!");
presence.setPriority(24);
presence.setMode(Presence.Mode.available);
user.getConnection().sendPacket(presence);
Eu estou usando a classe Roster para obter a presença da seguinte forma.
Roster roster = avatar.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
for(RosterEntry rosterEntry: entries) {
String user = rosterEntry.getUser();
Presence presence = roster.getPresence(user);
System.out.println("Presence : "+presence); // 1
System.out.println("Presence type: "+presence.getType()); // 2
System.out.println("Presence mode: "+presence.getMode()); // 3
}
Linha Nº 1 alwasys dá 'indisponível' enquanto a linha número 2 e 3 sempre dá null
Eu não sou capaz de descobrir a causa deste problema. Por favor, me ajude a resolver este problema.
Desde já, obrigado.