2012-01-20 2 views
1

J'essaie les bases de la mise en place de la communication XMPP entre les téléphones Android en utilisant aSmack. J'ai réussi à enregistrer un compte depuis mon application et à envoyer des messages à un ID Jabber auquel je suis connecté sur mon PC. Le problème est que les réponses de mon client PC ne semblent pas être reçues, le processusMessage() dans mon MessageListener ne semble pas être appelé.ProcessMessage d'aSmack MessageListener jamais appelé

 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());} 

À ce stade, je suis en train d'imprimer à la console mais j'ai l'impression essayé dans le journal et juste écho revenir à mon PC avec chat.sendMessage (message.getBody()). Rien ne semble enregistrer un message entrant. Cela semble être le format sur chaque how-to que j'ai trouvé en ligne.

+0

J'utilise aSmack-2010.05.07, qui est la dernière version de ce que je peux dire, je ne sais pas quelle version de Smack utilise. J'ai fini par faire un ChatManagerListener et qui a reçu des réponses ce qui est à peu près tout ce dont j'avais besoin. Sur une note de côté, cela fonctionnait bien avec quelques exécutions de mon application. Maintenant, cependant, quand je tente d'abord de me connecter à mon serveur, je reçois un message "Impossible de se connecter au domaine: port: remote-server-timeout." (504) Causé par: java.net.UnknownHostException: hôte non résolu: domain: port "Idées ?? –

+0

Cela a été corrigé en réinitialisant mon ordinateur. –

Répondre

0

Quelle version de Smack utilisez-vous?

Un problème existait dans les versions antérieures lorsque vous essayiez de faire correspondre des messages qui ne contenaient pas d'identifiants de threads à des chats existants créés avec un (comme le fait Smack). Pidgin, par exemple, n'utilise pas d'identificateur de thread, ce qui créerait à son tour une nouvelle instance de chat lorsqu'un message serait reçu.

Le processus d'appariement a été amélioré en 3.2 pour éviter que cela se produise. Essayez de créer un ChatManagerListener et de voir si vous obtenez de nouveaux chats créés à partir de vos réponses.

+0

J'utilise aSmack-2010.05.07, qui est la dernière version de ce que je peux dire, je ne sais pas quelle version de Smac utilise. J'ai fini par faire un ChatManagerListener et qui a reçu des réponses ce qui est à peu près tout ce dont j'avais besoin. –

+0

C'est une ancienne version de Smack. Je pense que la plupart des gens utilisent maintenant Smack avec quelques mods mineurs pour le faire fonctionner sur Android. Vous bénéficiez alors des avantages des nouvelles versions de Smack. – Robin

+0

Oui, il semble que cela fonctionne pour les besoins de messagerie vraiment basiques que je voulais, donc je vais bien avec. Je n'ai pas vraiment besoin des fonctionnalités PubSub plus complexes. –