2016-10-23 3 views
0

Ich erstelle eine Android-Chat-Anwendung mit Smack OpenFire. Das Problem, das ich konfrontiert ist, weiß ich, wie Abonnement-Anfrage zu senden und zu akzeptieren, aber wie kann ich wissen, ob ich erhalten habe jede Abonnementanfrage. Ich habe den Stanza-Listener verwendet, aber der Listener hört nur eingehende Chat-Nachrichten ab, keine Abonnement-Anfragen. Unten ist mein CodeWie kann ich eingehende Subskriptionsanfrage in Smack OpenFire android hören

StanzaFilter filter=new StanzaTypeFilter(Message.class); 
     PacketCollector collector=connection.createPacketCollector(filter); 
     connection.addAsyncStanzaListener(new StanzaListener() { 
      @Override 
      public void processPacket(Stanza packet) throws SmackException.NotConnectedException { 
       Log.wtf("MA","Stanz listner"); 
      } 
     },filter); 

Ich bin ein Anfänger in klatschen sie, bitte helfen Sie mir, wie kann ich für eingehende Abonnement request.Thanks im Voraus hören ..

+0

wenn Sie eine Abonnementanfrage an diesen Benutzer senden? Dieser "Stanz-Listener" druckt nicht in Protokollen? – Farhan

+0

StanzaTypeFilter implementiert eine Funktion "Akzeptieren", was haben Sie zurückgegeben? – Farhan

+0

Ich benutze gerade dieses Modul, um eingehende Subscription zu hören .. Bin ich falsch? Wenn ich falsch liege, kannst du mir sagen, was ich dort anstelle von Stropffilter schreiben sollte. Danke im Voraus –

Antwort

0

Ein Zeichnungsantrag ist kein Message. Es ist ein Presence stattdessen.

Also, sollten Sie wahrscheinlich versuchen:

StanzaFilter filter = new StanzaTypeFilter(Presence.class);

Referenz: RFC 3921 - Section 6 - Managing Subscriptions

0

Dies ist, wie ich in meinem Android-Code

StanzaFilter subscribefilter = PresenceTypeFilter.SUBSCRIBE; 
PresenceSubscribeListener subscribeListener = new PresenceSubscribeListener(context.getApplicationContext(), connection); 
connection.addSyncStanzaListener(subscribeListener, subscribefilter); 

Und dann dieses Verbindungsobjekt getan hat wurde in einem lang laufenden Dienst in Android referenziert. Dies wurde so gemacht, dass, wenn ein Paket empfangen wird, wenn Ihre App im Hintergrund ist, Sie das eingehende Anwesenheitspaket noch verarbeiten können.

P.S. Ich benutze Smack 4.1.9 in meinem Android-Code.

Verwandte Themen