Solución:
Firebase Cloud Messaging tiene API del lado del servidor a las que puedes llamar para enviar mensajes. Consulte https://firebase.google.com/docs/cloud-messaging/server.
Enviar un mensaje puede ser tan simple como usar curl
para llamar a un punto final HTTP. Ver https://firebase.google.com/docs/cloud-messaging/server#implementing-http-connection-server-protocol
curl -X POST --header "Authorization: key=<API_ACCESS_KEY>"
--Header "Content-Type: application/json"
https://fcm.googleapis.com/fcm/send
-d "{"to":"<YOUR_DEVICE_ID_TOKEN>","notification":{"title":"Hello","body":"Yellow"}}"
Esto funciona usando CURL
function sendGCM($message, $id) {
$url="https://fcm.googleapis.com/fcm/send";
$fields = array (
'registration_ids' => array (
$id
),
'data' => array (
"message" => $message
)
);
$fields = json_encode ( $fields );
$headers = array (
'Authorization: key=' . "YOUR_KEY_HERE",
'Content-Type: application/json'
);
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );
$result = curl_exec ( $ch );
echo $result;
curl_close ( $ch );
}
?>
$message
es su mensaje para enviar al dispositivo
$id
es el token de registro de dispositivos
YOUR_KEY_HERE
es su clave de API de servidor (o clave de API de servidor heredado)
Utilice una API de servicio.
URL: https://fcm.googleapis.com/fcm/send
Tipo de método: POST
Encabezados:
Content-Type: application/json
Authorization: key=your api key
Cuerpo / Carga útil:
{ "notification": {
"title": "Your Title",
"text": "Your Text",
"click_action": "OPEN_ACTIVITY_1" // should match to your intent filter
},
"data": {
"keyname": "any value " //you can get this data as extras in your activity and this data is optional
},
"to" : "to_id(firebase refreshedToken)"
}
Y con esto en su aplicación, puede agregar el siguiente código en su actividad para ser llamado:
<intent-filter>
<action android:name="OPEN_ACTIVITY_1" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
También verifique la respuesta en Firebase onMessageReceived no llamado cuando la aplicación está en segundo plano