Les notifications Push : les bases

Les notifications Push sous Windows Phone 7 sont assez facile à mettre en place. Nous allons dans cet article voir comment elles fonctionnent. Si vous n’êtes pas familier avec les différents types de notification (live tile, toast, raw) je vous invite à lire cet article de la msdn avant.

 

Fonctionnement

Pour s’abonner aux notifications, voilà les étapes à suivre :

Abonnement au service de notification (une seule fois) :

  • 1 : Enregistrement du téléphone sur le serveur de notification (notre méthode Open précédente)
  • 2 : On récupère le ChannelUri
  • 3 : On envoie l’Uri à notre serveur

Ensuite lorsque l’on souhaite envoyer une notification :

  • 4 : Notre serveur poste la notification en utilisant l’uri précédemment reçu
  • 5 : Le serveur Microsoft pousse la notification vers le terminal

Ouverture d’un canal

Afin de recevoir les notifications, il faut que l’application ouvre un canal de notification, mais auparavant il faut faire attention que l’on a pas déjà un canal associé à l’application :

myChannel = HttpNotificationChannel.Find("monCanal");
if (myChannel == null)
{
myChannel = new HttpNotificationChannel("monCanal");
myChannel.Open();
}

Envoie du ChannelUri à votre serveur

Si vous souhaitez utiliser les notifications Toast ou Raw, envoyez le channelUri à votre serveur dès que vous recevez l’évènement ’ChannelUriUpdated’, afin de pouvoir recevoir dès que possible les notifications.

Toutefois si vous n’utilisez que les notifications Tile, rien de vous empêche de l’envoyer qu’à la fermeture de l’application, ce qui a deux avantages à mes yeux :

  • diminuer le nombre de requêtes entre le téléphone et le serveur, si l’utilisateur entre temps se désabonne des notifications push, puis se réabonne, etc.., vous économiserez du temps.
  • si vous souhaitez mettre à jour la tuile à la fermeture de l’application, vous devez donc envoyer des informations à votre serveur pour qu’il la mette à jour, autant utiliser cette requête pour envoyer le channelUri en même temps.

Attention, la channelUri peut changer avec le temps, il faudra donc vérifier à chaque fois si la channelUri a changé afin de l’envoyer à votre serveur.

S’abonner aux notifications

Une fois le canal de notification enregistré, il suffit de s’abonner pour recevoir des notifications. Ne vous enregistrez qu’aux notifications dont vous avez besoin, pas besoin de s’enregistrer aux 3 types si vous ne les utilisez pas.

Par exemple, pour demander à recevoir les notifications ‘Toast’ :


if (myChannel != null && !myChannel.IsShellToastBound)

{

myChannel.BindToShellToast();

}

et pour recevoir les notifications de type Live Tile :


if (myChannel != null && !myChannel.IsShellTileBound)

{

Collection ListOfAllowedDomains = new Collection { new Uri("http://www.rudyhuyn.com") };

myChannel.BindToShellTile(ListOfAllowedDomains);

}

A noter que par rapport aux toasts, on a utilisé un paramètre supplémentaire correspondant à l’uri du site. En effet, sans ce paramètre supplémentaire, le windows phone 7 ne vous permettra que d’afficher des ressources locales en tuile, hors si vous souhaitez générer des tuiles dynamiques, vous n’aurez pas d’autres choix que de les générer sur votre serveur et d’envoyer un lien vers celle-ci en push. L’uri permet donc ici d’indiquer les serveurs que l’on autorise pour la tuile.

Se désabonner des notifications

Pour se désabonner, il suffit de fermer le canal de notification :

if (myChannel != null)
  myChannel.Close();

Il sera aussi indispensable d’indiquer à votre serveur que l’application ne souhaite plus recevoir des notifications afin de ne pas envoyer des notifications qui seront rejeté ensuite par le serveur de Microsoft

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>