Si tenemos algún proyecto en Android y ya hemos configurado la parte de recibir mensajería instantánea (push) con Google GCM, falta la parte del envío de los mensajes. En el siguiente ejemplo, se muestra como hacerlo con PHP:
$api = 'API_KEY'; //our api key from Google GCM
function envia() {
global $api;
$headers = array("Content-Type:" . "application/json", "Authorization:" . "key=" . $api);
$ids = func_get_arg(0);
$data = func_get_arg(1);
$datas = array(
'data' => $data,
'registration_ids' => $ids,
);
$ch = curl_init();
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch, CURLOPT_URL, "https://android.googleapis.com/gcm/send" );
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($datas) );
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$k = "DEVICE_ID_REGISTERED";
$enviar = Array('message'=>'test'); //text to send
$tmp = envia(array($k),$enviar);
print_r(json_decode($tmp)); //print GCM results
Si el mensaje fue enviado con éxito, entonces nos debería aparecer en el resultado algo como lo siguiente:
stdClass Object ( [multicast_id] => 8939194202085041935 ^[success] => 1 [failure] => 0 [canonical_ids] => 0 [results] => Array ( [0] => stdClass Object ( [message_id] => 0:9258962092242801%bb285fc5f9fd7ecd ) ) )
Poner atención a la variable 'success' donde indicaría que el menaje fue enviado con éxito. Este ejemplo muestra como enviar el mensaje a un dispositivo con PHP, debe tener instalada la extensión curl (casi cualquier distribución ya la trae).
https://tar.mx/tar.svg