Utilisation des notifications d’impression dans une application d’appareil UWP

Important

Les métadonnées de l’appareil sont déconseillées et seront supprimées dans une version ultérieure de Windows. Pour plus d’informations sur le remplacement de cette fonctionnalité, consultez Métadonnées du conteneur de package de pilotes.

Les applications d’appareil UWP peuvent répondre aux événements de communication bidirectionnelle (Bidi) envoyés à partir d’un pilote d’impression v4. Cet article présente les notifications d’impression et montre comment la version C# des paramètres d’impression et de l’exemple de notifications d’impression utilise une tâche en arrière-plan pour répondre aux notifications d’impression. La tâche en arrière-plan montre comment enregistrer les détails de notification dans le magasin de données d’application local, envoyer des toasts et mettre à jour une vignette et un badge. Pour en savoir plus sur les applications d’appareil UWP en général, consultez Meet UWP device apps.

La version C# des paramètres d’impression et de l’exemple de notifications d’impression illustre la partie en arrière-plan de l’application (tâche en arrière-plan) dans le projet BackgroundTask . Le code de la tâche en arrière-plan se trouve dans le fichier PrintBackgroundTask.cs . L’application de premier plan, l’application plein écran qui peut être lancée à partir de Start, se trouve dans le projet DeviceAppForPrinters. Le fichier InkLevel.xaml.cs affiche une façon dont les détails de notification sont accessibles à partir de l’application de premier plan. Pour utiliser les notifications d’impression, l’exemple utilise la bibliothèque d’extensions d’imprimante dans le projet PrinterExtensionLibrary . La bibliothèque d’extensions d’imprimante offre un moyen pratique d’accéder aux interfaces d’extension d’imprimante du pilote d’impression v4. Pour plus d’informations, consultez la vue d’ensemble de la bibliothèque d’extensions d’imprimante.

Les exemples de code présentés dans cet article sont basés sur la version C# des paramètres d’impression et de l’exemple de notifications d’impression. Cet exemple est également disponible en JavaScript et en C++. Étant donné que C++ peut accéder directement à COM, la version C++ de l’exemple n’inclut pas de projets de bibliothèque de code. Téléchargez les exemples pour afficher les dernières versions du code.

Les notifications d’impression permettent à votre application UWP sur votre appareil d’informer l’utilisateur d’événements importants liés à l’imprimante lors de l’impression, tels qu’un bourrage papier, une porte d’imprimante ouverte, des niveaux d’encre faibles ou des erreurs de manque de papier. Lorsqu’une imprimante déclenche une notification, le répartiteur d’événements système exécute la tâche en arrière-plan de votre application. À partir de là, la tâche en arrière-plan peut enregistrer les détails de la notification, envoyer un toast, mettre à jour une vignette, mettre à jour un badge ou ne rien faire. En enregistrant les détails des notifications, votre application peut fournir une expérience qui aide les utilisateurs à comprendre et à résoudre leurs problèmes d’imprimante.

Les fabricants d’imprimantes doivent implémenter Bidi et le fichier XML DriverEvent dans leur pilote d’impression v4 pour utiliser des notifications d’impression avec leurs applications d’appareil UWP. Pour plus d’informations, consultez Communications bidirectionnelles.

Lorsqu’un DriverEvent se produit et que la tâche en arrière-plan d’une application d’appareil UWP est démarrée, l’application a plusieurs options sur la façon dont elle peut continuer. Pour plus d’informations sur le processus qui mène au lancement de la tâche, consultez Prise en charge du pilote pour l’interface utilisateur personnalisée.

La tâche d'arrière-plan peut choisir :

La vignette de notification ou le toast peuvent permettre à l’utilisateur de lancer commodément votre application d’avant-plan. Lorsque l’application d’avant-plan est lancée, elle peut utiliser la méthode OnLaunched dans App.xaml.cs pour vérifier si elle a été lancée par une vignette ou un toast. Si c’était le cas, l’application de premier plan peut accéder à tous les détails de notification d’impression dans le magasin de données d’application local.

