Ich verwende AWS
Ressourcen für mein Android-Projekt. Ich plane, einen Push-Benachrichtigungsdienst für mein Projekt AWS SNS
hinzuzufügen. Es gibt nur wenige Fragen, die mich sehr stören. Ich habe keine Fragen dazu gefunden, außer ein oder zwei, aber mit unklaren Erklärungen.
1. AWS
Unterstützt FCM
? SNS
arbeiten mit GCM
. Google empfiehlt jedoch die Verwendung von FCM anstelle von GCM
. Ich fand keine AWS
Unterstützung FCM
.
2. AWS
Speichern Sie Nachrichten (oder Daten) auch nach dem Senden von Push-Benachrichtigungen in ihren Datenbanken?
3. Ich habe versucht, den FCM-API-Schlüssel in die SNS-Anwendungsplattform einzufügen. Es werden ungültige Parameter angezeigt. Warum?
android
amazon-web-services
google-cloud-messaging
amazon-sns
firebase-cloud-messaging
Naroju
quelle
quelle
Antworten:
FCM ist abwärtskompatibel mit GCM. Die Schritte zum Einrichten von FCM unter AWS sind identisch mit dem GCM-Einrichtungsverfahren, und (zumindest im Moment) arbeitet FCM in Bezug auf die serverseitige Konfiguration transparent mit GCM und SNS zusammen.
Allerdings , wenn Sie, senden die
data
Nutzlasten auf dem Android - Gerät werden sie nicht verarbeitet werden , wenn Sie einen implementieren Client - Seite Service , die erweitertFirebaseMessagingService
. Der Standard-JSON-Nachrichtengenerator in der AWS-Konsole sendetdata
Nachrichten, die von Ihrer App ignoriert werden, sofern der oben genannte Dienst nicht implementiert ist. Um dies für erste Tests zu umgehen, können Sie eine benutzerdefiniertenotification
Nutzlast bereitstellen , die von Ihrem Gerät empfangen wird (solange Ihre App nicht im Vordergrund steht).Es gibt GCM-FCM-Migrationsanweisungen von Google. Die Änderungen, die Sie vornehmen müssen, sind jedoch überwiegend auf der App-Seite.
Die Schritte, die Sie ausführen müssen, um GCM / FCM in Ihrer App mit SNS zu testen, sind:
FirebaseInstanceIDService
dieonTokenRefresh
Methode erweitern und überschreiben , um dies in Ihrer Android-App anzuzeigen. Sobald Sie dies getan haben , deinstallieren Sie Ihre App und installieren Sie sie erneut. Ihr Token sollte beim ersten Start auf der Debug-Konsole in Android Studio gedruckt werden.Die von SNS generierte Nachricht hat folgende Form:
Wie bereits erwähnt, werden
data
Nutzdaten ignoriert, wenn kein Dienst zum Empfangen implementiert wurde. Wir möchten testen, ohne zu viel Code zu schreiben, daher sollten wir stattdessen einenotification
Nutzlast senden . Ändern Sie dazu einfach die JSON-Nachricht in:Stellen Sie anschließend sicher, dass Ihre App nicht auf dem Gerät ausgeführt wird, und klicken Sie auf die Schaltfläche Nachricht veröffentlichen . Auf Ihrem Gerät sollte jetzt eine Benachrichtigung angezeigt werden.
Sie können dies natürlich programmgesteuert über die Amazon SNS-API tun. Alle Beispiele scheinen jedoch die
data
Nutzlast zu verwenden. Sie müssen dies berücksichtigen und eine Nutzlast generieren, die Ihrem Anwendungsfall entspricht.quelle
data
Nachrichten funktionieren mit sns einwandfrei, auch wenn die Client-App nicht FCM, sondern GCM implementiert. In meiner App habe ich auf Client-Seite kein Upgrade auf FCM durchgeführt, aber FCM mit SNS funktioniert auch fürdata
Nachrichten. Sollte es nicht funktionieren?Jetzt können Sie zu Ihrer Firebase-Konsole ( https://console.firebase.google.com/ ) gehen, Ihr Projekt auswählen, auf das Zahnradsymbol klicken und Projekteinstellungen auswählen und dann auf die Registerkarte Cloud-Messaging klicken ...
Sie sehen den alten Serverschlüssel, der der GCM-API-Schlüssel ist, und Sie haben die Möglichkeit, neue Serverschlüssel zu generieren, bei denen es sich um die FCM-Versionen handelt
SNS akzeptiert beide Versionen, aber die Menüoption kategorisiert sie weiterhin unter GCM
Hier ist ein Bild als Referenz:
Beachten Sie, dass Sie Ihre Serverschlüssel "versehentlich" entfernen können, der Legacy-Serverschlüssel jedoch nicht gelöscht werden kann. Wenn Sie auf die Schaltfläche Serverschlüssel hinzufügen klicken, erhalten Sie einen neuen Serverschlüssel UNTER dem ersten, OHNE WARNUNG! ... gute Arbeit Google;)
quelle
Ich habe versucht, eine Lösung mit Benachrichtigungsnutzdaten anstelle von Daten zu verwenden, habe jedoch keine Push-Benachrichtigungen auf dem Mobilgerät erhalten. Ich fand dieses Tutorial https://youtu.be/iBTFLu30dSg mit englischen Untertiteln zur schrittweisen Verwendung von FCM mit AWS SNS und ein Beispiel für das Senden von Push-Benachrichtigungen von der AWS-Konsole und deren Implementierung auf PHP mit aws php sdk. Es hat mir sehr geholfen.
quelle
Noch eine zusätzliche Anmerkung zu Nathan Dunns großartiger Antwort. So senden Sie Daten mit der Benachrichtigung von SNS an Firebase.
Wir müssen dem Json Daten hinzufügen (innerhalb der Benachrichtigung):
In Ihrer FirebaseMessagingService-Implementierung (Xamarin-Beispiel)
quelle
Nur eine zusätzliche Anmerkung zu Nathan Dunns Antwort: Um Sound hinzuzufügen, verwenden Sie die folgende JSON-Nachricht
quelle
Ich habe eine Weile gebraucht, um herauszufinden, wie ich die Benachrichtigung mit der richtigen Nutzlast senden kann (zum Thema veröffentlichen). Also werde ich es hier setzen.
quelle
Amazon unterstützt FCM, da der gesamte vorherige Code von GCM auf FCM migriert wurde. Der folgende Artikel erklärt im Detail.
Artikel Veröffentlicht von Amazon
quelle
Um die Fragen zu beantworten:
Ein ausführliches Tutorial zum Einrichten von FCM mit SNS finden Sie in diesem Artikel.
quelle