2016-08-03 31 views
0

Mein addAsyncStanzaListner wird aufgerufen, wenn eine Bestätigungsnachricht von den Firebase Cloud Messaging-Diensten empfangen wird. Ich muss diese Nachrichten gemäß den Dokumenten bestätigen. Das Problem, das ich habe, ist, dass ich das Schlüsselpaar "message_type" "key"/"value" im JSON-Objekt, das in der empfangenen Nachrichtenzeilengruppe ankommt, nicht erreichen kann. Könnten Sie mir bitte helfen, auf diesen wichtigen Wert/Paar zuzugreifen? Ich benutze Smack Library 4.1. Ich habe für diese Einrichtung folgenden Beitrag Antwort, aber irgendwie funktioniert es nicht: GCM XMPP Server using Smack 4.1.0Zugriff auf das JSON-Objekt innerhalb der Nachrichtenstanze mit Smack-Bibliothek

Hier ist, wie der Code aussehen wie:

other_connection.addAsyncStanzaListener(new StanzaListener() { 
@Override 
public void processPacket(Stanza packet) throws SmackException.NotConnectedException { 
//how should i convert this stanza into a message stanza 
//I have tried Message message = (Message)packet; IT DOESNT WORK 
//I have tried getting the extension with the GCM Namespace. It doesnt 
//return a json string  
+0

Da Sie die Klaps-Bibliothek verwenden, einen Blick auf diese Probe haben, die Klaps 4.1 verwendet. https://github.com/googlesamples/friendlyping/blob/master/server/Java/src/main/java/com/gcm/samples/friendlyping/SmackCcsClient.java#L111 –

Antwort

0

In Ihrem Code einfach empfange eine Stanza als Java-Objekt.

Stanza verfügt über eine Methode zur Ausgabe eines XML.

Sie können diese Methode verwenden, um ein JSON zu erhalten, wenn Sie möchten, fügen Sie einfach einige benutzerdefinierte Funktionen hinzu.

Following this example

Code kann wie folgt aussieht:

@Override 
public void processPacket(Stanza packet) throws SmackException.NotConnectedException { 
    JSONObject jsonObj = XML.toJSONObject(packet.toXML()); 
    String json = jsonObj.toString(); 
//foo