Genera notifiche dalla tua app Web con l'API pushover

Cosa starai creando

Il pushover è uno dei miei servizi preferiti negli ultimi anni; rende facile ed economico per gli sviluppatori inviare notifiche push a dispositivi iOS e Android senza dover sviluppare una propria applicazione. 

Aggiunge anche di recente le notifiche del browser desktop. Il servizio è ampiamente gratuito per l'utilizzo a basso livello e le app richiedono solo una commissione di $ 4,99 dopo una prova gratuita di cinque giorni; non ci sono canoni mensili. Lavorare con le sue API è semplice e ci sono librerie disponibili per una manciata di lingue diverse.

Mentre un certo numero di sviluppatori di applicazioni front-end si integrano con Pushover, ad es. IT, trovo molto utile come sviluppatore per ricevere notifiche relative alle mie applicazioni e ai miei server web. Ad esempio, ho integrato Pushover nella mia applicazione Simple Monitoring per avvisarmi dei guasti del sito web e inviare notifiche heartbeat due volte al giorno, quando non c'è niente di sbagliato. Se MySQL fallisce o il mio DNS va giù, riceverò un avviso veloce sul mio iPhone. 

Allo stesso modo, ho integrato Pushover in SimplifyEmail per inviare notifiche quando arrivano e-mail con parole chiave specifiche come "urgente" o da mittenti specifici come "Tom McFarlin" (editor di codice di Envato).

Ecco quali sono gli avvisi pushover sul tuo telefono:

Pushover offre una varietà di suoni per personalizzare le notifiche e supporta anche le ore di silenzio configurabili dall'utente, quindi non devi essere svegliato nel cuore della notte a meno che tu non voglia essere:

Ricorda, i veri SysAdmins non dormono!

Iniziare con Pushover

Per iniziare con Pushover, visita il sito web e registrati:

Quindi, installa l'applicazione mobile o il supporto per le notifiche del browser desktop. Ciascuno offre cinque giorni di utilizzo gratuito prima che ti venga richiesto di acquistarne uno per $ 4,99. Per le app iOS e Android, puoi semplicemente scaricarli dagli app store.

Quando installi l'app per dispositivi mobili, ti verrà chiesto di accedere e specificare un nome dispositivo di tua scelta, ad es. i phone.

L'impostazione delle notifiche basate sul browser desktop è leggermente diversa. Visita la pagina Pushover per desktop e scegli un nome semplice per le notifiche del browser Pushover:

Indica al tuo browser di consentire le notifiche:

Quindi, visualizzerai l'app in-browser del desktop di Pushover:

In definitiva, le notifiche desktop di Pushover avranno questo aspetto:

Una volta installato Pushover sul dispositivo e sui browser Web, è possibile iniziare a inviare notifiche di prova dal sito Web di Pushover:

Ma il divertimento è appena iniziato: iniziamo a utilizzare l'API Pushover.

Sviluppo con l'API pushover

Il pushover richiede che tu registri ciascuna applicazione. Visita la tua pagina di app:

 E registra una nuova applicazione:

Ti verrà fornito un token API da utilizzare per inviare notifiche dalla tua applicazione:

La home page di Pushover offre alcuni semplici esempi di invio di notifiche con arricciare:

curl_setopt_array ($ ch = curl_init (), array (CURLOPT_URL => "https://api.pushover.net/1/messages.json", CURLOPT_POSTFIELDS => array ("token" => "your-api-token", "user" => "your-user-id", "message" => "hello world",), CURLOPT_SAFE_UPLOAD => true,)); curl_exec ($ ch); curl_close ($ ch);

Ma, per Simple Monitor e Simplify Email, uso la libreria PHP Pushover di Chris Schalenborgh. Ad esempio, in SimpleMonitor, utilizzo uno sfondo CronController che esegue tutti i test che l'utente finale configura attraverso l'interfaccia utente Web: 

classe CronController estende Controller funzione pubblica actionIndex () $ result = Content :: model () -> testAll (); $ this-> render ('index', array ('risultato' => $ risultato,));  

Ecco un esempio dell'elenco dei miei controlli di Simple Monitor che attiva diversi suoni di notifica Pushover:

Mio TestAll metodo, chiamato da cron, elabora ciascuno dei test configurati dall'utente. In caso di errore, notifica ogni dispositivo registrato. Se non ci sono errori, determina se è il momento di inviare nuovamente una notifica heartbeat, facendomi sapere che il monitor è ancora attivo e in esecuzione:

