2016-07-03 17 views
0

Ich versuche, meine Verbindung mit Firebase-Cloud-Messaging über die Smack-Bibliothek zu authentifizieren. Ich sehe, dass meine Verbindung eine streamId von Google erhält, weil ich diese Nachricht in meiner Android Studio IDE protokolliere: Log.d ("MyStreamId", "Ddd:" + connection.getStreamId()); Meine Protokolle geben eine zufällige alphanumerische Zahl zurück. Das bedeutet, dass das CCS von Google meinen Verbindungsversuch bemerkt. Jetzt, nach diesem Link: https://firebase.google.com/docs/cloud-messaging/server#connecting Es muss eine Art von Kommunikationsaustausch, um meine Verbindung zu authentifizieren, zwischen meinem "App-Server" und Google CCS. Ich versuche, diese Kommunikation zu starten, die XML-Formatierung verwendet.Erstellen von XML-Stream-Nachrichten mit Smack auf Android Studio

Ich brauche den folgenden „XML-Stream“ und senden Sie es mit meiner Verbindung mit der Smack-Bibliothek zu konstruieren:

<stream:stream to="gcm.googleapis.com" 
    version="1.0" xmlns="jabber:client" 
    xmlns:stream="http://etherx.jabber.org/streams"> 

Was ich eine HashMap mit dem Schlüssel zu tun versuchen, schaffte: „bis“, "Version", "xmlns". Fehle ich einen anderen Schlüssel in dieser HashMap?

Wie soll ich danach weiter verfahren? Sollte ich diese HashMap auf ein Json-Objekt umstellen? Ich habe bereits mit JSON in Android Studio gearbeitet. Sollte ich die Methode von Smack Library toXML() verwenden, um die HashMap in einen Stream zu konvertieren? Beachten Sie die Tags für das XML-Objekt. Wie würde ich es an das CCS von Google senden, wenn ich mein Verbindungsobjekt verwende, bei dem es sich um ein XMPPAbstractConnection-Objekt handelt? Mein Verbindungsobjekt hat auch ein addAsyncStanzaListener-Objekt in der Hoffnung, bidirektionale Kommunikation von Google CCS zu erhalten.

Alle Gedanken oder Ideen werden geschätzt.

Danke

Antwort

0

Sie hier ein paar Fragen gestellt, aber ich denke, Sie mit FCM das beabsichtigte Design Mißverständnis XMPP der Verwendung werden kann. Ich werde versuchen, das zu korrigieren, und Sie können Ihre Frage verfeinern.

Im Allgemeinen sollten Sie XMPP nicht auf Ihrem Android-Client verwenden. Die Idee besteht darin, den XMPP-Client auf Ihrem Anwendungsserver zu verwenden, um eine Verbindung zu CCS herzustellen und mit ihm zu kommunizieren. Android wird eine Best-Effort-Verbindung zwischen dem Gerät und FCM aufrechterhalten. Beachten Sie, dass dies keine ständig offene Verbindung sein kann, wie es auf Ihrem Server sein kann, da dies die Batterie des Geräts zerstören würde.

+0

aus dem folgenden Beispiel unter diesem Link: http://www.grokkingandroid.com/xmpp-server-google-cloud-messaging/ –

+0

von dem folgenden Link: http://www.grokkingandroid.com/xmpp-server -google-cloud-messaging/Ich sehe, dass Smack als Schnittstelle für die Kommunikation mit Firebase CCS verwendet wird. Auf dieser Grundlage agieren Smack APIs als Kommunikationsmittel mit Firebase CCS. Jetzt verwenden sie in der benutzerfreundlichen Anwendung auf Github einen Go-Server, um mit GCM zu kommunizieren. In diesem anderen Link: https://firebase.google.com/docs/cloud-messaging/server#connecting in Richtung der Mitte. Es gibt einen Austausch von "xml" zwischen CCS und App Server. Wo findet es statt? im App-Code oder extern. @arthurthompson –

+0

CCS (Teil von FCM) ist ein XMPP-Server. Es ermöglicht Ihrem App-Server, als ein XMPP-Client (mit Smack für zB) mit einer offenen Verbindung zu CCS zu fungieren. Nachrichten sind JSON in XML verpackt zB: https://firebase.google.com/docs/cloud-messaging/downstream#xmpp_message –

Verwandte Themen