I'm trying to send a notification using GCM to my Android device, but always get an InvalidRegistration error.
Here is the PHP code that should send the notification:
<?php define('API_ACCESS_KEY', 'API KEY HIDDEN'); $registrationIds = array( $_GET['id']); // prep the bundle $msg = array ( 'message' => 'TestMessage', 'title' => 'TestTitle', 'subtitle' => 'TestSubtitle', 'tickerText' => 'TestTicker', 'vibrate' => 1, 'sound' => 1, 'largeIcon' => 'large_icon', 'smallIcon' => 'small_icon' ); $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; ?>
Here's how to register:
private void registerInBackground() { new AsyncTask<Void, Object, String>() { @Override protected String doInBackground(Void... params) { String msg = ""; try { if (gcm == null) { gcm = GoogleCloudMessaging.getInstance(context); } regid = gcm.register(SENDER_ID); msg = "Device registered, registration ID=" + regid; //Here I save the registration ID, and when I try to use it manually, by running the PHP above, I get the error. sendRegistrationIdToBackend(); // Persist the registration ID - no need to register again. storeRegistrationId(context, regid); } catch (IOException ex) { msg = "Error :" + ex.getMessage(); } return msg; } @Override protected void onPostExecute(String msg) { Toast.makeText(context, msg + "\n", Toast.LENGTH_SHORT).show(); } }.execute(null, null, null);
After starting the application and calling the method that registers the application, I get the registration identifier. Then when I type localhost/app/sendNotification.php?id=xxxxxxxxxxxxxx , I get
{"multicast_id":8460288429151356251,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}