funzione pubblica testAll () $ str = "; $ errors = false; // controlla tutti gli elementi di contenuto $ checks = Content :: model () -> findAll (); foreach ($ controlla come $ item) // esegue il test $ str. = '

Verifica. $ Item ['name']. '...'; $ result = Content :: model () -> test ($ item ['id']); // se c'è un errore invia una notifica al dispositivo se (! $ result-> status) if ($ item ['type'] == self :: TYPE_CHANGES) $ temp_result_string = 'Page Changed'; else $ temp_result_string = 'Fallito'; $ Str. = $ Temp_result_string '.
'; $ str. = 'Si prega di verificare'. $ item ['url']. '
'; if ($ item ['device_id'] == 0) // invia a tutti i dispositivi $ devices = Device :: model () -> findAll (); foreach ($ devices as $ device) Content :: model () -> notify ($ device, $ item ['name']. ". $ temp_result_string, 'Per favore check in ...', $ item ['url'], 'this page', 1, $ item ['sound']); $ str. = 'Notifica'. $ device ['name']. '
'; else $ device = Device :: model () -> findByPk ($ item ['device_id']); Content :: model () -> notify ($ device, $ item ['name']. ". $ Temp_result_string, 'Please check in ...', $ item ['url'], 'this page', 1, $ item ['sound']); $ str. = 'Notifica'. $ device ['name']. '
'; $ str. = '

'; $ errors = true; else $ str. = 'successo

'; // controlla l'invio heartbeart if (! $ errors) // inviami una notifica con heartbeat ogni heartbeat_interval ore // note: cron deve essere eseguito ogni dieci minuti o cambiare 10 di seguito per adattarsi all'intervallo // il punto di data ( 'io')<10 is to send heartbeat only in first part of any hour $setting = Setting::model()->getsettings (); if ((date ('G')% $ setting ['pushover_heartbeat_interval']) == 0 e date ('i')<10) $this->sendHeartbeat (); $ Str. ='

Heartbeat inviato.

'; else $ str. = '

Saltato il battito cardiaco per ora.

'; return $ str;

Il mio metodo di notifica è ciò che effettivamente chiama la libreria PHP di Pushover per inviare le notifiche. Questo è quello che potresti usare nella tua applicazione:

 // invia notifica al dispositivo mobile admin tramite notifica pubblica pushover ($ device, $ title = ", $ message =", $ url = ", $ urlTitle =", $ priority = 1, $ sound = 'gamelan', $ debug = false) if ($ device ['send_email'] <> Device :: SEND_EMAIL) // carica la chiave pushover da Impostazioni $ setting = Setting :: model () -> getSettings (); $ po = new Pushover (); $ Po-> setToken ($ impostazione [ 'pushover_app_api_token']); $ Po-> setuser ($ dispositivo [ 'pushover_user_key']); $ Po-> setDevice ($ dispositivo [ 'pushover_device']); $ Po-> setSound ($ suono); $ Po-> setTitle ($ titolo); $ Po-> setMessage ($ messaggio); if ($ url <> ") $ po-> setUrl ($ url); if ($ urlTitle <>") $ po-> setUrlTitle ($ urlTitle);  $ po-> setPriority ($ priority); $ Po-> setTimestamp (time ()); $ Po-> setDebug (true); $ vai = $ po-> invia (); se ($ debug) echo '
'; print_r ($ go); eco '
';

Come sviluppatore, ho trovato che Pushover è estremamente utile per l'invio di notifiche in assenza di un'applicazione mobile dedicata. Per me, l'app mobile di Pushover è come una dashboard SysAdmin che non ho dovuto creare. Ma è anche ottimo per l'invio di notifiche per e-mail importanti o altri eventi del server. È anche divertente scherzare con i tuoi amici se riesci a procurarti i token utente e i nomi dei dispositivi; ma non lo farei mai.

Conclusione

Spero ti piaccia usare Pushover tanto quanto me. Se desideri esplorare servizi alternativi a Pushover, controlla Boxcar e Panacea. Mi piacerebbe sentire i tuoi pensieri. 

Si prega di inviare commenti, correzioni o idee aggiuntive di seguito. Puoi sfogliare i miei altri Tuts + tutorial sulla mia pagina dell'autore o seguirmi su Twitter @reifman.