Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Une notification d’application est un message que votre application peut créer et envoyer à votre utilisateur lorsqu’ils ne se trouvent pas dans votre application.
Ce guide de démarrage rapide vous guide tout au long des étapes de création, de remise et d’affichage d’une notification d’application Windows 10 ou Windows 11 à l’aide de contenu enrichi et d’actions interactives. Ce guide de démarrage rapide utilise les notifications locales, qui sont la notification la plus simple à implémenter. Tous les types d’applications (WPF, UWP, WinForms, console) peuvent envoyer des notifications !
Note
Le terme « notification toast » est remplacé par « notification d'appli ». Ces termes font tous deux référence à la même fonctionnalité de Windows, mais au fil du temps, nous cesserons progressivement d'utiliser le terme « toast notification » dans la documentation.
Important
Si vous écrivez une application C++, veuillez consulter la documentation UWP C++ ou WRL C++ .
Étape 1 : Installer le package NuGet
Dans votre solution Visual Studio, cliquez avec le bouton droit sur votre projet, cliquez sur « Gérer les packages NuGet... » et recherchez et installez le package NuGet Microsoft.Toolkit.Uwp.Notifications version 7.0 ou ultérieure.
Important
Les applications de bureau .NET Framework qui utilisent toujours packages.config doivent migrer vers PackageReference ; sinon, les kits SDK Windows ne seront pas référencés correctement. Dans votre projet, cliquez avec le bouton droit sur « Références », puis cliquez sur « Migrer packages.config vers PackageReference ».
Les applications WPF .NET Core 3.0 doivent être mises à jour vers .NET Core 3.1 ; sinon, les API seront absentes.
Les applications .NET doivent utiliser l’un des TFMs Windows, sinon les API d’envoi de notifications et de gestion, telles que Show(), seront absentes. Définissez votre module TFM sur net6.0-windows10.0.17763.0 ou version ultérieure.
Notre exemple de code utilisera ce package. Ce package vous permet de créer des notifications d’application sans utiliser XML et permet également aux applications de bureau d’envoyer des notifications d’application.
Étape 2 : Envoyer une notification d’application
Dans Windows 10 et Windows 11, votre contenu de notification d’application est décrit à l’aide d’un langage adaptatif qui permet une grande flexibilité avec l’apparence de votre notification. Pour plus d’informations, consultez la documentation sur le contenu des notifications d’application .
Nous allons commencer par une simple notification textuelle. Construisez le contenu de notification (à l’aide de la bibliothèque Notifications) et affichez la notification ! Notez que le namespace est Microsoft.Toolkit.Uwp.Notifications.
// Requires Microsoft.Toolkit.Uwp.Notifications NuGet package version 7.0 or greater
new ToastContentBuilder()
.AddArgument("action", "viewConversation")
.AddArgument("conversationId", 9813)
.AddText("Andrew sent you a picture")
.AddText("Check this out, The Enchantments in Washington!")
.Show(); // Not seeing the Show() method? Make sure you have version 7.0, and if you're using .NET 6 (or later), then your TFM must be net6.0-windows10.0.17763.0 or greater
Essayez d’exécuter ce code et vous devriez voir la notification s’afficher !
Étape 3 : Gérer l’activation
Après avoir affiché une notification, vous devez probablement gérer l’utilisateur en cliquant sur la notification (que cela signifie afficher du contenu spécifique une fois que l’utilisateur l’a cliqué, ouvrir votre application en général ou effectuer une action lorsque l’utilisateur clique sur la notification).
Les étapes de gestion de l’activation diffèrent pour UWP et pour les applications de bureau empaquetées et non empaquetées.
Tout d’abord, dans votre Package.appxmanifest, ajoutez :
- Déclaration pour xmlns:com
- Déclaration pour xmlns:desktop
- Dans l’attribut IgnorableNamespaces, com et desktop
- desktop :Extension pour windows.toastNotificationActivation déclarer le CLSID de l'activateur de notification toast (à l’aide d’un nouveau GUID de votre choix).
- MSIX uniquement : com:Extension pour l’activateur COM en utilisant le GUID de l'étape n°4. Veillez à inclure le
Arguments="-ToastActivated"afin que vous sachiez que votre lancement provient d’une notification
Package.appxmanifest
<!--Add these namespaces-->
<Package
...
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
IgnorableNamespaces="... com desktop">
...
<Applications>
<Application>
...
<Extensions>
<!--Specify which CLSID to activate when toast clicked-->
<desktop:Extension Category="windows.toastNotificationActivation">
<desktop:ToastNotificationActivation ToastActivatorCLSID="replaced-with-your-guid-C173E6ADF0C3" />
</desktop:Extension>
<!--Register COM CLSID LocalServer32 registry key-->
<com:Extension Category="windows.comServer">
<com:ComServer>
<com:ExeServer Executable="YourProject\YourProject.exe" Arguments="-ToastActivated" DisplayName="Toast activator">
<com:Class Id="replaced-with-your-guid-C173E6ADF0C3" DisplayName="Toast activator"/>
</com:ExeServer>
</com:ComServer>
</com:Extension>
</Extensions>
</Application>
</Applications>
</Package>
Ensuite, dans le code de démarrage de votre application (App.xaml.cs OnStartup pour WPF), inscrivez-vous à l’événement OnActivated.
// Listen to notification activation
ToastNotificationManagerCompat.OnActivated += toastArgs =>
{
// Obtain the arguments from the notification
ToastArguments args = ToastArguments.Parse(toastArgs.Argument);
// Obtain any user input (text boxes, menu selections) from the notification
ValueSet userInput = toastArgs.UserInput;
// Need to dispatch to UI thread if performing UI operations
Application.Current.Dispatcher.Invoke(delegate
{
// TODO: Show the corresponding content
MessageBox.Show("Toast activated. Args: " + toastArgs.Argument);
});
};
Lorsque l’utilisateur clique sur l’une de vos notifications (ou un bouton sur la notification), la commande suivante se produit...
Si votre application est en cours d’exécution...
- L’événement ToastNotificationManagerCompat.OnActivated sera appelé sur un thread d’arrière-plan.
Si votre application est actuellement fermée...
- L’exe de votre application sera lancé et
ToastNotificationManagerCompat.WasCurrentProcessToastActivated()retournera true pour indiquer que le processus a été démarré en raison d’une activation moderne et que le gestionnaire d’événements sera bientôt appelé. - Ensuite, l’événement ToastNotificationManagerCompat.OnActivated sera appelé sur un thread d’arrière-plan.
Étape 4 : Gérer la désinstallation
Tu n’as rien à faire ! Lorsque les applications MSIX sont désinstallées, toutes les notifications et toutes les autres ressources associées sont automatiquement nettoyées.
Ajouter des images
Vous pouvez ajouter du contenu enrichi aux notifications. Nous allons ajouter une image inline et une image de profil (remplacement du logo de l’application).
Note
Les images peuvent être utilisées à partir du package de l’application, du stockage local de l’application ou du web. À compter de Fall Creators Update, les images web peuvent être jusqu’à 3 Mo sur les connexions normales et 1 Mo sur les connexions limitées. Sur les appareils qui n’exécutent pas encore Fall Creators Update, les images web ne doivent pas dépasser 200 Ko.
Important
Les images HTTP sont prises en charge uniquement dans les applications empaquetées qui ont la fonctionnalité Internet dans leur manifeste. Les applications non empaquetées ne prennent pas en charge les images HTTP ; vous devez télécharger l’image sur vos données d’application locale et les référencer localement.
// Construct the content and show the toast!
new ToastContentBuilder()
...
// Inline image
.AddInlineImage(new Uri("https://picsum.photos/360/202?image=883"))
// Profile (app logo override) image
.AddAppLogoOverride(new Uri("ms-appdata:///local/Andrew.jpg"), ToastGenericAppLogoCrop.Circle)
.Show();
Ajouter des boutons et des entrées
Vous pouvez ajouter des boutons et des entrées pour rendre vos notifications interactives. Les boutons peuvent lancer votre application de premier plan, un protocole ou votre tâche en arrière-plan. Nous allons ajouter une zone de texte de réponse, un bouton « Like » et un bouton « Afficher » qui ouvre l’image.
int conversationId = 384928;
// Construct the content
new ToastContentBuilder()
.AddArgument("conversationId", conversationId)
...
// Text box for replying
.AddInputTextBox("tbReply", placeHolderContent: "Type a response")
// Buttons
.AddButton(new ToastButton()
.SetContent("Reply")
.AddArgument("action", "reply")
.SetBackgroundActivation())
.AddButton(new ToastButton()
.SetContent("Like")
.AddArgument("action", "like")
.SetBackgroundActivation())
.AddButton(new ToastButton()
.SetContent("View")
.AddArgument("action", "viewImage")
.AddArgument("imageUrl", image.ToString()))
.Show();
L’activation des boutons de premier plan est gérée de la même façon que le corps de notification principal (votre App.xaml.cs OnActivated sera appelé).
Notez que les arguments ajoutés à la notification d’application de niveau supérieur (comme l’ID de conversation) sont également retournés lorsque les boutons sont cliqués, tant que les boutons utilisent l’API AddArgument comme indiqué ci-dessus (si vous avez personnalisé affecter des arguments sur un bouton, les arguments de niveau supérieur ne seront pas inclus).
Gérer l’activation en arrière-plan
Pour les applications de bureau, les activations en arrière-plan sont gérées de la même façon que les activations au premier plan (votre gestionnaire d’événements OnActivated sera déclenché). Vous pouvez choisir de ne pas afficher l’interface utilisateur et de fermer votre application après avoir géré l’activation.
Définir un délai d’expiration
Dans Windows 10, toutes les notifications d’application sont envoyées dans le Centre de notifications une fois qu’elles sont ignorées ou ignorées par l’utilisateur, afin que les utilisateurs puissent examiner votre notification une fois la fenêtre contextuelle supprimée.
Toutefois, si le message de votre notification ne concerne que pendant une période donnée, vous devez définir une heure d’expiration sur la notification de l’application afin que les utilisateurs ne voient pas les informations obsolètes de votre application. Par exemple, si une promotion est valide uniquement pendant 12 heures, définissez l’heure d’expiration sur 12 heures. Dans le code ci-dessous, nous définissons la durée d’expiration sur 2 jours.
Note
La durée d’expiration par défaut et maximale des notifications d’application locale est de 3 jours.
// Create toast content and show the toast!
new ToastContentBuilder()
.AddText("Expires in 2 days...")
.Show(toast =>
{
toast.ExpirationTime = DateTime.Now.AddDays(2);
});
Fournir une clé primaire pour votre notification
Si vous souhaitez supprimer ou remplacer par programmation la notification que vous envoyez, vous devez utiliser la propriété Tag (et éventuellement la propriété Group) pour fournir une clé primaire pour votre notification. Ensuite, vous pouvez utiliser cette clé primaire à l’avenir pour supprimer ou remplacer la notification.
Pour plus d’informations sur le remplacement/la suppression des notifications d’application déjà remises, consultez démarrage rapide : Gestion des notifications toast dans le centre de notifications (XAML).
L’étiquette et le groupe combinés agissent comme une clé primaire composite. Le groupe est l’identificateur plus générique, où vous pouvez affecter des groupes tels que « wallPosts », « messages », « friendRequests », etc. Ensuite, l’étiquette doit identifier de manière unique la notification elle-même à partir du groupe. En utilisant un groupe générique, vous pouvez ensuite supprimer toutes les notifications de ce groupe à l’aide de l’API RemoveGroup .
// Create toast content and show the toast!
new ToastContentBuilder()
.AddText("New post on your wall!")
.Show(toast =>
{
toast.Tag = "18365";
toast.Group = "wallPosts";
});
Effacer vos notifications
Les applications sont responsables de la suppression et de l’effacement de leurs propres notifications. Lorsque votre application est lancée, nous ne décochons pas automatiquement vos notifications.
Windows supprime automatiquement une notification si l’utilisateur clique explicitement sur la notification.
Voici un exemple de ce qu’une application de messagerie doit faire...
- L’utilisateur reçoit plusieurs notifications d’application sur les nouveaux messages d’une conversation.
- L’utilisateur appuie sur l’une de ces notifications pour ouvrir la conversation.
- L’application ouvre la conversation, puis efface toutes les notifications pour cette conversation (à l’aide de RemoveGroup sur le groupe fourni par l’application pour cette conversation).
- Le Centre de notifications de l’utilisateur reflète désormais correctement l’état de notification, car il n’existe aucune notification obsolète pour cette conversation laissée dans le Centre de notifications.
Pour en savoir plus sur l’effacement de toutes les notifications ou la suppression de notifications spécifiques, consultez Démarrage rapide : Gestion des notifications toast dans le centre d'action (XAML).
ToastNotificationManagerCompat.History.Clear();
Resources
Windows developer