Generați notificări din aplicația dvs. Web cu API-ul Pushover

Ce veți crea

Pushover-ul este unul dintre serviciile mele preferate din ultimii ani; îl face ușor și ieftin pentru dezvoltatori să trimită notificări push către dispozitive iOS și Android fără a trebui să dezvolte propria aplicație. 

De asemenea, a adăugat recent și notificări ale browserului desktop. Serviciul este în mare parte gratuit pentru utilizarea la un nivel scăzut, iar aplicațiile necesită doar o taxă de 4,99 USD după un proces gratuit de cinci zile; nu există nici o taxă lunară. Lucrul cu API-ul său este simplu și există biblioteci disponibile pentru o mână de limbi diferite.

În timp ce o serie de dezvoltatori de aplicații de tip front se integrează cu Pushover, de ex. IT, mi se pare cel mai util ca dezvoltator pentru primirea notificărilor legate de propriile mele aplicații și servere web. De exemplu, am integrat aplicația Pushover în aplicația mea de monitorizare simplă pentru a mă avertiza în legătură cu eșecurile site-ului, precum și pentru a trimite notificări de două ori pe zi, când nimic nu este în neregulă. Dacă MySQL nu reușește sau dacă DNS-ul meu va cădea, voi primi o alertă rapidă la iPhone-ul meu. 

În mod similar, am integrat Pushover în SimplifyEmail pentru a trimite notificări când sosesc e-mailuri cu cuvinte cheie specifice cum ar fi "urgent" sau de la expeditori specifici, cum ar fi "Tom McFarlin" (Editorul de cod Envato).

Iată cum arată alertele Pushover pe telefon:

Pushover oferă o varietate de sunete pentru a personaliza notificările și, de asemenea, suportă ore liniștite configurabile de către utilizatori, astfel încât să nu trebuiască să vă treziți în mijlocul nopții dacă nu doriți să fiți:

Amintiți-vă, real Sysadmins nu dormi!

Noțiuni de bază cu Pushover

Pentru a începe cu Pushover, vizitați site-ul web și înscrieți-vă:

Apoi, instalați fie aplicația mobilă, fie suportul de notificare pentru browserul desktop. Fiecare oferă 5 zile de utilizare gratuită înainte de a fi obligat să cumpărați fiecare câte 4,99 USD. Pentru aplicațiile iOS și Android, le puteți descărca din magazinele de aplicații.

Când instalați aplicația mobilă, vă va solicita să vă conectați și să specificați un nume de dispozitiv ales de dvs., de ex. iPhone.

Configurarea notificărilor bazate pe browserul desktop este puțin diferită. Accesați pagina Pushover for Desktop și alegeți un nume simplu pentru notificările browserului Pushover:

Instruiți browserul dvs. pentru a permite notificările:

Apoi, veți vedea aplicația Pushover desktop în browser:

În cele din urmă, notificările desktop de la Pushover vor arăta astfel:

Odată ce ați instalat funcția Pushover pe dispozitiv și pe browserele dvs. web, puteți începe să trimiteți notificări de testare de pe site-ul Web Pushover:

Dar distracția începe doar să începem să folosim API Pushover.

Dezvoltarea cu API-ul Pushover

Pushover necesită înregistrarea fiecărei aplicații. Doar accesați pagina dvs. de aplicații:

 Și înregistrați o nouă cerere:

Veți primi un indicativ API pentru a trimite notificări din aplicația dvs.:

Pagina de pornire Pushover oferă câteva exemple simple de trimitere a notificărilor cu răsuci:

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

Dar, pentru Simple Monitor și Simplify Email, folosesc biblioteca PHP Pushover a lui Chris Schalenborgh. De exemplu, în SimpleMonitor, folosesc un CronController de fundal care rulează toate testele configurate de utilizatorul final prin interfața de utilizator web: 

class CronController extinde Controller public function actionIndex () $ rezultat = Conținut :: model () -> testAll (); $ this-> render ('index', array ('rezultat' => $ rezultat,));  

Iată un exemplu de listă a controalelor mele de către Simple Monitor, care declanșează diferite sunete de notificare Pushover:

Mele TestAll metoda, numită de cron, procesează fiecare dintre testele configurate de utilizator. Dacă există o eroare, acesta notifică fiecare dispozitiv înregistrat. Dacă nu există nici un eșec, acesta determină dacă este timpul să retrimiteți o notificare a bătăilor inimii, permițându-mi să știu că monitorul este încă în funcțiune:

