Android: Push-Benachrichtigung online testen (Google Cloud Messaging) [geschlossen]

99

Update: GCM ist veraltet, verwenden Sie FCM

Ich implementiere Google Cloud Messaging in meiner Anwendung. Der Servercode ist noch nicht fertig und in meiner Umgebung kann ich aufgrund einiger Firewall-Einschränkungen keinen Test-Server für die Push-Benachrichtigung bereitstellen. Was ich suche, ist ein Online-Server, der einige Testbenachrichtigungen an mein Gerät sendet, um meine Client-Implementierung zu testen.

Adnan
quelle
Sie haben andere Beiträge gelöscht, deshalb schreibe ich hier :-) NotificationListenerService wurde in API 18 hinzugefügt ... Speichern Sie einfach IDs in SharedPreferences als int-Array und führen Sie eine Logik aus, um die Größe des Arrays zu überprüfen, wenn nach dem Hinzufügen einer neuen ID größer ist, als Sie benötigen erstes Element und abbrechen ...
Selvin
1
Sie können mit pushtry.com
Arvind

Antworten:

167

Ich habe einen sehr einfachen Weg gefunden, dies zu tun.

Öffnen Sie http://phpfiddle.org/

Fügen Sie das folgende PHP-Skript in das Feld ein. Legen Sie im PHP-Skript set API_ACCESS_KEY die durch das Koma getrennten Geräte-IDs fest.

Drücken Sie F9 oder klicken Sie auf Ausführen.

Habe Spaß ;)

<?php


// API access key from Google API's Console
define( 'API_ACCESS_KEY', 'YOUR-API-ACCESS-KEY-GOES-HERE' );


$registrationIds = array("YOUR DEVICE IDS WILL GO HERE" );

// prep the bundle
$msg = array
(
    'message'       => 'here is a message. message',
    'title'         => 'This is a title. title',
    'subtitle'      => 'This is a subtitle. subtitle',
    'tickerText'    => 'Ticker text here...Ticker text here...Ticker text here',
    'vibrate'   => 1,
    'sound'     => 1
);

$fields = array
(
    'registration_ids'  => $registrationIds,
    'data'              => $msg
);

