Я использую asmack 8-0.8.3.XMPP asmack: контактное присутствие не работает для переходов на «доступно»
Я не получаю сообщения об изменениях Присутствия из моих контактов, когда они переходят на «доступные». Если один контакт переходит из «доступного» в «dnd», я получаю сообщение. Но не наоборот.
Contact passes: "available" --> "dnd" --> "available" --> "dnd"
I receive: Presence{dnd} Presence{dnd}
Принимаю во внимание, что я ожидаю получить обновление присутствия {available} между двумя dnd.
Поскольку я получаю обновления присутствия, кроме «доступных», я полагаю, что мой слушатель работает нормально. Также я полагаю, что я правильно подписался на присутствие моих контактов ...
private class FriendListener implements RosterListener {
public void entriesAdded(Collection<String> addresses) { }
public void entriesUpdated(Collection<String> addresses) { }
public void entriesDeleted(Collection<String> addresses) { }
public void presenceChanged(Presence presence) {
String fromUserID = StringUtils.parseBareAddress(presence.getFrom());
System.out.println(
"Presence changed: " + fromUserID +
" Presence=" + presence.toString() +
" Type=" + presence.getType().toString() +
" Mode=" + presence.getMode().toString()
);
mainCallback_.updatePresenceFriend(fromUserID, presence);
}
}
public void subscribe(String friendID, String friendName) {
Presence presence = new Presence(Presence.Type.subscribe);
connection.sendPacket(presence);
RosterPacket rosterPacket = new RosterPacket();
rosterPacket.setType(IQ.Type.SET);
Item item = new Item(friendID, friendName);
item.setItemType(RosterPacket.ItemType.both);
rosterPacket.addRosterItem(item);
connection.sendPacket(rosterPacket);
System.out.println("Send subscribe to " + friendID);
subscribedUsers.add(friendID);
}