Notifications de Mes Contacts
Important
La fonction Mes contacts n'est plus prise en charge dans les versions de Windows 11 et Windows 10 sur lesquelles Ko5034203 est appliqué.
Les notifications Mes contacts offrent aux utilisateurs une nouvelle manière d'entrer en contact avec les personnes de leur choix, rapidement et simplement. Cet article explique comment concevoir et implémenter des notifications Mes contacts dans votre application. Pour savoir comment effectuer des implémentations complètes, consultez l’exemple de notifications Mes contacts.
Spécifications
- Windows 10 et Microsoft Visual Studio 2019 (ou version ultérieure). Pour plus d’informations sur l’installation, consultez Prise en main de Visual Studio.
- Connaissances de base de C# ou d’un langage de programmation orienté objet similaire. Pour commencer à utiliser C#, consultez Créer une application « Hello, world ».
Fonctionnement
En guise d’alternative aux notifications incrustées génériques, vous pouvez désormais envoyer des notifications via la fonctionnalité Mes contacts pour offrir une expérience plus personnelle aux utilisateurs. Il s’agit d’un nouveau type d'incrustation envoyé à partir d’un contact épinglé dans la barre des tâches de l’utilisateur avec la fonctionnalité Mes contacts. Lorsque la notification est reçue, l’image de contact de l’expéditeur s’anime dans la barre des tâches et un son est émis, signalant que la notification démarre. L’animation ou l’image spécifiée dans la charge utile s’affiche pendant 5 secondes (ou, si la charge utile est une animation de moins de 5 secondes, elle est jouée en boucle pendant 5 secondes).
Types d’images pris en charge
- GIF
- Image statique (JPEG, PNG)
- Spritesheet (vertical uniquement)
Remarque
Un spritesheet est une animation dérivée d’une image statique (JPEG ou PNG). Les images individuelles sont disposées verticalement, de sorte que la première est en haut (bien que vous puissiez spécifier une image de départ différente dans la charge utile d'incrustation). Chaque image doit avoir la même hauteur, que le programme lit en boucle pour créer une séquence animée (comme un flipbook avec ses pages disposées verticalement). Vous trouverez ci-dessous un exemple de spritesheet.
Paramètres de notification
Les notifications Mes contacts utilisent l’infrastructure de notification en incrustation, mais nécessitent un nœud de liaison supplémentaire dans la charge utile d'incrustation. Cette deuxième liaison doit inclure le paramètre suivant :
experienceType="shoulderTap"
Cela indique que l'incrustation doit être traitée comme une notification Mes contacts.
Le nœud image à l’intérieur de la liaison doit inclure les paramètres suivants :
- src
- URI de la ressource. Il peut s’agir d’un URI web HTTP/HTTPS, d’un URI msappx ou d’un chemin d’accès à un fichier local.
- spritesheet-src
- URI de la ressource. Il peut s’agir d’un URI web HTTP/HTTPS, d’un URI msappx ou d’un chemin d’accès à un fichier local. Obligatoire uniquement pour les animations spritesheet.
- spritesheet-height
- Hauteur de l'image (en pixels). Obligatoire uniquement pour les animations spritesheet.
- spritesheet-fps
- Images par seconde (FPS). Obligatoire uniquement pour les animations spritesheet. Seules les valeurs comprises entre 1 et 120 sont prises en charge.
- spritesheet-startingFrame
- Numéro de l’image de début de l’animation. Utilisé uniquement pour les animations spritesheet et la valeur par défaut est 0 si elle n’est pas renseignée.
- alt
- Chaîne de texte utilisée pour la narration du lecteur d’écran.
Remarque
Lorsque vous effectuez une notification animée, vous devez toujours spécifier une image statique dans le paramètre « src ». Elle sera utilisée comme image de secours si l’animation ne parvient pas à s’afficher.
En outre, le nœud d'incrustation de niveau supérieur doit inclure le paramètre hint-people afin de spécifier le contact d’envoi. Ce paramètre peut avoir l'une des valeurs suivantes :
- Adresse e-mail
- Par exemple,
mailto:johndoe@mydomain.com
- Par exemple,
- Numéro de téléphone
- Exemple : 888-888-8888
- Identifiant distant
- Par exemple remoteid:1234
Remarque
Si votre application utilise les API ContactStore et la propriété StoredContact.RemoteId pour lier des contacts stockés sur le PC avec des contacts stockés à distance, il est essentiel que la valeur de la propriété RemoteId soit stable et unique. Cela signifie que l’ID distant doit identifier de manière cohérente un seul compte d’utilisateur et doit contenir une balise unique pour garantir l'absence de conflit avec les ID distants d’autres contacts sur le PC, y compris les contacts appartenant à d’autres applications. Si les ID distants utilisés par votre application ne sont pas garantis comme étant stables et uniques, vous pouvez utiliser la classe RemoteIdHelper pour ajouter une balise unique à tous vos ID distants avant de les ajouter au système. Vous pouvez également choisir de ne pas utiliser la propriété RemoteId du tout, et de créer une propriété étendue personnalisée dans laquelle stocker des ID distants pour vos contacts.
Outre la deuxième liaison et la charge utile, vous devez inclure une autre charge utile dans la première liaison pour l'incrustation de secours. La notification utilise cette option si elle est forcée de revenir à une incrustation normale (expliqué plus loin à la fin de cet article).
Création de la notification
Vous pouvez créer un modèle de notification Mes contacts comme vous le feriez pour une notification en incrustation.
Voici un exemple de création d’une notification Mes contacts avec une charge utile d’image statique :
<toast hint-people="mailto:johndoe@mydomain.com">
<visual lang="en-US">
<binding template="ToastGeneric">
<text hint-style="body">Toast fallback</text>
<text>Add your fallback toast content here</text>
</binding>
<binding template="ToastGeneric" experienceType="shoulderTap">
<image src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-static-payload.png"/>
</binding>
</visual>
</toast>
Lorsque vous démarrez la notification, elle doit ressembler à ceci :
Voici un exemple de création d’une notification avec une charge utile de spritesheet animé. Ce spritesheet a une hauteur d'image de 80 pixels, que nous allons animer à 25 images par seconde. Nous réglons l’image de départ sur la 15 et indiquons une image de secours statique dans le paramètre « src ». L’image de secours est utilisée si l’animation spritesheet ne parvient pas à s’afficher.
<toast hint-people="mailto:johndoe@mydomain.com">
<visual lang="en-US">
<binding template="ToastGeneric">
<text hint-style="body">Toast fallback</text>
<text>Add your fallback toast content here</text>
</binding>
<binding template="ToastGeneric" experienceType="shoulderTap">
<image src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-pizza-static.png"
spritesheet-src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-pizza-spritesheet.png"
spritesheet-height='80' spritesheet-fps='25' spritesheet-startingFrame='15'/>
</binding>
</visual>
</toast>
Lorsque vous démarrez la notification, elle doit ressembler à ceci :
Démarrage de la notification
Pour démarrer une notification Mes contacts, nous devons convertir le modèle d'incrustation en objet XmlDocument. Lorsque vous avez défini l'incrustation dans un fichier XML (ici nommé « content.xml »), vous pouvez utiliser ce code pour le démarrer :
string xmlText = File.ReadAllText("content.xml");
XmlDocument xmlContent = new XmlDocument();
xmlContent.LoadXml(xmlText);
Vous pouvez ensuite utiliser ce code pour créer et envoyer l'incrustation :
ToastNotification notification = new ToastNotification(xmlContent);
ToastNotificationManager.CreateToastNotifier().Show(notification);
Revenir à l'incrustation
Dans certains cas, une notification Mes contacts s’affiche en tant que notification en incrustation normale. Une notification Mes contacts revient à l'incrustation dans les conditions suivantes :
- La notification ne parvient pas à s’afficher
- Les notifications Mes contacts ne sont pas activées par le destinataire
- Le contact de l’expéditeur n’est pas épinglé à la barre des tâches du destinataire
Si une notification Mes contacts revient à l'incrustation, la deuxième liaison spécifique à Mes contacts est ignorée et seule la première liaison est utilisée pour afficher l'incrustation. C’est pourquoi il est essentiel de fournir une charge utile de secours dans la première liaison d'incrustation.