2013-05-15 4 views
5

私はasmackを使用してAndroid用チャットアプリケーションを開発しています。接続が確立され、私もログインすることができます。 IQパケットのリスナーを追加しました。これは問題なく動作しています。私はまた、プレゼンスパケットのリスナーを追加した、ここに私のコードは次のとおりです。存在リスナーがasmackで動作しない

PacketTypeFilter presenceFilter=new PacketTypeFilter(Presence.class); 

connection.addPacketListener(new PacketListener() { 
    public void processPacket(Packet packet) { 
     Presence presence = (Presence)packet; 

     Log.d("test1","Presence packet came :From:"+presence.getFrom()+",Packet ID:"+presence.getPacketID()+",Priority:"+presence.getPriority()+",To:"+presence.getTo() 
          +",Exn:"+presence.toXML()); 

     if (presence.getType() == Presence.Type.available) { 
      Log.d("test1","User available"); 
     } 
     else if (presence.getType() == Presence.Type.unavailable) { 
         Log.d("test1","User not available"); 
     } 
    } 
}, presenceFilter); 

私の問題は、このリスナーは、すべての着信プレゼンスパケットのために呼び出されることはありません取得されます。それは発信するもののために働いています。 私たちのサーバーがユーザーのアベイラビリティを処理するためにいくつかのインテリジェントルーティングサービスを使用しているため、存在を処理するためにRosterを使用することはできません。 ここで何か間違っていますか?入力は参考になります。

答えて

-2

ロスターを使用できない場合は、最初にこのクライアントにプレゼンスが送信されていることを確認してください。

クライアントがネットワーク上の他のユーザーの名簿にサインインしているユーザーですか?

raw xmlを編集できるクライアントを使用して、クライアントにプレゼンスパケットを明示的に送信してテストしましたか?

関連する問題