Prerequisites

Avant de commencer :

  1. Vérifiez que votre imprimante est installée à l’aide d’un pilote d’impression v4. Pour plus d’informations, consultez Développement de pilotes d’impression v4.

  2. Configurez votre PC de développement. Pour plus d’informations sur le téléchargement des outils et la création d’un compte de développeur, consultez Prise en main .

  3. Associez votre application au Windows Store. Pour plus d’informations, consultez Créer une application d’appareil UWP.

  4. Créez des métadonnées d’appareil pour votre imprimante qui l’associe à votre application. Pour plus d’informations, consultez Créer des métadonnées d’appareil.

  5. Générez l’interface utilisateur pour la page principale de votre application. Toutes les applications d’appareil UWP peuvent être lancées à partir de l’écran de démarrage, où elles s’affichent en plein écran. Utilisez l’expérience de démarrage pour mettre en évidence vos produits ou services d’une manière qui correspond à la personnalisation et aux fonctionnalités spécifiques de vos appareils. Il n’existe aucune restriction spéciale sur le type de contrôles d’interface utilisateur qu’il peut utiliser. Pour commencer à concevoir l’expérience en plein écran, consultez les principes de conception du Microsoft Store.

  6. Si vous écrivez votre application avec C# ou JavaScript, ajoutez les projets PrinterExtensionLibrary et DeviceAppForPrintersLibrary à votre solution d’application d’appareil UWP. Vous trouverez chacun de ces projets dans les paramètres d’impression et l’exemple de notifications d’impression .

Étant donné que C++ peut accéder directement à COM, les applications C++ ne nécessitent pas de bibliothèque distincte pour fonctionner avec le contexte d’appareil d’imprimante COM.

Étape 1 : Inscrire une tâche en arrière-plan

Pour que Windows reconnaisse que l’application peut gérer les notifications d’impression, elle doit inscrire une extension de tâches en arrière-plan pour les notifications d’impression. Cette extension est déclarée dans un Extension élément, avec un Category attribut défini sur windows.backgroundTasks et un EntryPoint attribut défini sur BackgroundTask.PrintBackgroundTask. L’extension inclut également un Task élément pour indiquer qu’il prend en charge les systemEvent types de tâches.

Vous pouvez ajouter l’extension de tâche d’impression en arrière-plan sur l’onglet Déclarations du Concepteur de manifeste dans Microsoft Visual Studio. Vous pouvez également modifier manuellement le xml du manifeste du package d’application à l’aide de l’éditeur XML (texte). Cliquez avec le bouton droit sur le fichier Package.appxmanifest dans Explorateur de solutions pour les options de modification.

Cet exemple montre l’extension de tâche en arrière-plan dans l’élément Extension , tel qu’il apparaît dans le fichier manifeste du package d’application, Package.appxmanifest.

<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest">
  <Identity Name="Microsoft.SDKSamples.DeviceAppForPrinters.CS" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" Version="1.0.0.0" />
  <Properties>
    <DisplayName>Device App For Printers C# sample</DisplayName>
    <PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
    <Logo>Assets\storeLogo-sdk.png</Logo>
  </Properties>
  <Prerequisites>
    <OSMinVersion>6.3.0</OSMinVersion>
    <OSMaxVersionTested>6.3.0</OSMaxVersionTested>
  </Prerequisites>
  <Resources>
    <Resource Language="x-generate" />
  </Resources>
  <Applications>
    <Application Id="DeviceAppForPrinters" Executable="$targetnametoken$.exe" EntryPoint="DeviceAppForPrinters.App">
      <VisualElements DisplayName="Device App For Printers C# sample" Logo="Assets\squareTile-sdk.png"
                      SmallLogo="Assets\smallTile-sdk.png" Description="DeviceAppForPrinters C# sample"
                      ForegroundText="light" BackgroundColor="#00b2f0" ToastCapable="true">
        <DefaultTile ShowName="allLogos" ShortName="App4PrinterCS" WideLogo="Assets\tile-sdk.png" />
        <SplashScreen Image="Assets\splash-sdk.png" BackgroundColor="#00b2f0" />
      </VisualElements>
      <Extensions>
        <Extension Category="windows.backgroundTasks" EntryPoint="BackgroundTask.PrintBackgroundTask">
          <BackgroundTasks>
            <Task Type="systemEvent" />
          </BackgroundTasks>
        </Extension>
        <Extension Category="windows.printTaskSettings" Executable="$targetnametoken$.exe" EntryPoint="DeviceAppForPrinters.App" />
      </Extensions>
    </Application>
  </Applications>