funcția publică testAll () $ str = "; $ errors = false; // monitorizează toate elementele de conținut $ checks = Conținut :: model () -> findAll (); foreach ($ verifică ca $ item) test $ str. = '

Verificați '. $ Item [' name '].' ... '; $ result = Conținut :: model () -> test ($ item ['id']); // dacă există o eroare la trimiterea notificării către dispozitiv dacă (! $ result-> status) if ($ item ['type'] == self :: TYPE_CHANGES) $ temp_result_string = 'Page Changed'; altceva $ temp_result_string = 'Eșuat'; $ Str. = $ Temp_result_string „.
„; $ str. = 'Verifică'. $ item ['url']. '
„; dacă ($ item ['device_id'] == 0) // trimite către toate dispozitivele $ devices = Device :: model () -> findAll (); foreach ($ dispozitive ca $ device) Conținut :: model () -> notificare ($ device, $ item ['name']. $ temp_result_string, 'Check in ...', $ item ['url' 'this page', 1, $ item ['sunet']); $ str. = 'Notificarea' $ device ['name']. '
„; altceva $ device = Device :: model () -> findByPk ($ item ['device_id']); Conținutul :: modelul () -> notificați ($ device, $ item ['name']. '$ Temp_result_string,' Verificați în ... ', $ item [' url '],' this page ' ['sunet']); $ str. = 'Notificarea' $ device ['name']. '
„; $ str. = '

„; $ errors = true; altceva $ str. = 'succes

„; / / verifica daca ai trimis heartbeart in cazul in care (! $ errors) // doar notificati-mi cu bataile inimii la fiecare inima timebeat_interval // nota: cron trebuie sa ruleze la fiecare 10 minute sau sa schimbe 10 de mai jos pentru a se potrivi cu intervalul dumneavoastra // punctul de date 'i')<10 is to send heartbeat only in first part of any hour $setting = Setting::model()->getSettings (); dacă ((data ('G')% $ setarea ['pushover_heartbeat_interval']) == 0 și data ('i')<10) $this->sendHeartbeat (); $ Str. =“

Heartbeat trimis.

„; altceva $ str. = '

A bătut bataile inimii pentru moment.

„; returnează $ str;

Metoda Notificare este ceea ce numește biblioteca PHP Pushover pentru a trimite notificările. Așa puteți utiliza în aplicația dvs.:

 // trimiteți notificări dispozitivului administrativ prin intermediul funcției publice de notificare prin strigare ($ device, $ title = ", $ message =", $ url = ", $ urlTitle =", $ prioritate = 1, $ sound = 'gamelan' debug = false) if ($ device ['send_email']] <> Device :: SEND_EMAIL) // încărcați tasta pushover din Settings $ setting = Setting :: model () -> getSettings (); $ po = nou Pushover (); $ Po-> setToken ($ setarea [ 'pushover_app_api_token']); $ Po-> setUser ($ dispozitiv [ 'pushover_user_key']); $ Po-> setDevice ($ dispozitiv [ 'pushover_device']); $ Po-> setSound ($ sunet); $ Po-> SetTitle (titlu $); $ Po-> setMessage ($ mesaj); dacă $ url <> ") $ po-> setUrl ($ url); dacă ($ urlTitle <>") $ po-> setUrlTitle ($ urlTitle);  $ po-> setPrioritate ($ prioritate); $ Po-> setTimestamp (timp ()); $ Po-> setDebug (true); $ go = $ po-> trimite (); dacă ($ debug) echo '
„; print_r ($ merge); echo "
„;

În calitate de dezvoltator, am descoperit că Pushover este extrem de util pentru furnizarea de notificări în absența unei aplicații mobile dedicate. Pentru mine, aplicația mobilă Pushover este ca un tablou de bord SysAdmin pe care nu aveam de gând să-l construiesc. Dar este, de asemenea, minunat pentru trimiterea de notificări pentru e-mailuri importante sau alte evenimente de server. Este, de asemenea, distractiv să-ți glumesc prietenii dacă poți să-ți ții jetoanele de utilizator și numele dispozitivelor; dar nu aș face asta niciodată.

Concluzie

Sper că vă place să folosiți Pushover la fel de mult ca și mine. Dacă doriți să explorați servicii alternative la Pushover, verificați Boxer și Panacea. Mi-ar plăcea să vă aud gândurile. 

Vă rugăm să postați comentariile, corecțiile sau ideile suplimentare de mai jos. Aveți posibilitatea să parcurgeți alte tutoriale Tuts + pe pagina autorului meu sau urmați-mă pe Twitter @reifman.

Cod