home Ricerca per tag "dev"


Android e le notifiche push con Firebase

Firebase Cloud Messaging (FCM), successore di Google Cloud Messaging GCM, è un servizio che offre una soluzione alla messaggistica istantanea multipiattaforma. Offerto da Google permette, oltre alla gestione di cloud database, piattaforme di testing, crash reporting e autenticazione, di inviare messaggi push in modo del tutto gratuito e illimitato. Vediamo quindi come utilizzare FCM per implementare le notifiche push in un sistema composto da un server PHP e un'applicazione Android. Per quanto riguarda il lato applicazione, Android Studio ci viene in aiuto integrando la piattaforma Firebase (raggiungibile da Tools > Firebase) e con pochi click potremo connettere l'app al servizio e inserire le dipendenze mancanti nel nostro progetto. Sarà infatti sufficiente specificare le dipendenze per la compilazione nei due file build.gradle, importare com.google.firebase.iid.FirebaseInstanceId nella classe in cui andremo ad utilizzarlo e inserire il file google-services.json - che possiamo reperire dalla console di Firebase - sotto app/ .   A questo punto la configurazione dell'applicazione è terminata e il token identificativo di registrazione al servizio sarà raggiungibile attraverso la chiamata al metodo FirebaseInstanceId.getInstance().getToken(). Possiamo verificare il corretto funzionamento direttamente dal pannello di Firebase, dove, nella pagina Notifications, potremo creare manualmente delle notifiche da inviare alla nostra applicazione.   Per quanto riguarda invece la configurazione lato server, utile per automatizzare l'invio delle push in determinate occorrenze, come potrebbe essere la pubblicazione di un nuovo articolo, avremo bisogno di uno script in PHP che, prese in input la chiave per le API lato server e i token delle applicazioni, invii la notifica. Innanzitutto dovremo ottenere la API key per il server, che possiamo trovare nel pannello di gestione delle API di Google. Dovrebbero esserci tre chiavi con la dicitura (auto created by Google Service) tra cui anche la Server Key.   Il codice seguente permette di generare una notifica e "spedirla" all'applicazione specificando $title e $body come titolo e contenuto della stessa: $msg = array(    'body' => $body,    'title' => $title,    'vibrate' => 1,    'sound' => 1,);$fields = array(    'registration_ids' => $registrationIds,    'notification' => $msg);$headers = array(    'Authorization: key=' . API_ACCESS_KEY,    'Content-Type: application/json');$ch = curl_init();curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );curl_setopt( $ch,CURLOPT_POST, true );curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );$result = curl_exec($ch );curl_close( $ch );return $result; Dove API_ACCESS_KEY è la Server Key e $registrationIds sarà un array di stringhe contenente i token delle applicazioni registrate. Per completare la procedura e renderla funzionante manca soltanto la gestione dei token. Per farlo sarà necessario salvare nel database del server tutti i codici delle applicazioni registrate, che avremo ottenuto attraverso il metodo getToken() citato all'inizio. Sarà quindi sufficiente, lato applicazione, chiamare questo metodo ed inviare il token al server attraverso una richiesta GET o PUSH, che provvederà poi a salvarlo nel database e recuperarlo all'occorrenza per popolare $registrationIds.

Newsletter: come rimanere sempre aggiornati

Ormai quasi tutti i siti web e blog che si rispettino lo offrono e di certo L'angolo nerd non poteva non vantare di questo servizio. Sto parlando della newsletter, un servizio che permette di inviare a tutti gli iscritti delle notifiche via email, solitamente alla pubblicazione di nuovi contenuti o con cadenze precise riportando le notizie più rilevanti (ad esempio settimanale o mensile). Attualmente questo servizio su L'angolo nerd è limitato alla notifica al momento della pubblicazione di ogni nuovo articolo ed è in costante perfezionamento, con la particolarità che è stato progettato per memorizzare meno dati personali possibili: viene infatti richesto soltanto l'inserimento dell'indirizzo email. L'iscrizione è semplicissima, basterà infatti inserire l'email nel form che potete trovare in fondo ad ogni pagina del sito (quello che vedete riportato in foto) e dal successivo articolo riceverete la notifica all'indirizzo specificato. Ogni volta che viene pubblicato un articolo viene infatti richiamata una funzione PHP che provvede a compilare il template dell'email e ad inviarla ad ogni email registrata nel database. Per ora si tratta semplicemente della classica funzione mail(): $headers = "MIME-Version: 1.0\r\n";$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";$headers .= "From: postmaster@langolonerd.it" . "\r\n" .mail($email, "Nuovo articolo disponibile | L'angolo nerd", $text, $headers);  Dove $email contiene l'indirizzo di destinazione e $text il template delle email compilato con i dati relativi al nuovo articolo. Questa funzione è però tanto semplice quanto limitata, in quanto non permette ad esempio di raccogliere statistiche o, cosa molto più importante, di garantire che ogni client email riesca a visualizzare correttamente il contenuto dell'email. Proprio per questo motivo in futuro potremmo decidere di appoggiarci a servizi come MailChimp o simili, che permettono di configurare la newsletter in modo da gestire liste di iscritti differenziate così come diversi template, nonchè l'invio di email cumulative in stile "Ecco cosa ti sei perso!" e la reportistica completa sulle newsletter inviate, ma in ogni caso verrete avvisati per qualsiasi modifica delle condizioni. Per concludere, nel caso in cui vi siate iscritti ma non voleste più ricevere alcuna email sarà sufficiente seguire il link che trovate in fondo all'email per cancellarvi definitivamente, con la consapevolezza che i vostri dati verranno realmente rimossi dal nostro database, non semplicemente "nascosti".