2012-01-20 2 views
1

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

 try{connection.login("kmomochesstest", "password1");} 
     catch(Exception e){Log.e("connection","Account login error: " + e.toString());} 
     chat = connection.getChatManager().createChat("[email protected]", 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()). Кажется, что ничто не регистрирует входящее сообщение. Это, по-видимому, формат для каждого практического использования, который я нашел в Интернете.

+0

Я использую aSmack-2010.05.07, который является последней версией, насколько я могу судить, не уверен, какая версия Smack используется. Я в конечном итоге сделал ChatManagerListener и получил ответы, которые в значительной степени все, что мне нужно. На стороне примечание, это работало отлично с несколькими запусками моего приложения. Теперь, когда я изначально пытаюсь подключиться к моему серверу, я получаю сообщение «Не удалось подключиться к домену: port: remote-server-timeout. (504). Причина: java.net.UnknownHostException: Host не разрешен: домен: порт "Идеи ?? –

+0

Это было исправлено путем перезагрузки компьютера. –

ответ

0

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

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

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

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

+0

Я использую aSmack-2010.05.07, который является последней версией, насколько я могу судить, не знаю, какую версию Smac использует. Я в конечном итоге сделал ChatManagerListener и получил ответы, которые в значительной степени все, что мне нужно. –

+0

Это более старая версия Smack. Я думаю, что большинство людей теперь используют Smack с некоторыми незначительными модами, чтобы заставить его работать на Android. Затем вы получаете преимущество от новых версий Smack. – Robin

+0

Да, похоже, это работает для действительно основных потребностей обмена сообщениями, которые мне нужны, хотя я в порядке с ним. Мне не нужны более сложные функции PubSub. –