Notification Push : Serveur apache/php

Notification Push : Serveur apache/php

Il existe quelques idées reçues vis à vis de la notification push, dont notamment qu’on a besoin d’un serveur IIS avec ASP.Net pour pouvoir en faire. La faute surement à la documentation MSDN qui ne donne que des exemples en Asp.Net.

La deuxième idée reçue est que le push est difficile à mettre en en place côté serveur.  Nous allons donc essayer de contredire tout cela, mais avant un peu de vulgarisation.

Comment fonctionne le push

Avant de commencer, voyons rapidement comment fonctionne le push sur windows phone 7.

 

4 étapes sont nécessaires :

  1. Le client via HttpNotificationChannel s’enregistre auprès sur service de notification de Microsoft en indiquant quel genre de notification l’application souhaite : Brute, Tuile ou Toast. Le serveur retourne alors une uri, que l’on va nommer channel_uri.
  2. L’application envoie à votre serveur channel_uri pour le stocker en base de données (ou autres).
  3. Lorsque le serveur voudra envoyer une notification push, il enverra à l’uri channel_uri (d’où l’intérêt de la stocker) un fichier XML avec les informations relatives au message push (+ quelques infos en header http)
  4. Le serveur push de Microsoft va ensuite envoyer la notification au téléphone.

 

Juste pour information, voici à quoi ressemble une notification toast :
Headers :

X-WindowsPhone-Target: toast
X-NotificationClass: 2

Contenu :

<?xml version="1.0" encoding="utf-8"?>
<wp:Notification xmlns:wp="WPNotification">
<wp:Toast>
<wp:Text1>Hello Steve</wp:Text1>
<wp:Text2>High five !</wp:Text2>
</wp:Toast>
</wp:Notification>

X-WindowsPhone-Target : la cible : ici un ‘toast’ (une popup)
X-NotificationClass : le type de notification : 2=toast immediat (12=toast dans 450 secondes par exemple)
Text1 : le titre
Text2 : le sous titre

Donc mise à part l’étape d’enregistrement (1 et 2),  envoyer une notification sur un téléphone, techniquement parlant c’est juste envoyer un XML à une uri précise, rien de bien compliqué donc ! Idée reçue numéro 2 down !

Notification Push avec PHP

Avoir un serveur web sous IIS n’est pas forcément accessible à tout le monde, à moins d’avoir son propre serveur dédié. Toutefois, il est tout à fait possible de gérer tout cela sous apache/php.

Pour vous aider, j’ai créé une classe php permettant de facilement envoyer des notifications toast/tile/raw. Vous la trouverez sous codeplex. Voici quelques exemples d’utilisations :

Envoi d’un notification de type toast

[code lang=”php”]

$uri=”http://db3.notify.live.net/….”; //uri sended by Microsoft plateform
$notif=new WindowsPhonePushNotification($uri);
$notif->push_toast(“this is a title”,”this is the sub title”);

[/code]

Envoi d’un notification de type tile


$uri="http://db3.notify.live.net/...."; //uri sended by Microsoft plateform
$notif=new WindowsPhonePushNotification($uri);
$notif->push_tile($image_uri,"mon titre",9);

Envoi d’un notification brute


$uri="http://db3.notify.live.net/...."; //uri sended by Microsoft plateform
$notif=new WindowsPhonePushNotification($uri);
$notif->push_raw("123,23,coronso");

Et deux cadeaux bonux pour le prix d’un :

Les trois méthodes push_tile, push_toast et push_raw ont deux paramètres optionnels qui pourront peut-être vous servir :

$delay : envoyer la notification tout de suite, dans 450 secondes (7 min30) ou dans 900 secondes (15 min).

$message_id : permet spécifier un UUID qui sera retourné ensuite par le serveur. Utile potentiellement pour le deboggage

 

Comments are closed.