Enviar mensajes a Google Cloud Messaging con PHP

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).

+ fotos / videos

https://tar.mx/tar.svg

Almacenado en Android, Desarrollo Móvil

por Jorge Martínez Mauricio :)

blog / fotos / archivo

Enviar mensajes a Google Cloud Messaging con PHP

tar.mx es un blog sobre fotografía, tecnología y otras chunches

modificado lunes 12 de julio de 2021, 10:42

cuentame