</Package>

Étape 2 : Configurer les métadonnées de l’appareil

Lorsque vous utilisez l’Assistant Création de métadonnées de l’appareil pour associer votre application à votre appareil, veillez à remplir la zone Gestionnaires de notification sur la page Spécifier les informations sur l'application d'appareil UWP. Cela permet de s’assurer que la tâche en arrière-plan de votre application est appelée pendant une notification d’impression.

Pour obtenir des instructions pas à pas sur la modification des métadonnées de votre appareil, consultez la section Test .

Étape 3 : Générer l’interface utilisateur

Avant de créer votre application, vous devez travailler avec vos concepteurs et votre équipe marketing pour concevoir l’expérience utilisateur. L’expérience utilisateur doit projeter les aspects de personnalisation de votre entreprise et vous aider à créer une connexion avec vos utilisateurs.

Recommandations en matière de conception

Il est important de consulter les directives des applications du Microsoft Store avant de concevoir votre expérience de vignette et de badge. Les instructions permettent de s’assurer que votre application offre une expérience intuitive cohérente avec d’autres applications UWP.

Pour la page principale de votre application, gardez à l’esprit que Windows 8.1 peut afficher plusieurs applications de différentes tailles sur un seul moniteur. Consultez les directives suivantes pour en savoir plus sur la façon dont votre application peut s'adapter gracieusement entre les tailles d'écran, les tailles de fenêtre et les orientations.

Bonnes pratiques

  • N’incluez pas de mots d’action sur les notifications. Dans le message de notification, n’utilisez pas de texte qui indique aux utilisateurs d’envoyer, de appuyer ou de sélectionner une notification. Les utilisateurs comprennent déjà qu’ils peuvent cliquer sur un toast pour obtenir plus d’informations. Par exemple, écrivez simplement « Votre imprimante est à court d’encre » au lieu de « Votre imprimante est à court d’encre ». Cliquez ici pour résoudre le problème ».

  • Gardez les interactions simples. Tout ce qui s’affiche sur l’expérience de notifications doit être lié à la notification. Par exemple, une page de notification concernant un bourrage papier ne doit contenir que des liens et des informations concernant la résolution de ce problème. Il ne doit pas contenir de liens vers des expériences non liées telles que l'achat d'encre ou d'autres informations de soutien.

  • Utilisez le multimédia. Utilisez des photos, des vidéos ou des illustrations réelles de l’appareil pour aider les utilisateurs à résoudre rapidement un problème avec leur appareil.

  • Conservez les utilisateurs dans le contexte de votre application. Lorsque vous fournissez des informations sur un problème, ne créez pas de lien vers des documents de support en ligne ou autres. Conservez l’utilisateur dans le contexte de l’application.

Étape 4 : Créer une tâche en arrière-plan

Si votre application inscrit une tâche en arrière-plan pour les notifications d’impression, elle doit fournir un gestionnaire pour l’activation de la tâche en arrière-plan. Dans l’exemple des paramètres d’impression et des notifications d’impression , la PrintBackgroundTask classe gère les notifications d’impression.

Si l’état de votre imprimante ne nécessite pas d’intervention immédiate de l’utilisateur, mettez à jour une vignette plutôt que d’afficher un toast. Par exemple, pour une condition de niveau d’encre faible, une mise à jour de la vignette est suffisante. Cependant, si l’imprimante est à court d’encre, l’application peut afficher une notification toast.

