When I execute the code below I get:
Invalid registration token
I get the token from MYSQL database. I checked that the data returned matches with the database. Everything seems perfect, but I can't find out my error.
How can I fix or debug this code:
function send_android_notification($registration_ids, $message) {
//print_r($registration_ids);
//print_r($message);
//exit;
define("GOOGLE_API_KEY", "AAAABoqI4ac:APA91bEMNO81wwRARcQftyBhIBU1U4Bq6rLKeRZDLOPAQu-9fk8y_6bOsZWnw2JEq-uwDJXDij1SjGPJtnwG6QO_IRZ54Gbbjfp9-izJ_a7DnLoTHD9Ot6lod7C-wLaYkH2Xl6l8iR8z");
$fields = array(
'registration_ids' => array($registration_ids),
'data' => $message,
);
$headers = array(
'Authorization:key=' . GOOGLE_API_KEY, // FIREBASE_API_KEY_FOR_ANDROID_NOTIFICATION
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Disabling SSL Certificate support temporarly
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
//echo json_encode($fields);
//exit;
// Execute post
$result = curl_exec($ch);
if ($result === false) {
die('Curl failed:' . curl_errno($ch));
}
// Close connection
curl_close($ch);
return $result;
}
Solved!
Check your length of the field in which your mobile registration token is stored in your database table. Set it above 200, because the length of the token number exceeds more than 200. The API server key field must be a legacy server key provided by the firebase cloud messaging.
my working code below!