Soy nuevo en Smack API. Intento desarrollar una aplicación de chat donde estaba tratando de establecer y obtener la presencia.No se puede obtener la presencia de la lista mediante el uso de smack, openfire
Cuando cambio la presencia de un usuario, funciona perfectamente y se refleja en el servidor Openfire.
Pero cuando trato de obtener la presencia de un usuario, siempre obtengo el estado como 'no disponible' incluso si su presencia en openfire se muestra como 'disponible'.
Estoy usando el siguiente código para establecer el estado.
Presence presence = new Presence(Presence.Type.available);
presence.setStatus("Online, Programmatically!");
presence.setPriority(24);
presence.setMode(Presence.Mode.available);
user.getConnection().sendPacket(presence);
Estoy utilizando la clase de lista para obtener la presencia de la siguiente manera.
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
}
Línea 1 No se da alwasys 'no disponible', mientras que la línea 2 y 3 siempre dan nula
no soy capaz de averiguar la causa de este problema. Por favor, ayúdame a resolver este problema.
Gracias de antemano.
¿El usuario que desea obtener presencia acepta su suscripción? Si no, no puedes obtener Presencia. –