Enregistrement des détails de notification

La tâche d’arrière-plan ne peut pas lancer directement l’application de premier plan, seul l’utilisateur le peut : depuis une vignette, un toast, ou Démarrer. Ainsi, pour vous assurer que l’application de premier plan peut accéder aux détails de la notification d’impression, la tâche en arrière-plan les enregistre dans le stockage local. Pour plus d’informations sur l’utilisation du stockage local, consultez Démarrage rapide : données d’application locale.

Lorsqu’une notification d’impression est déclenchée, Windows exécute la tâche en arrière-plan en appelant sa Run méthode. Les données de notification sont transmises à la tâche en arrière-plan via un paramètre de méthode qui doit être converti en type Windows.Devices.Printers.Extensions.PrintNotificationEventDetails. Les propriétés de cet objet PrinterName et EventData portent respectivement le nom de l’imprimante et le message Bidi.

Cet exemple montre la méthode Run de la tâche en arrière-plan, dans le fichier PrintBackgroundTask.cs, où les détails de la notification d’impression sont enregistrés dans les paramètres de l’application avant que les méthodes de notification toast, de vignette et de badge ne soient appelées.

public void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance)
{
    // Save notification details to local storage
    PrintNotificationEventDetails details = (PrintNotificationEventDetails)taskInstance.TriggerDetails;
    settings.Values[keyPrinterName] = details.PrinterName;
    settings.Values[keyAsyncUIXML] = details.EventData;

    // Demonstrate possible actions
    ShowToast(details.PrinterName, details.EventData);
    UpdateTile(details.PrinterName, details.EventData);
    UpdateBadge();
}

Mise à jour d’une vignette

Lorsque les détails de la notification d’impression sont envoyés à la méthode UpdateTile, la tâche en arrière-plan de l’exemple montre comment les afficher sur une tuile. Pour plus d’informations sur les vignettes, consultez Vue d’ensemble des vignettes et des notifications de vignette.

Cet exemple montre la méthode UpdateTile de la tâche en arrière-plan, dans le fichier PrintBackgroundTask.cs.

void UpdateTile(string printerName, string bidiMessage)
{
    TileUpdater tileUpdater = TileUpdateManager.CreateTileUpdaterForApplication();
    tileUpdater.Clear();

    XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWide310x150Text09);
    XmlNodeList tileTextAttributes = tileXml.GetElementsByTagName("text");
    tileTextAttributes[0].InnerText = printerName;
    tileTextAttributes[1].InnerText = bidiMessage;

    TileNotification tileNotification = new TileNotification(tileXml);
    tileNotification.Tag = "tag01";
    tileUpdater.Update(tileNotification);
}

Mise à jour d’un badge

La UpdateBadge méthode montre comment utiliser la classe BadgeNotification pour mettre à jour un badge. Pour plus d’informations sur les vignettes, consultez Vue d’ensemble des badges.

Cet exemple montre la méthode UpdateBadge de la tâche d’arrière-plan, dans le fichier PrintBackgroundTask.cs.

void UpdateBadge()
{
    XmlDocument badgeXml = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeGlyph);
    XmlElement badgeElement = (XmlElement)badgeXml.SelectSingleNode("/badge");
    badgeElement.SetAttribute("value", "error");

    var badgeNotification = new BadgeNotification(badgeXml);
    BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badgeNotification);
}

Élever un toast

Une notification toast est un message temporaire à l’utilisateur contenant des informations pertinentes et urgentes, et offrant un accès rapide au contenu associé dans une application. Les notifications toast doivent être présentées aux utilisateurs comme une invitation à revenir à votre application pour suivre quelque chose d’intéressant. Pour plus d’informations, consultez la vue d’ensemble de la notification Toast.

Pour activer les notifications toast, la capacité d’afficher des toasts doit être listée dans le manifeste de package de l’application. Dans l’élément VisualElements , définissez l’attribut ToastCapable sur true.

