2012-01-20 29 views
1

我正在嘗試使用aSmack設置Android手機之間的XMPP通信的基礎知識。我設法從我的應用程序註冊一個帳戶,並將消息發送到我在PC上登錄的Jabber-ID。問題是我的PC客戶端的回覆似乎沒有收到,我的MessageListener中的processMessage()似乎沒有被調用。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,並且確實收到了幾乎所有我需要的回覆。在一個側面說明,這是工作正常與我的應用程序的幾個運行。然而,當我最初嘗試連接到我的服務器時,我得到一個「無法連接到域:端口:遠程服務器超時。(504)。引起:java.net.UnknownHostException:主機未解決:域:港口「的想法? –

+0

這是通過重置我的電腦解決的。 –

回答

0

您使用的是什麼版本的Smack?

在嘗試將不包含線程ID的消息與使用一個創建的現有聊天進行匹配(如Smack)時,早期版本中存在問題。例如,Pidgin不使用線程ID,當接收到消息時它將反過來創建一個新的聊天實例。

爲了防止這種情況發生,3.2中的匹配過程得到了改進。

嘗試創建一個ChatManagerListener並查看您是否從您的答覆中創建了新的聊天。

+0

我使用的是aSmack-2010.05.07,據我所知,這是最新版本,不知道使用的是什麼版本的Smac。我最終做了一個ChatManagerListener,並且確實收到了幾乎所有我需要的回覆。 –

+0

這是Smack的舊版本。我認爲大多數人現在實際上使用Smack和一些小模塊來使它在Android上工作。然後你可以獲得更新版本的Smack的好處。 – Robin

+0

是的,它似乎工作的真正基本的消息需求,我想要的,所以我很好。我並不需要更復雜的PubSub功能。 –

相關問題