Dans le tutorial précédent, on a vu comment envoyer une notification de type Toast à partir de son application Windows 8 Metro UI:
Windows 8 – Afficher des pop-ups de type Toast
Par défaut, les applications Windows jouent un son court quand le toast est affiché. Vous pouvez annuler ce son ou bien en donner un autre, parmi le catalogue de sons fournis par Windows 8.
Ajout de l’élément audio au template Toast
Par défaut, le template XML du Toast que vous utilisez ne contient pas de balise audio. On va d’abord récupérer une référence vers le noeud « toast » puis créer une balise <audio> qui va venir accueillir nos options audio:
var toastNode = toastXml.selectSingleNode("/toast"); var audio = toastXml.createElement("audio");
Après avoir fixé les options, il vous suffira de faire:
toastNode.appendChild(audio);
Annuler la lecture du son
Pour annuler la lecture du son par défaut, il faut définit la valeur de l’attribut « silent » à true pour la balise <audio>:
audio.setAttribute("silent", "true");
Jouer un son différent parmi le catalogue des sons Windows
Pour changer le son par défaut, vous devrez choisir parmi le catalogue des sons Windows 8 Metro et fixer l’attribut « src » du tag audio à l’identifiant du son comme ceci:
audio.setAttribute("src", "ms-winsoundevent:Notification.IM");
Voici la liste complète sur le site de Microsoft:
The toast audio options catalog (Windows Store apps)
Jouez un son qui se répète (appel, alarme, …)
Vous avez dans le catalogue des sons simples (arrivée d’un email / message, etc) ou répétés (appel, alarme). Pour les sons qui se répètent, vous devrez fixer l’attribut « loop » à « true » dans la balise audio:
audio.setAttribute("loop", "true");
Attention, la répétition du son n’est disponible que pour les toast indiqué comme étant de longue durée.
Spécifier un Toast avec affichage long
Par défaut, un Toast est affiché pendant une courte période de temps. Pour indiquer à Windows que le Toast doit être affiché plus longtemps, pour prévenir l’utilisateur d’un appel entrant par exemple, vous devrez affecter la variable « duration » sur le tag <toast>:
var toastNode = toastXml.selectSingleNode("/toast"); toastNode.setAttribute("duration", "long");