Important

Nous ne recommandons pas de toujours afficher un toast, en particulier pour des événements non-actionnables. Cela peut devenir agaçant pour les utilisateurs et les amener à désactiver tous les toasts d’une application. Pour les événements qui ne nécessitent pas l’attention immédiate de l’utilisateur, nous vous recommandons de mettre à jour uniquement la vignette et le badge, et de ne pas afficher de toast.

Cet exemple montre l’attribut ToastCapable dans l’élément VisualElements , tel qu’il apparaît dans le fichier manifeste du package d’application, Package.appxmanifest.

<VisualElements DisplayName="Device App For Printers C# sample" Logo="Assets\squareTile-sdk.png"
                SmallLogo="Assets\smallTile-sdk.png" Description="DeviceAppForPrinters C# sample"
                ForegroundText="light" BackgroundColor="#00b2f0" ToastCapable="true">
  <DefaultTile ShowName="allLogos" ShortName="App4PrinterCS" WideLogo="Assets\tile-sdk.png" />
  <SplashScreen Image="Assets\splash-sdk.png" BackgroundColor="#00b2f0" />
</VisualElements>

Cet exemple provient de la ShowToast méthode du fichier PrintBackgroundTask.cs . Il montre comment afficher un toast basé sur deux chaînes, nommées title et body.

void ShowToast(string title, string body)
{
    //
    // Get Toast template
    //
    XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);

    //
    // Pass to app as eventArgs.detail.arguments
    //
    ((XmlElement)toastXml.SelectSingleNode("/toast")).SetAttribute("launch", title);

    //
    // The ToastText02 template has 2 text nodes (a header and a body)
    // Assign title to the first one, and body to the second one
    //
    XmlNodeList textList = toastXml.GetElementsByTagName("text");
    textList[0].AppendChild(toastXml.CreateTextNode(title));
    textList[1].AppendChild(toastXml.CreateTextNode(body));

    //
    // Show the Toast
    //
    ToastNotification toast = new ToastNotification(toastXml);
    ToastNotificationManager.CreateToastNotifier().Show(toast);
}

Étape 5 : Gérer l’activation

Après qu’une notification d’impression ait déclenché la tâche d’arrière-plan, l’application peut être lancée en tapotant une notification toast ou une vignette. Si votre application est activée à partir de l’une ou l’autre, un paramètre est transmis à l’application via LaunchActivatedEventArgs.arguments la propriété. Pour plus d’informations sur l’activation et le cycle de vie des applications Microsoft Store, consultez cycle de vie des applications.

Pour déterminer si votre application a été activée dans un de ces cas, gérez l’événement OnLaunched et examinez les arguments d’événement passés au gestionnaire d’événements. Si les arguments d’événement sont Null, l’application a été activée par l’utilisateur depuis Démarrer. Si les arguments d’événement ne sont pas Null, l’application a été lancée à partir d’un toast ou d’une vignette.

Cet exemple provient de la OnLaunched méthode du fichier App.xaml.cs . Il montre comment gérer l’activation à partir de toasts ou de vignettes.

protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
    Frame rootFrame = Window.Current.Content as Frame;

    // Do not repeat app initialization when the Window already has content,
    // just ensure that the window is active

    if (rootFrame == null)
    {
        // Create a Frame to act as the navigation context and navigate to the first page
        rootFrame = new Frame();
        // Associate the frame with a SuspensionManager key
        SuspensionManager.RegisterFrame(rootFrame, "AppFrame");

        if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
        {
            // Restore the saved session state only when appropriate
            try
            {
                await SuspensionManager.RestoreAsync();
            }
            catch (SuspensionManagerException)
            {
                //Something went wrong restoring state.
                //Assume there is no state and continue
            }
        }

        // Place the frame in the current Window
        Window.Current.Content = rootFrame;
    }
    if (rootFrame.Content == null || !String.IsNullOrEmpty(args.Arguments))
    {
        // When the navigation stack isn't restored or there are launch arguments
        // indicating an alternate launch (e.g.: via toast or secondary tile),
        // navigate to the appropriate page, configuring the new page by passing required
        // information as a navigation parameter
        if (!rootFrame.Navigate(typeof(MainPage), args.Arguments))
        {
            throw new Exception("Failed to create initial page");
        }
    }
    // Ensure the current window is active
    Window.Current.Activate();
}

