Premiers pas avec google-cloud-messaging

## Envoyer des messages en aval depuis le cloud Envoyez un message à l’aide du protocole de serveur de connexion HTTP GCM :

  https://gcm-http.googleapis.com/gcm/send
  Content-Type:application/json
  Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
  {
    "to": "/topics/foo-bar",
    "data": {
      "message": "This is a GCM Topic Message!",
     }
  }

Pour ce faire dans [Postman][1], vous devez simplement définir ce qui suit (certains détails sont comme ce qui est mentionné ci-dessus) :

  1. Définissez le type de demande sur “POST”
  2. Dans les En-têtes, définissez les éléments suivants :
    • Content-Type = application/json
    • Authorization = < Your GCM Server Key >
  3. Définissez les paramètres de charge utile dans le Body (dans cet exemple, nous avons utilisé l’option raw, voir capture d’écran (2))
  4. Envoyez la demande à https://gcm-http.googleapis.com/gcm/send

Captures d’écran:

(1) [![entrez la description de l’image ici][2]][2]

(2) [![entrez la description de l’image ici][3]][3]

Notez que la requête a réussi avec le message_id dans la réponse.

PS : Je garde l’exemple de clé de serveur visible afin que d’autres puissent toujours l’essayer même s’ils n’ont pas encore créé de projet. MAIS, notez que la clé du serveur doit toujours rester secrète.

[1] : https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=fr [2] : https://i.stack.imgur.com/3zSu7.png [3] : https://i.stack.imgur.com/TBdWA.png

Gestion des messages en aval dans Android

Implémentez onMessageReceived qui interceptera la notification envoyée par le serveur GCM.

  @Override
  public void onMessageReceived(String from, Bundle data) {
     String message = data.getString("message");
     Log.d(TAG, "From: " + from);
     Log.d(TAG, "Message: " + message);
     // Handle received message here.
  }

Gestion des messages en aval dans iOS

Pour recevoir la notification, implémentez application:didReceiveRemoteNotification:fetchCompletionHandler: (ou application:didReceiveRemoteNotification: pour iOS < 8.0) et appelez GCMService:appDidReceiveMessage:message pour accuser réception du message à GCM.

- (void)application:(UIApplication *)application
    didReceiveRemoteNotification:(NSDictionary *)userInfo {
  NSLog(@"Notification received: %@", userInfo);
  // This works only if the app started the GCM service
  [[GCMService sharedInstance] appDidReceiveMessage:userInfo];
  // Handle the received message
  // ...
}

- (void)application:(UIApplication *)application
    didReceiveRemoteNotification:(NSDictionary *)userInfo
    fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))handler {
  NSLog(@"Notification received: %@", userInfo);
  // This works only if the app started the GCM service
  [[GCMService sharedInstance] appDidReceiveMessage:userInfo];
  // Handle the received message
  // Invoke the completion handler passing the appropriate UIBackgroundFetchResult value
  // ...
}