3

Ich versuche, FCM-Funktionen in meiner App einzurichten. Momentan möchte ich eine Schaltfläche anzeigen, bei der beim Drücken der Schaltfläche eine Upstream-Nachricht generiert wird, die an das CCS von Google gesendet wird. Ich verstehe, dass diese Upstream-Nachricht von Google CCS in eine XMPP-Zeilengruppe umgewandelt wird. Dann wird es an das Telefon mit der ID geliefert, die ich beim Erstellen der Upstream-Nachricht festgelegt habe. Nach dem Lesen der Dokumentation auf FCM von Google, sehe ich, dass es sehr einfach ist, eine Upstream-Nachricht zu erstellen:Übermittlung von Upstream-Nachrichten über XMPP auf Firebase Cloud Messaging Missverständnisse

FirebaseMessaging fm = FirebaseMessaging.getInstance(); 
fm.send(new RemoteMessage.Builder(SENDER_ID + "@gcm.googleapis.com") 
.setMessageId(Integer.toString(msgId.incrementAndGet())) 
.addData("my_message", "Hello World") 
.addData("my_action","SAY_HELLO") 
.addData()//somewhere in here must be a way to set the senderId of the phone 
// i am trying to send the message to ??? 
.build()); 

nun von oben Blick auf den Code, ich sehe in keiner Weise diese Upstream-Nachricht XMPP verwendet werden zu erstellen . Keine XMPP-Zeilengruppenerstellung. Meine Frage beschäftigt sich damit, wohin diese XMPP-Zeilengruppe geliefert werden soll. Sobald es Google CCS verlässt. Ich sehe eine Methode für die Klasse, die FirebaseMessagingService namens onMessageReceived erweitert. Es ist mein Verständnis, dass in dieser Methode die XMPP-Strophe geliefert wird. Oder wird es auf der Smack-Bibliothek-Verbindung geliefert werden, die ich einrichten möchte, die einen PacketListener haben wird. Laut dem Beispiel von "Gronkking Android" werden die CCS XMPP-Zeilengruppen von Google hier auf diesem Paketlistener ausgeliefert. Ich beabsichtige, diesem Beispiel zu folgen, um diese kommenden Strophen zu empfangen und die erforderlichen Bestätigungsnachrichten zu erzeugen.

Wenn jemand irgendwelche Gedanken oder Ideen hat, würde es groß sein, Ihre Kommentare

zu hören Danke

+0

Ok. Dieser App-Server befindet sich also im Anwendungscode oder ist extern. Aus den Beispielen, die ich gesehen habe, konnte ich einfach mit einer xmpp-Schnittstelle auskommen, die mit CCS kommuniziert und relevante Informationen auf einem Webserver wie GoDaddy speichert. Aber ich weiß immer noch nicht, wie ich diese Zeilen für die Kommunikation mit CCS via Smack implementieren soll. Laut den Dokumenten muss ich meine Verbindung zu Strophen autorisieren. Soll ich einen Paket-Listener bei meiner Verbindung registrieren? Ich werde dies versuchen, um zu sehen, was meine Verbindung von CCS erhält. @arthurthompson –

+0

Eine sehr einfache Erklärung: Der App-Server könnte Ihr Heimserver oder ein Server sein, auf den Sie Zugriff haben (gehosteter Server) und er muss eine xmpp-Server-App ausführen. Es bleibt mit FCM verbunden und wenn Ihre Upstream-Nachricht vom Gerät ankommt, sendet das FCM die Nachricht an Ihren App-Server. – MisterWalrus

+0

Wie kommt es, dass die Firebase-Dokumentation sagt, dass CCS XMPP als authentifizierte Transportschicht verwendet? Es besagt, dass ich eine beliebige XMPP-Bibliothek verwenden könnte, um die Verbindung zu verwalten. Da die Smack-Bibliothek alle Unterstützung für TLS und Authentifizierung bietet und eine XMPP-Bibliothek bietet, kann ich sie verwenden, um die Verbindung zum Erstellen eines Anwendungsservers zu verwalten. Aber ich wähle es in meinem Code nicht extern zu verwenden. Verbindungsobjekte in Smack könnten auch Strophen verarbeiten. Ich habe bereits TLS mit Smack in meinem Code festgelegt. Ich bin bereits mit meinem Code nicht mit einem App-Server verbunden. Ich habe Probleme mit SASLauth. @MisterWalrus –

Antwort

4

Gerät zu Gerät Messaging wird nicht von FCM unterstützt. Upstream-Nachrichten wurden entwickelt, um von Ihrem mobilen Gerät über CCS zu Ihrem XMPP-Anwendungsserver zu gelangen. Sobald Ihr XMPP App-Server die Nachricht empfängt, kann er entscheiden, eine Downstream-Nachricht über CCS an ein Mobilgerät zu senden. Die XMPP-Kommunikation mit Zeilengruppen erfolgt zwischen CCS und Ihrem XMPP-Anwendungsserver.

0

FCM Cloud-Service ist gut für PUSH-Benachrichtigungen nach einem Unternehmenssystem oder einem Banksystem usw. Sonst, um die Aufgabe der Upstream-Nachricht zu tun, benötigen Sie Ihren eigenen XMPP-Anwendungsserver (in der Regel auf öffentlichen IP), Ich sehe es nicht anders herum. Der FCM-Cloud-Dienst leitet alle empfangenen Nachrichten einfach weiter, ohne sie zu lesen. Es ist die Aufgabe des Anwendungsservers, alle Nachrichten an das richtige mobile Gerät zu leiten, indem Sie immer den FCM-Cloud-Dienst aufrufen. Ich denke, es wäre einfacher ohne FCM-Dienst in der Mitte, nur mit Ihrem eigenen XMPP-Server an einer öffentlichen IP-Adresse, und die App für mobile Geräte sollte wie ein XMPP-Client funktionieren.