Étape 6 : Détails de la notification d’accès

Étant donné que la tâche en arrière-plan ne peut pas lancer directement l’application de premier plan, les détails de la notification d’impression doivent être enregistrés dans les paramètres de l’application afin que l’application de premier plan puisse y accéder. Pour plus d’informations sur l’utilisation du stockage local, consultez Démarrage rapide : données d’application locale.

Cet exemple montre comment le nom de l’imprimante et le message Bidi sont récupérés à partir des paramètres de l’application dans les paramètres d’impression et l’exemple de notifications d’impression . Le code provient de la DisplayBackgroundTaskTriggerDetails méthode du fichier InkLevel.xaml.cs . Les valeurs d’index de clé, keyPrinterNameet keyAsyncUIXML, sont les mêmes constantes de chaîne que celles utilisées dans la tâche en arrière-plan, PrintBackgroundTask.cs.

void DisplayBackgroundTaskTriggerDetails()
{
    String outputText = "\r\n";

    try
    {
        string printerName = settings.Values[keyPrinterName].ToString();
        outputText += ("Printer name from background task triggerDetails: " + printerName);
    }
    catch (Exception)
    {
        outputText += ("No printer name retrieved from background task triggerDetails ");
    }

    outputText += "\r\n";
    try
    {
        string asyncUIXML = settings.Values[keyAsyncUIXML].ToString();
        outputText += ("AsyncUI xml from background task triggerDetails: " + asyncUIXML);
    }
    catch (Exception)
    {
        outputText += ("No asyncUI xml retrieved from background task triggerDetails ");
    }

    ToastOutput.Text += outputText;
}

Testing

Avant de pouvoir tester votre application d’appareil UWP, elle doit être liée à votre imprimante à l’aide de métadonnées d’appareil.

Vous avez besoin d’une copie du package de métadonnées d’appareil pour votre imprimante, afin d’y ajouter les informations de l’application d’appareil. Si vous n’avez pas de métadonnées d’appareil, vous pouvez le générer à l’aide de l’Assistant Création de métadonnées d’appareil, comme décrit dans l’article Créer des métadonnées d’appareil pour votre application d’appareil UWP.

Pour utiliser l’Assistant Création de métadonnées d’appareil, vous devez installer Microsoft Visual Studio Professional, Microsoft Visual Studio Ultimate ou le KIT de développement logiciel (SDK) autonome pour Windows 8.1, avant de suivre les étapes décrites dans cet article. L’installation de Microsoft Visual Studio Express pour Windows installe une version du Kit de développement logiciel (SDK) qui n’inclut pas l’Assistant.

