Прослушиватель приглашений не работает 4.2

Я могу успешно создать групповой чат XMPP (привкус). Я добавил слушателя приглашения, но так и не позвонил. кто нибудь знает как это сделать?

С использованием:

  1. XMPP
  2. Смак 4.2
  3. Сервер OpenFire

Отправить код приглашения:

 muc.invite(userId +"@" +XMPP.getInstance().HOST + "/Smack", "Meet me in this excellent room");

Код слушателя приглашения:

         MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection);
            manager.addInvitationListener(new InvitationListener() {
                @Override
                public void invitationReceived(XMPPConnection xmppConnection, MultiUserChat muc, String inviter, String reason, String password, Message message) {
                    try {
                        muc.join(nickname);
                    } catch (SmackException.NoResponseException e) {
                        e.printStackTrace();
                    } catch (XMPPException.XMPPErrorException e) {
                        e.printStackTrace();
                    } catch (SmackException.NotConnectedException e) {
                        e.printStackTrace();
                    }
                }
            });

person Noman Ahmed Khan    schedule 23.01.2017    source источник


Ответы (1)


Вероятно, у вас есть проблема с RESOURCE.

Когда вы отправляете приглашение на определенный JID, вы можете опустить часть resource или сообщение будет отправлено только на указанный ресурс.

JID составляется следующим образом:

user@serverdomain/resource

Этим приглашением вы приглашаете только пользователя, использующего "Smack" в качестве ресурса. Ресурс настраивается в AbstractXMPPConnection объекте или на этапе логин

XMPPTCPConnectionConfiguration.builder()
                .setServiceName(serverName)
                .setHost(server)
                .setPort(port)
                .setResource( RESOURCE_IDENTIFIER)
                .build();
connection = new XMPPTCPConnection(config);

connection.login(username, password, RESOURCE_IDENTIFIER);

Так что, возможно, вы указали в качестве своего идентификатора ресурса (просто произвольную строку) не "Smack", а "Spark" или что-то еще или оставили по умолчанию.

Просто опустите часть ресурсов (или исправьте с правильным, но я предлагаю опустить)

 muc.invite(userId +"@" +XMPP.getInstance().HOST, "Meet me in this excellent room");

Конечно, userId должен существовать, и HOST должен быть действительным

person MrPk    schedule 23.01.2017
comment
Большое спасибо, дорогой MrPk. Теперь код работает. - person Noman Ahmed Khan; 23.01.2017