Générer des notifications à partir de votre application Web avec l'API Pushover

Ce que vous allez créer

Pushover est l'un de mes services préférés au cours des dernières années. il est facile et peu coûteux pour les développeurs d'envoyer des notifications push à des appareils iOS et Android sans avoir à développer leur propre application. 

Il a également récemment ajouté des notifications de navigateur de bureau. Le service est en grande partie gratuit pour une utilisation peu intensive et les applications ne requièrent que des frais de 4,99 $ après un essai gratuit de cinq jours. il n'y a pas de frais mensuels. Travailler avec son API est simple et il existe des bibliothèques pour une poignée de langages différents.

Alors qu'un certain nombre de développeurs d'applications frontales s'intègrent à Pushover, par exemple, En informatique, je le trouve particulièrement utile en tant que développeur pour recevoir des notifications relatives à mes propres applications et serveurs Web. Par exemple, j'ai intégré Pushover dans mon application Simple Monitoring pour m'alerter des défaillances de sites Web et envoyer des notifications de pulsation deux fois par jour lorsque rien ne va pas. Si MySQL échoue ou que mon DNS tombe en panne, je reçois une alerte rapide sur mon iPhone.. 

De même, j'ai intégré Pushover dans SimplifyEmail pour envoyer des notifications lorsque des courriers électroniques contenant des mots clés spécifiques tels que "urgent" ou provenant d'expéditeurs spécifiques tels que "Tom McFarlin" (l'éditeur de code d'Envato).

Voici à quoi ressemblent les alertes Pushover sur votre téléphone:

Pushover offre une variété de sons permettant de personnaliser les notifications. Il prend également en charge les heures silencieuses configurables par l'utilisateur. Vous n'avez donc pas à vous réveiller au milieu de la nuit, à moins que vous ne souhaitiez être:

N'oubliez pas que les vrais administrateurs système ne dorment pas!

Commencer avec Pushover

Pour commencer à utiliser Pushover, visitez le site Web et inscrivez-vous:

Ensuite, installez l’application mobile ou le support de notification du navigateur de bureau. Chacun offre cinq jours d'utilisation gratuite avant de devoir acheter chacun pour 4,99 $. Pour les applications iOS et Android, vous pouvez simplement les télécharger depuis les magasins d'applications..

Lorsque vous installez l'application mobile, il vous sera demandé de vous connecter et de spécifier un nom d'appareil de votre choix, par exemple. iPhone.

La configuration des notifications basées sur le navigateur du bureau est un peu différente. Visitez la page Pushover for Desktop et choisissez un nom simple pour les notifications de votre navigateur Pushover:

Demandez à votre navigateur d'autoriser les notifications:

Ensuite, vous verrez l'application Pushover Desktop dans votre navigateur:

En fin de compte, les notifications de bureau de Pushover ressembleront à ceci:

Une fois que vous avez installé Pushover sur votre appareil et sur les navigateurs Web, vous pouvez commencer à envoyer des notifications de test à partir du site Web Pushover:

Mais le plaisir ne fait que commencer - commençons par utiliser l'API Pushover.

Développer avec l'API Pushover

Pushover nécessite que vous enregistriez chaque application. Il suffit de visiter votre page d'applications:

 Et enregistrez une nouvelle application:

Vous recevrez un jeton d'API à utiliser pour envoyer des notifications à partir de votre application:

La page d'accueil de Pushover offre quelques exemples simples d'envoi de notifications avec boucle:

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

Mais, pour Simple Monitor et Simplify Email, j'utilise la bibliothèque PHP Pushover de Chris Schalenborgh. Par exemple, dans SimpleMonitor, j'utilise un CronController en arrière-plan qui exécute tous les tests configurés par l'utilisateur final via l'interface utilisateur Web: 

La classe CronController étend Controller fonction publique actionIndex () $ result = Content :: model () -> testAll (); $ this-> render ('index', array ('result' => $ result,));  

Voici un exemple de la liste de mes contrôles de Simple Monitor qui déclenchent différents sons de notification Pushover:

ma TestAll méthode, appelée par cron, traite chacun des tests configurés par l'utilisateur. En cas de panne, il en avertit chaque périphérique enregistré. S'il n'y a pas d'échec, il détermine s'il est temps de renvoyer une notification de pulsation, me laissant savoir que le moniteur est toujours opérationnel:

