Android: Tester la notification push en ligne (Google Cloud Messaging) [fermé]

99

Mise à jour: GCM est obsolète, utilisez FCM

J'implémente Google Cloud Messaging dans mon application. Le code du serveur n'est pas encore prêt et dans mon environnement en raison de certaines restrictions de pare-feu, je ne peux pas déployer un serveur de test pour la notification push. Ce que je recherche, c'est un serveur en ligne qui enverrait des notifications de test à mon appareil pour tester l'implémentation de mon client.

Adnan
la source
Vous avez supprimé d'autres articles, c'est pourquoi j'écris ici :-) NotificationListenerService a été ajouté dans l'API 18 ... Il suffit de stocker les identifiants dans SharedPreferences en tant que tableau int et de faire une logique pour vérifier la taille du tableau si après l'ajout d'un nouvel identifiant est plus grand que vous devez prendre premier élément et annuler ...
Selvin
1
vous pouvez tester en utilisant pushtry.com
Arvind

Réponses:

167

J'ai trouvé un moyen très simple de le faire.

Ouvrez http://phpfiddle.org/

Collez le script php suivant dans la boîte. Dans l'ensemble de scripts php API_ACCESS_KEY, définissez les identifiants d'appareils séparés par une virgule.

Appuyez sur F9 ou cliquez sur Exécuter.

S'amuser ;)

<?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;
?>

Pour FCM, l'URL google serait: https://fcm.googleapis.com/fcm/send

Pour FCM v1, l'URL google serait: https://fcm.googleapis.com/v1/projects/YOUR_GOOGLE_CONSOLE_PROJECT_ID/messages:send

Remarque: lors de la création de la clé d'accès API sur la console des développeurs Google, vous devez utiliser 0.0.0.0/0 comme adresse IP. (À des fins de test).

En cas de réception d'une réponse d'enregistrement invalide du serveur GCM, veuillez vérifier la validité de votre jeton d'appareil. Vous pouvez vérifier la validité de votre jeton d'appareil à l'aide de l'URL suivante:

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

Quelques codes de réponse:

Voici la description de certains codes de réponse que vous pouvez recevoir du serveur.

{ "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
la source
1
Pas vraiment :) À des fins de test, vous pouvez utiliser IP 0.0.0.0/0. ça marcherait.
Adnan
4
Je reçois à chaque fois (avec la clé API et l'identifiant de l'appareil: erreur ":" InvalidRegistration
Leandro
4
Veuillez régénérer API KEYaprès, car il n'est pas trop sûr de leur donner votre clé.
Flash Thunder
6
je continue à recevoir l'erreur non autorisée 401. une idée pourquoi?
Razel Soco
2
{"error": "invalid_token", "error_description": "Invalid Value"} J'ai trouvé ceci. et obtenir un identifiant de registre invalide.
Anand
159

POSTMAN: une extension google chrome

Utilisez le facteur pour envoyer le message au lieu du serveur. Les paramètres du facteur sont les suivants:

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"
  } 
}

en cas de succès, vous obtiendrez

Response :
{
  "multicast_id": 6506103988515583000,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [
    {
      "message_id": "0:1432811719975865%54f79db3f9fd7ecd"
    }
  ]
}
Michael
la source
3
Je pense que c'est la solution la plus propre et la plus sûre pour tester le GCM. Merci!
Bianca Daniciuc
12
J'ai travaillé avec un POST pour moi! N'oubliez pas non plus d'avoir "key =" dans l'en-tête Authorization et pas seulement l'API_KEY
Raphael Royer-Rivard
3
@Raphael Royer-Rivard vous sauve la vie, il me manquait "key =" dans l'en-tête Authorization
Khurram Shehzad
3
Vous pouvez créer quelques clés avec Google Developer Console. Juste au cas où vous ne seriez pas clair, à utiliser avec postman, vous devez créer une "clé de serveur".
Liangjun
3
Que sont les "registration_ids" ici? où les trouver?
Himel Nag Rana
19

Pushwatch est un testeur de notifications push GCM et APNS en ligne gratuit, développé par moi-même dans Django / Python, car je me suis retrouvé dans une situation similaire en travaillant sur plusieurs projets. Il peut envoyer à la fois GCMet les APNSnotifications et appuyer les messages qui JSON pour des arguments supplémentaires. Voici les liens vers les testeurs.

S'il vous plaît laissez-moi savoir si vous avez des questions ou rencontrez des problèmes lors de son utilisation.

Un mythe
la source
1
Veuillez expliquer votre vote défavorable.
Amyth
1
Tout ce dont j'avais besoin fonctionne parfaitement (j'ai essayé celui du facteur, qui a fonctionné en quelque sorte, mais n'a pas fait apparaître le message sur mon appareil lorsque mon application n'était pas ouverte ..)
Greywire
Salut Amyth, j'obtiens cette erreur sur votre site: "Erreur HTTP 401: clé de serveur (héritée) non valide livrée ou l'expéditeur n'est pas autorisé à effectuer la demande." Vous ne savez pas quoi faire? Je viens de créer un projet Google et j'ai essayé d'utiliser l'ID de projet et le numéro de projet pour l'ID de l'expéditeur et j'ai ajouté votre site à la section "Accepter les demandes de ces référents HTTP (sites Web)" dans les paramètres de l'API Google. Meilleures salutations Rasmus
Thylle
Notez que cette URL n'est plus prise en charge: depuis le 10 avril 2018, Google a abandonné GCM. Le serveur GCM et les API client sont obsolètes et seront supprimés dès le 11 avril 2019. GCM info
Stinky Towel
7

Postman est une bonne solution, tout comme le violon php. Cependant, pour éviter de mettre à chaque fois l'URL GCM et les informations d'en-tête, vous pouvez également utiliser cet astucieux outil de test de notification GCM.

Varun
la source
2
Vous pouvez utiliser ce testeur en ligne qui prend en charge Android et iOS. Facile à utiliser site Web simple pushtry.com 1. Sélectionnez votre fichier .p12 2. Entrez le jeton de l'appareil3 3. Sélectionnez l'environnement Sandbox ou production 4. Entrez le message 5. Envoyez
Arvind