Loupe

Notifications et tiles : quoi de neuf pour #Windows Phone 8.1 ? #WP8.1

Si une fonctionnalité peut donner vie à votre application, il s’agit bien des live tiles et des notifications. Regardons un peu ce qu’il y a de nouveau de ce côté sur Windows Phone 8.1 !

Unification et convergence

Jusqu’à présent, il y avait une dichotomie :

  • Windows Phone utilise Microsoft Platform Notifications(MPN).
  • Windows utilise Windows Notifications Services(WNS – codé par l'équipe MSN Messenger!)
      --> maintenant, à partir de WP8.1, toutes les plateformes utilisent WNS  \o/


Microsoft promet que WNS est énormément plus rapide et performant que MPN(côté device).
Pas besoin de réécrire du code par contre, la plateforme a été réécrite sans changer de namespace ou de nom de classe. Même pendant l'upgrade du téléphone vers 8.1, tout est fait automatiquement pour que les notifs continuent de marcher. Tout cela repose sous le capot sur une sorte de "proxy" nommé MPN Shim. 


Côté serveur, pas de changement non plus mais les urls de communication seront beaucoup plus longue (attention donc lorsque vous les stockez).

Comment passer sur le nouveau modèle et pourquoi ?


Il faut simplement utiliser les nouvelles APIs de "Windows.Ui.*" et "Windows.Networking.PushNotifications.*". Vous pouvez reprendre directement le code de votre App Win8.1.

N’oubliez pas non plus d’activer WNS dans votre fichier de manifest :

SNS

 

Voici par exemple le code permettant d’obtenir un canal de communication et de s’abonner aux notifications “brutes” (raw):

var getChannel = await Windows.Networking.PushNotifications.PushNotificationChannelManager
         .CreatePushNotificationChannelForApplicationAsync();

getChannel.PushNotificationReceived += getChannel_PushNotificationReceived;


//plus tard
void getChannel_PushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs args)
{

    if (args.NotificationType == PushNotificationType.Raw)
    {
        NousAInfiniteSquareTextBlock.Text = args.RawNotification.Content;
    }

}

 

Voici quelques bonnes raisons de passer sur WNS :

  • Déclencher une background task via une notification.
  • Les scenarios de mobilité avec des pertes fréquentes de connectivité ont étés testés et beaucoup améliorés.
  • Si le client est pas connecté/disponible alors les messages sont maintenant stockés par WNS et renvoyés.
  • Tout est plus rapide !
  • Plus besoin d'utiliser un certificat pour envoyer des messages sécurisés : passage sur OAuth.
  • Un nouvel outil, le Notifications Simulation Engine(NSE) fait son apparition dans le SDK WP pour permettre de simuler toute la partie WNS. C’est très pratique lorsque l’on code dans le train Smile

 

NSE

Côté code, ce qui change :

  • Dorénavant, il faut toujours demander une url avec WNS au lancement de l'App.
  • Les urls ont une durée de vie de 30 jours : il faut donc les renouveler. Utiliser une background task avec un trigger de “maintenance” est la bonne pratique.
  • Il faut avoir l'application déjà déclarée pour pouvoir commencer à utiliser OAuth. C'est sur le store que sont les secrets et id nécessaires. Par contre on peut réutiliser ceux d'une App Windows.

 

Tiles et notifications

Le système de tiles Windows Phone devient identique à celui de Windows! Nous allons enfin pouvoir profiter de tous les beaux templates de tuiles et notifications sur Windows Phone. C’est vraiment pratique car pour un même code on va pouvoir produire un résultat visuel très intéressant pour nos utilisateurs.

 

Voici ce qui apparait notamment :

  • Beaucoup, beaucoup plus de templates,
  • Possible de spécifier dans le manifest une url de polling ou un template de notification sera cherché régulièrement : pratique pour afficher une notification même si l’utilisateur n’a jamais lancé l’application.
  • Possible d’indiquer une date d’expiration : elle va donc apparaitre dans le centre de notification qu’uniquement jusqu’à sa date d’expiration.
  • Possible de spécifier plusieurs notifications à faire “tourner” régulièrement,
  • Possible de planifier des notifications à des dates/horaires précis !
  • Possible d’afficher des notifications “toasts” même si l’application est lancée : enfin !!!

 

Aussi, un nouveau type de toast fait son apparition, les toasts “fantômes/ghost” : au lieu d’afficher le toast “classique”, une icône apparait pour indiquer qu’une nouvelle notif est présent dans l’action center. Pour cela on utilise la propriété “SuppressPopup” comme dans cet exemple :

var contentXMl = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);
contentXMl.GetElementsByTagName("text").FirstOrDefault().InnerText = "Coucou !";


var notifier = Windows.UI.Notifications.ToastNotificationManager.CreateToastNotifier();
var toastNotification = new ToastNotification(contentXMl);

//Suppresion de la popup "classique"
toastNotification.SuppressPopup = true;

notifier.Show(toastNotification);

 

Il est aussi possible de spécifier un nom de “groupe” sur une notification toast. Cela permet d’envoyer beaucoup de notifications d’un coup pour les afficher dans l’action center sans “spammer” l”utilisateur.

 

Notifications/Actions center et Toasts !

Attention, ici le comportement différe en fonction des APIs que vous utilisez (WNS vs MPN) :

  • Si vous utilisez encore MPN : au lancement de l’app toutes les notifications de votre app sont vidées du notification center
  • Si vous êtes passés sur WNS : c’est à votre app de faire le nettoyage de ses notifications :
    • Remplacez ses notifications avec de nouvelles
    • Supprimez des notifications
Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus