Я играю с Smack для Android, чтобы создать простой чат-клиент.Я использую ejabberd в качестве локального сервера XMPP.Кажется, что основы работают просто отлично: я могу подключаться, получать и отправлять сообщения.Для тестирования я использую Gajim / PSI в качестве готовых XMPP-клиентов.
Моя единственная проблема в том, что пользователь Android всегда отображается в автономном режиме в Gajim и PSI.Поскольку обмен сообщениями работает, пользователь Android, очевидно, подключен, и веб-интерфейс администратора ejabberd перечисляет обоих пользователей как подключенных.
В моем коде Andoird после подключения и входа в систему я отправляю раздел присутствия следующим образом:
...
stanza = new Presence(Presence.Type.available);
stanza.setStatus("online");
this.mConnection.sendStanza(stanza);
...
Я вижу эту строфу в ejabberd в режиме реального времени.Я думал, что сказал бы Gajim / PSI, что пользователь онлайн.Или требуется, чтобы пользователь Android сначала явно добавил пользователя Gajim / PIS в свой список?Я сейчас этим не занимаюсь.