Notificaciones de Google Firebase que funcionan en la consola pero no en la API
La notificación funciona bien cuando se envía desde la consola de Firebase, pero no funciona cuando se envía desde la API. Incluso cuando el resultado muestra un éxito: {"multicast_id": 5946406103096345260, "éxito": 1, "falla": 0, "canonical_ids": 0, "resultados": [{"message_id": "0: 1480093752122166% 13791f60f9fd7ecd" }]}
De todos modos, aquí está el código:
<?php
// Payload data you want to send to Android device(s)
// (it will be accessible via intent extras)
$data = array('title' => 'Notification Title' ,'message' => 'Hello World!');
// The recipient registration tokens for this notification
$ids = array('TOKEN');
// Send push notification via Google Cloud Messaging
sendPushNotification($data, $ids);
function sendPushNotification($data, $ids)
{
// Insert real GCM API key from the Google APIs Console
$apiKey = 'API_KEY';
// Set POST request body
$post = array(
'registration_ids' => $ids,
'data' => $data,
);
// Set CURL request headers
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
// Initialize curl handle
$ch = curl_init();
// Set URL to GCM push endpoint
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
// Set request method to POST
curl_setopt($ch, CURLOPT_POST, true);
// Set custom request headers
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Get the response back as string instead of printing it
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set JSON post data
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post));
// Actually send the request
$result = curl_exec($ch);
// Handle errors
if (curl_errno($ch))
{
echo 'GCM error: ' . curl_error($ch);
}
// Close curl handle
curl_close($ch);
// Debug GCM response
echo $result;
}
?>