Abbiamo parlato della possibilità, per un’applicazione esterna, di interagire con un’app Android tramite le notifiche push. Di seguito vedremo un esempio
di codice PHP che richiederà a Google Cloud Messaging (GCM) di inviare notifiche push alla nostra app.
Quello che vedremo di seguito è un esempio specifico, che in realtà può essere realizzato in qualunque linguaggio di programmazione: si tratta, infatti, di
una semplice richiesta HTTP caratterizzata dalle seguenti proprietà:
-
deve usare il metodo
POST
; -
deve essere indirizzata all'URL
https://android.googleapis.com/gcm/send
; -
deve contenere due header: una di tipo
Authorization
e di valorekey=
concatenato con la SERVER KEY prodotta nella Google
Developers Console (come spiegato nella lezione precedente); l'altra header specificherà invece il tipo di contenuto (Content-type: application/json
); -
nel corpo della richiesta si deve collocare un oggetto JSON che possieda due proprietà:
registration_ids
corrispondente ad una lista di REGISTRATION ID
dei dispositivi da raggiungere con la notifica, edata
contenente le informazioni da trasmettere all'app.
Lo script di esempio viene eseguito da una richiesta POST (proveniente dall'app Android) che offrirà nel parametro regid
il REGISTRATION ID che l'app ha
ricevuto da GCM. In una realizzazione più completa, la stringa ricevuta dovrebbe essere salvata in un database per essere disponibile in futuro; per semplicità, nel codice che segue non faremo altro che inviare una notifica tramite GCM che, raggiungendo il dispositivo mobile, dimostrerà la correttezza delle impostazioni eseguite.
Nell'immagine seguente, la richiesta inviata dal codice sottostante corrisponde alla freccia indicata con il numero (4).
<?php
if (isset($_POST['regid']))
{
$regid=$_POST['regid'];
$url = 'https://android.googleapis.com/gcm/send';
define("GOOGLE_API_KEY","nA5YMr_hvNLAIzBSyB3WyWb9sOCn7LjyJTiBCDQ");
$registration_ids = array($regid);
$message=array("message" => “");
$fields = array('registration_ids' => $registration_ids,'data' =>$message);
$headers = array('Authorization: key=' . GOOGLE_API_KEY,'Content-Type: application/json');
$ccurl = curl_init();
curl_setopt($ccurl, CURLOPT_URL, $url);
curl_setopt($ccurl, CURLOPT_POST, true);
curl_setopt($ccurl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ccurl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ccurl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ccurl, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ccurl);
curl_close($ccurl);
}
?>