$headers = array
(
    'Authorization: key=' . API_ACCESS_KEY,
    'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );

echo $result;
?>

Für FCM lautet die Google-URL: https://fcm.googleapis.com/fcm/send

Für FCM v1 lautet die Google-URL: https://fcm.googleapis.com/v1/projects/YOUR_GOOGLE_CONSOLE_PROJECT_ID/messages:send

Hinweis: Beim Erstellen des API-Zugriffsschlüssels auf der Google Developer Console müssen Sie 0.0.0.0/0 als IP-Adresse verwenden. (Zu Testzwecken).

Wenn Sie eine ungültige Registrierungsantwort vom GCM-Server erhalten, überprüfen Sie bitte die Gültigkeit Ihres Gerätetokens. Sie können die Gültigkeit Ihres Geräte-Tokens anhand der folgenden URL überprüfen:

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=YOUR_DEVICE_TOKEN

Einige Antwortcodes:

Im Folgenden werden einige Antwortcodes beschrieben, die Sie möglicherweise vom Server erhalten.

{ "message_id": "XXXX" } - success
{ "message_id": "XXXX", "registration_id": "XXXX" } - success, device registration id has been changed mainly due to app re-install
{ "error": "Unavailable" } - Server not available, resend the message
{ "error": "InvalidRegistration" } - Invalid device registration Id 
{ "error": "NotRegistered"} - Application was uninstalled from the device
Adnan
quelle
1
Nicht wirklich :) Zu Testzwecken können Sie 0.0.0.0/0 ip verwenden. es würde funktionieren.
Adnan
4
Ich bekomme jedes Mal (mit API-Schlüssel und Geräte-ID: Fehler ":" InvalidRegistration
Leandro
4
Bitte regenerieren Sie API KEYdanach, da es nicht zu sicher ist, ihnen Ihren Schlüssel zu geben.
Flash Thunder
6
Ich bekomme immer wieder den nicht autorisierten Fehler 401. Irgendeine Idee warum?
Razel Soco
2
{"error": "invalid_token", "error_description": "Invalid Value"} Ich habe dies gefunden. und ungültige reg id bekommen.
Anand
159

POSTMAN: Eine Google Chrome-Erweiterung

Verwenden Sie den Postboten, um eine Nachricht anstelle des Servers zu senden. Die Postboteneinstellungen lauten wie folgt:

Request Type: POST

URL: https://android.googleapis.com/gcm/send

Header
  Authorization  : key=your key //Google API KEY
  Content-Type : application/json

JSON (raw) :
{       
  "registration_ids":["yours"],
  "data": {
    "Hello" : "World"
  } 
}

auf Erfolg werden Sie bekommen

Response :
{
  "multicast_id": 6506103988515583000,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [
    {
      "message_id": "0:1432811719975865%54f79db3f9fd7ecd"
    }
  ]
}
Michael
quelle
3
Ich denke, dies ist die sauberste und sicherste Lösung, um das GCM zu testen. Vielen Dank!
Bianca Daniciuc
12
Arbeitete mit einem POST für mich! Vergessen Sie auch nicht, "key =" im Authorization-Header zu haben und nicht nur API_KEY
Raphael Royer-Rivard
3
@ Raphael Royer-Rivard Sie Lebensretter, ich fehlte "key =" in der Autorisierung Header
Khurram Shehzad
3
Es gibt einige Schlüssel, die Sie mit der Google Developer Console erstellen können. Nur für den Fall, dass Sie sich nicht sicher sind, müssen Sie für die Verwendung mit Postboten einen "Serverschlüssel" erstellen.
Liangjun
3
Was ist die "Registrierungs-IDs" hier? wo finde ich sie?
Himel Nag Rana
19

Pushwatch ist ein kostenloser Online-Push-Benachrichtigungstester für GCM und APNS, der von mir in Django / Python entwickelt wurde, da ich mich bei der Arbeit an mehreren Projekten in einer ähnlichen Situation befunden habe. Es kann sowohl Benachrichtigungen als auch JSON-Nachrichten für zusätzliche Argumente senden GCMund APNSunterstützen. Es folgen die Links zu den Testern.

Bitte lassen Sie mich wissen, wenn Sie Fragen haben oder Probleme damit haben.

Ein Mythos
quelle
1
Bitte erläutern Sie Ihre Ablehnung.
Amyth
1
Genau das, was ich brauchte, funktioniert perfekt (habe den Postboten ausprobiert, was irgendwie funktioniert hat, aber nicht dazu geführt hat, dass die Nachricht auf meinem Gerät angezeigt wurde, als meine App nicht geöffnet wurde.)
Greywire
Hallo Amyth, ich erhalte diesen Fehler auf Ihrer Site: "HTTP-Fehler 401: Ungültiger (älterer) Serverschlüssel geliefert oder Absender ist nicht berechtigt, eine Anforderung auszuführen." Sie sind sich nicht sicher, was Sie tun sollen? Ich habe gerade ein Google-Projekt erstellt und versucht, die Projekt-ID und die Projektnummer für die Absender-ID zu verwenden. Ihre Website wurde in den Google API-Einstellungen zu "Anforderungen von diesen HTTP-Verweisen (Websites) akzeptieren" hinzugefügt. Mit
freundlichen
Beachten Sie, dass diese URL nicht mehr unterstützt wird: Ab dem 10. April 2018 hat Google GCM abgelehnt. Die GCM-Server- und Client-APIs sind veraltet und werden bereits am 11. April 2019 entfernt. GCM-Informationen
Stinky Towel
7

Postbote ist eine gute Lösung, ebenso wie PHP Fiddle. Um jedoch zu vermeiden, dass die GCM-URL und die Header-Informationen jedes Mal eingegeben werden, können Sie auch dieses raffinierte GCM-Benachrichtigungstest-Tool verwenden

Varun
quelle
2
Sie können diesen Online-Tester verwenden, der sowohl Android als auch iOS unterstützt. Einfach zu bedienende einfache Website pushtry.com 1. Wählen Sie Ihre .p12-Datei aus. 2. Geben Sie das Gerätetoken3 ein. 3. Wählen Sie die Umgebung Sandbox oder Produktion aus. 4. Geben Sie die Nachricht ein. 5. Senden
Arvind