fonction publique testAll () $ str = "; $ errors = false; // surveille tous les éléments de contenu $ checks = Content :: model () -> findAll (); foreach ($ vérifie comme $ item) // effectue la test $ str. = '

Vérification de '. $ Item [' name '].'… '; $ result = Content :: model () -> test ($ item ['id']); // s'il y a une erreur, envoie une notification à l'appareil if (! $ result-> status) if ($ item ['type'] == self :: TYPE_CHANGES) $ temp_result_string = 'Page modifiée'; else $ temp_result_string = 'Echec'; $ str. = $ temp_result_string. '
'; $ str. = 'Veuillez cocher'. $ item ['url']. '
'; if ($ item ['device_id'] == 0) // envoyer à tous les périphériques $ devices = Device :: model () -> findAll (); foreach ($ devices as $ device) Content :: model () -> notify ($ device, $ item ['name']. ". $ temp_result_string, 'Veuillez vérifier dans ...', $ item ['url'], 'this page', 1, $ item ['sound']); $ str. = 'Notifier'. $ device ['name']. '
'; else $ device = Device :: model () -> findByPk ($ item ['device_id']); Content :: model () -> notify ($ device, $ item ['name']. ". $ Temp_result_string, 'Veuillez vérifier dans…', $ item ['url'], 'cette page', 1, $ item ['sound']); $ str. = 'Notifier'. $ device ['name']. '
'; $ str. = '

'; $ errors = true; else $ str. = 'succès

'; // vérifie l'envoi de heartbeart if (! $ errors) // ne m'avise que par pulsations cardiaques toutes les heartbeat_interval hours // remarque: cron doit s'exécuter toutes les dix minutes ou changer 10 par la suite pour s'adapter à votre intervalle // le point de date ( 'je')<10 is to send heartbeat only in first part of any hour $setting = Setting::model()->getSettings (); if ((date ('G'))% $ setting ['pushover_heartbeat_interval']) == 0 et date ('i')<10) $this->sendHeartbeat (); $ str. = '

Battement de coeur envoyé.

'; else $ str. = '

Battement de coeur ignoré pour l'instant.

'; return $ str;

Ma méthode Notify est ce qui appelle réellement la bibliothèque Pushover PHP pour envoyer les notifications. Voici ce que vous pourriez utiliser dans votre propre application:

 // envoie une notification à un appareil mobile admin via une fonction publique pushover ($ device, $ title = ", $ message =", $ url = ", $ urlTitle =", $ priority = 1, $ sound = 'gamelan', $ debug = false) if ($ device ['send_email'] <> Device :: SEND_EMAIL) // charge la clé de transfert depuis les paramètres $ setting = Setting :: model () -> getSettings (); $ po = new Pushover (); $ po-> setToken ($ setting ['pushover_app_api_token']); $ po-> setUser ($ device ['pushover_user_key']); $ po-> setDevice ($ device ['pushover_device']); $ po-> setSound ($ sound); $ po-> setTitle ($ title); $ po-> setMessage ($ message); if ($ url <> ") $ po-> setUrl ($ url); if ($ urlTitre <>") $ po-> setUrlTitle ($ urlTitre);  $ po-> setPriority ($ priorité); $ po-> setTimestamp (time ()); $ po-> setDebug (true); $ go = $ po-> send (); if ($ debug) echo '
'; print_r ($ go); écho '
';

En tant que développeur, j'ai trouvé que Pushover était extrêmement utile pour l'envoi de notifications en l'absence d'une application mobile dédiée. Pour moi, l'application mobile de Pushover est comme un tableau de bord SysAdmin que je n'avais pas à créer. Mais c’est également un excellent moyen d’envoyer des notifications pour des courriels importants ou d’autres événements sur le serveur. C'est également amusant de blaguer vos amis si vous pouvez obtenir leurs jetons d'utilisateur et leurs noms de périphérique; mais je ne ferais jamais ça.

Conclusion

J'espère que vous apprécierez autant que moi d'utiliser Pushover. Si vous souhaitez explorer des services alternatifs à Pushover, consultez Boxcar et Panacea. J'aimerais entendre vos pensées. 

S'il vous plaît poster des commentaires, des corrections ou des idées supplémentaires ci-dessous. Vous pouvez parcourir mes autres tutoriels Tuts + sur ma page d’auteur ou me suivre sur Twitter @reifman.