aSmack MessageListener processMessage никогда не вызывается - PullRequest
1 голос
/ 20 января 2012

Я пробую основы настройки связи XMPP между телефонами Android с помощью aSmack. Мне удалось зарегистрировать учетную запись из моего приложения и отправить сообщения на Jabber-ID, в который я вошел на моем компьютере. Проблема в том, что ответы от моего ПК-клиента, кажется, не получаются, кажется, что processMessage () в моем MessageListener не вызывается.

       try{connection.login("kmomochesstest", "password1");}
       catch(Exception e){Log.e("connection","Account login error: " + e.toString());}
       chat = connection.getChatManager().createChat("chesstestpc@macjabber.de", new MessageListener() {

             public void processMessage(Chat chat, Message message) {
                 try{System.out.println(message.getBody());}
             catch(Exception e){Log.e("connection","Message send error: " + e.toString());}
       });
       try{chat.sendMessage("Test Message from Activity");Log.d("connection","Just sent Message ");}
        catch(Exception e){Log.e("connection","Message send error: " + e.toString());}

На данный момент я пытаюсь печатать на консоль, но я пробовал печатать в журнал и просто возвращаюсь на мой компьютер с помощью chat.sendMessage (message.getBody ()). Ничто, кажется, не регистрирует входящее сообщение. Похоже, это формат для каждого практического руководства, которое я нашел в Интернете.

1 Ответ

0 голосов
/ 24 января 2012

Какую версию Smack вы используете?

В более ранних версиях возникла проблема при попытке сопоставить сообщения, не содержащие идентификаторы потоков, с существующими чатами, которые были созданы с одним (как это делает Smack).Например, Pidgin не использует идентификаторы потоков, которые, в свою очередь, создают новый экземпляр чата при получении сообщения.

Процесс сопоставления был улучшен в 3.2, чтобы этого не происходило.

Попробуйте создать ChatManagerListener и посмотрите, получаете ли вы новые сообщения Chat из ваших ответов.

...