Ich habe Schwierigkeiten, Benachrichtigungen an Android-Geräte zu pushen.Android Benachrichtigung push leer mit GCM und Java mit JSON-Nachricht
Hier ist ein kleines Stück Code, den ich schrieb:
String API_KEY = "AIzaSy....";
String url = "https://android.googleapis.com/gcm/send";
String to = "ce0kUrW...";
String data = "{\"to\": \"" + to + "\"}";
RequestBody body = RequestBody.create(MediaType.parse("application/json"), data);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).post(body).addHeader("Authorization", "key=" + API_KEY).build();
Response response = client.newCall(request).execute();
System.out.println(response.headers());
System.out.println(response.body().string());
bei https://developers.google.com/cloud-messaging/http#send-to-sync Sehen, es funktioniert gut, wenn ich die Send-to-Sync-Option versuchen. Ich erhalte einen Benachrichtigungston auf meinem Telefon, aber es gibt keine tatsächliche Benachrichtigung, da keine Nachricht oder Daten mit dem Push verbunden sind.
Nun, wenn ich meine Daten String mit der folgenden Zeile ersetzen, erhalte ich immer noch das gleiche Ergebnis:
String data = "{ \"notification\": {\"title\": \"Test title\", \"text\": \"Hi, this is a test\"},\"to\" : \""
+ to + "\"}";
Ich bin nicht sicher, was ich bin fehlt. Meine Vermutung ist, dass mein Format der Benachrichtigung falsch ist, aber ich habe jede Kombination ausprobiert, die ich bisher bei meinen Nachforschungen gefunden habe.
Sie in das Protokoll schreibt wie folgt aussieht:
Content-Type: application/json; charset = UTF-8
Datum: Do, 21. April 2016 10.51.23 GMT
Gültig bis: Do, 21. April 2016 10.51.23 GMT
Cache-Control: privat, max -age = 0
X-Content-Type-Optionen: NOSNIFF
X-Frame-Options: SAMEORIGIN
X-XSS-Schutz: 1; mode = Block
Server: GSE
Alternate-Protokoll: 443: quic
Alt-Svc: quic = ": 443"; ma = 2592000; v = "32,31,30,29,28,27,26,25"
Transfer-Encoding: Chunked
OkHttp-Selected-Protokoll: HTTP/1.1
OkHttp-Sent-Millis : 1461235877551
OkHttp-Received-Millis: 1461235877855
{ "multicast_id": 6596853786874127657, "Erfolg": 1, "Fehler": 0, "canonical_ids": 0, "Ergebnisse": [{ "message_id ":" 0: 1461235883968556% 6ff215a7f9fd7ecd "}]}
Die Verwendung von "Körper" macht das gleiche. Ich habe auch die Beispiele auf dieser Seite ausprobiert (früher während meiner Recherchen) und ich bekomme keine Freude. – Frost
Siehe aktualisierte Antwort - Lassen Sie uns zuerst bestätigen, ob Sie die Nachricht/Benachrichtigung in der 'onMessageReceived' Funktion erhalten. – ishmaelMakitla
Sie haben vielleicht gerade eine ganze andere Dose Würmer für mich geöffnet. Mein Beispiel ist also die Serverseite, auf der die Nachricht erstellt und gesendet wird. Verstehe ich richtig, dass es dann eine Client-Seite gibt (wo GcmListenerService mit einer Methode "onMessageReceived" sitzt? Und hier wird die Nachricht behandelt und an das Telefon weitergeleitet? Ich glaube nicht, dass ich Zugang zur Client-Seite habe. – Frost