Les étapes suivantes créent votre application et installent les métadonnées de l’appareil.

  1. Activez la signature de test.

    1. Lancez l’Assistant de création de métadonnées de périphérique depuis %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, en double-cliquant sur DeviceMetadataWizard.exe

    2. Dans le menu Outils , sélectionnez Activer la signature de test.

  2. Redémarrer l’ordinateur

  3. Générez la solution en ouvrant le fichier de solution (.sln). Appuyez sur F7 ou allez dans Construire->Construire la solution depuis le menu supérieur après que l’exemple ait été chargé.

  4. Déconnectez et désinstallez l’imprimante. Cette étape est requise pour que Windows lise les métadonnées de l’appareil mises à jour la prochaine fois que l’appareil est détecté.

  5. Modifiez et enregistrez les métadonnées de l’appareil. Pour lier l’application d’appareil à votre appareil, vous devez associer l’application d’appareil à votre appareil.

    Si les métadonnées de votre appareil ne sont pas encore créées, consultez Créer des métadonnées d’appareil pour votre application d’appareil UWP.

    1. Si l’Assistant Création de métadonnées d’appareil n’est pas encore ouvert, démarrez-le à partir de%ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, en double-cliquant sur DeviceMetadataWizard.exe.

    2. Sélectionnez Modifier les métadonnées de l’appareil. Cette option vous permet de modifier votre package de métadonnées d’appareil existant.

    3. Dans la boîte de dialogue Ouvrir , recherchez le package de métadonnées de l’appareil associé à votre application d’appareil UWP. (Il a une extension de fichier devicemetadata-ms .)

    4. Dans la page Spécifier les informations de l’application d’appareil UWP , entrez les informations d’application du Microsoft Store dans la zone application d’appareil UWP . Sélectionnez Importer le fichier manifeste de l’application UWP pour entrer automatiquement le nom du package, le nom du serveur de publication et l’ID d’application UWP.

    5. Si votre application s’inscrit pour les notifications d’imprimante, renseignez la zone Gestionnaires de notifications . Dans l’ID d’événement, entrez le nom du gestionnaire d’événements d’impression. Dans La ressource d’événement, entrez le nom du fichier où réside ce code.

    6. Lorsque vous avez terminé, sélectionnez Suivant jusqu’à atteindre la page Terminer .

    7. Dans la page Vérifier le package de métadonnées de l’appareil , vérifiez que tous les paramètres sont corrects et activez la case à cocher Copier le package de métadonnées de l’appareil dans le magasin de métadonnées sur l’ordinateur local . Ensuite, sélectionnez Enregistrer.

  6. Reconnectez votre imprimante afin que Windows lit les métadonnées d’appareil mises à jour lorsque l’appareil est connecté.

Troubleshooting

Problème : Aucune notification toast par défaut n’apparaît

Si aucune notification d’impression par défaut n’apparaît quand elle est attendue...

  • Cause possible : La signature de test n’est pas activée. Pour savoir comment l'activer, consultez la section Débogage de cet article.

  • Causes possibles : les stratégies de domaine ont désactivé les notifications toast. Laissez le domaine et réessayez.

  • Cause possible : L’imprimante n’a pas implémenté DriverEvents. Vérifiez que votre pilote v4 prend en charge Bidi et DriverEvents. Pour plus d’informations, consultez Support du pilote pour l’interface utilisateur personnalisée.

  • Cause possible : L’ordinateur n’a pas de travail récent dans la file d’attente de l’imprimante. Vérifiez que l’icône d’imprimante s’affiche dans le coin inférieur droit de votre écran. Si ce n’est pas le cas, envoyez un autre travail d’impression.

  • Cause possible : Votre point d’entrée pour la tâche en arrière-plan (IBackgroundTask) se trouve dans le même projet que votre application de premier plan. Ce scénario n’est pas autorisé. Séparez une classe entièrement nouvelle pour votre gestionnaire de tâches en arrière-plan.

  • Cause possible : la classe qui est le point d’entrée pour les notifications dans votre application est incorrectement spécifiée dans votre manifeste ou vos métadonnées de périphérique, ce qui provoque le plantage de l’application dans l’hôte d’arrière-plan et n’affiche aucun toast. Vérifiez les problèmes suivants :

    • Assurez-vous que le point d’entrée est correctement fourni dans l’onglet Déclarations du Concepteur de manifestes. Il doit être sous la forme d’Namespace.ClassName pour C# et C++. Pour JavaScript, il doit s’agir du chemin d’accès du répertoire relatif au fichier .js.

    • Une application JavaScript doit appeler close() une fois terminée.

    • La classe C# doit implémenter Windows.ApplicationModel.Background.IBackgroundTask et doit avoir une méthode void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance) publique.

    • La classe C++ doit implémenter Windows ::ApplicationModel ::Background ::IBackgroundTask et doit avoir une virtual void Run(Windows::ApplicationModel::Background::IBackgroundTaskInstance^ taskInstance) méthode.