Freigeben über


Arbeiten mit Druckbenachrichtigungen in einer UWP-Geräte-App

In Windows 8.1 können UWP-Geräte-Apps auf bidirektionale Kommunikationsereignisse (Bidi) reagieren, die von einem v4-Drucktreiber gesendet werden. In diesem Thema werden Druckbenachrichtigungen vorgestellt und gezeigt, wie die C#-Version des Beispiels Druckeinstellungen und Druckbenachrichtigungen eine Hintergrundaufgabe verwendet, um auf Druckbenachrichtigungen zu reagieren. Die Hintergrundaufgabe veranschaulicht, wie Benachrichtigungsdetails im lokalen App-Datenspeicher gespeichert, Popups gesendet und eine Kachel und ein Signal aktualisiert werden. Weitere Informationen zu UWP-Geräte-Apps im Allgemeinen finden Sie unter UWP-Geräte-Apps kennenlernen.

In der C#-Version der Druckeinstellungen und des Druckbenachrichtigungsbeispiels wird der Hintergrundteil der App (die Hintergrundaufgabe) im BackgroundTask-Projekt veranschaulicht. Der Code für die Hintergrundaufgabe befindet sich in der Datei PrintBackgroundTask.cs . Die Vordergrund-App, die Vollbild-App, die über Start gestartet werden kann, befindet sich im DeviceAppForPrinters-Projekt. Die InkLevel.xaml.cs Datei zeigt eine Möglichkeit, wie auf Benachrichtigungsdetails über die Vordergrund-App zugegriffen werden kann. Um mit Druckbenachrichtigungen zu arbeiten, verwendet das Beispiel die Druckererweiterungsbibliothek im PrinterExtensionLibrary-Projekt . Die Druckererweiterungsbibliothek bietet eine bequeme Möglichkeit, auf die Druckererweiterungsschnittstellen des v4-Drucktreibers zuzugreifen. Weitere Informationen finden Sie in der Übersicht über die Druckererweiterungsbibliothek.

Die in diesem Thema gezeigten Codebeispiele basieren auf der C#-Version der Druckeinstellungen und des Druckbenachrichtigungsbeispiels . Dieses Beispiel ist auch in JavaScript und C++ verfügbar. Da C++ direkt auf COM zugreifen kann, enthält die C++-Version des Beispiels keine Codebibliotheksprojekte. Laden Sie die Beispiele herunter, um die neuesten Versionen des Codes anzuzeigen.

Mithilfe von Druckbenachrichtigungen informieren Ihre UWP-Geräte-App den Benutzer über wichtige Druckerereignisse beim Drucken, wie z. B. Papierstau, geöffnete Druckertür, niedrige Druckfarbenwerte oder Druckerfehler. Wenn ein Drucker eine Benachrichtigung auslöst, führt der Systemereignisbroker die Hintergrundaufgabe Ihrer App aus. Von dort aus kann die Hintergrundaufgabe die Benachrichtigungsdetails speichern, ein Popup senden, eine Kachel aktualisieren, ein Signal aktualisieren oder nichts tun. Durch das Speichern von Benachrichtigungsdetails kann Ihre App eine Benutzererfahrung bereitstellen, die Benutzern hilft, ihre Druckerprobleme zu verstehen und zu beheben.

Druckerhersteller müssen Bidi und die DriverEvent-XML-Datei in ihrem v4-Drucktreiber implementieren, um Druckbenachrichtigungen mit ihren UWP-Geräte-Apps zu verwenden. Weitere Informationen finden Sie unter Bidirektionale Kommunikationen.

Wenn ein DriverEvent auftritt und die Hintergrundaufgabe einer UWP-Geräte-App gestartet wird, verfügt die App über mehrere Optionen, um fortzufahren. Weitere Informationen zum Flow, der zum Starten der Aufgabe führt, finden Sie unter Treiberunterstützung für angepasste UI.

Die Hintergrundaufgabe kann folgende Aktionen ausführen:

Mit der Kachelbenachrichtigung oder Popupbenachrichtigung kann der Benutzer die Vordergrund-App bequem starten. Wenn die Vordergrund-App gestartet wird, kann sie die OnLaunched Methode in App.xaml.cs verwenden, um zu überprüfen, ob sie von einer Kachel oder einem Popup gestartet wurde. Wenn dies der Fall war, kann die Vordergrund-App auf alle Druckbenachrichtigungsdetails im lokalen App-Datenspeicher zugreifen.

Voraussetzungen

Bevor Sie beginnen:

  1. Stellen Sie sicher, dass Ihr Drucker mit einem v4-Drucktreiber installiert ist. Weitere Informationen finden Sie unter Entwickeln von v4-Druckertreibern.

  2. Richten Sie Ihren Entwicklungs-PC ein. Informationen zum Herunterladen der Tools und zum Erstellen eines Entwicklerkontos finden Sie unter Erste Schritte.

  3. Verknüpfen Sie Ihre App mit dem Store. Weitere Informationen hierzu finden Sie unter Erstellen einer UWP-Geräte-App .

  4. Erstellen Sie Gerätemetadaten für Ihren Drucker, der sie Ihrer App zuordnet. Weitere Informationen hierzu finden Sie in Erstellen von Gerätemetadaten .

  5. Erstellen Sie die Benutzeroberfläche für die Standard Seite Ihrer App. Alle UWP-Geräte-Apps können von "Start" gestartet werden, wo sie im Vollbildmodus angezeigt werden. Verwenden Sie die Startoberfläche, um Ihr Produkt oder Ihre Dienste auf eine Weise hervorzuheben, die den spezifischen Branding- und Features Ihrer Geräte entspricht. Es gibt keine besonderen Einschränkungen für den Typ der UI-Steuerelemente, die sie verwenden können. Informationen zu den ersten Schritten mit dem Design der Vollbildoberfläche finden Sie in den Microsoft Store-Designprinzipien.

  6. Wenn Sie Ihre App mit C# oder JavaScript schreiben, fügen Sie die Projekte PrinterExtensionLibrary und DeviceAppForPrintersLibrary zu Ihrer UWP-Geräte-App-Lösung hinzu. Sie finden jedes dieser Projekte im Beispiel Druckeinstellungen und Druckbenachrichtigungen .

Da C++ direkt auf COM zugreifen kann, benötigen C++-Apps keine separate Bibliothek, um mit dem COM-basierten Druckergerätekontext zu arbeiten.

Schritt 1: Registrieren der Hintergrundaufgabe

Damit Windows erkennen kann, dass die App Druckbenachrichtigungen verarbeiten kann, muss sie eine Erweiterung für Hintergrundaufgaben für Druckbenachrichtigungen registrieren. Diese Erweiterung wird in einem Extension Element deklariert, wobei ein Category Attribut auf windows.backgroundTasks und ein EntryPoint Attribut festgelegt ist.BackgroundTask.PrintBackgroundTask Die Erweiterung enthält auch ein Task Element, um anzugeben, dass sie Aufgabentypen unterstützt systemEvent .

Sie können die Druckhintergrund-Aufgabenerweiterung auf der Registerkarte Deklarationen des Manifest-Designers in Microsoft Visual Studio hinzufügen. Sie können den XML-Code des App-Paketmanifests auch manuell mit dem XML-Editor (Text) bearbeiten. Klicken Sie mit der rechten Maustaste auf die Datei Package.appxmanifest im Solution Explorer, um Bearbeitungsoptionen anzuzeigen.

Dieses Beispiel zeigt die Hintergrundaufgabenerweiterung im ElementExtension, wie sie in der App-Paketmanifestdatei Package.appxmanifest angezeigt wird.

<?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>

Schritt 2: Konfigurieren von Gerätemetadaten

Wenn Sie den Gerätemetadaten-Erstellungsassistenten verwenden, um Ihre App mit Ihrem Gerät zu verknüpfen, stellen Sie sicher, dass Sie das Feld Benachrichtigungshalndler auf der Seite Informationen zur UWP-Geräte-App angeben ausfüllen. Dadurch wird sichergestellt, dass die Hintergrundaufgabe Ihrer App während einer Druckbenachrichtigung aufgerufen wird.

Schrittweise Anleitungen zum Bearbeiten von Gerätemetadaten finden Sie im Abschnitt Testen.

Schritt 3: Erstellen Sie die Benutzeroberfläche

Bevor Sie Ihre App erstellen, sollten Sie mit Ihren Designern und Ihrem Marketingteam zusammenarbeiten, um die Benutzererfahrung zu gestalten. Die Benutzererfahrung sollte die Markenaspekte Ihres Unternehmens widerspiegeln und Ihnen helfen, eine Verbindung zu Ihren Benutzern aufzubauen.

Entwurfsrichtlinien

Es ist wichtig, die Microsoft Store-App-Richtlinien zu überprüfen, bevor Sie Ihre Kachel- und Signalerfahrung entwerfen. Die Richtlinien tragen dazu bei, dass Ihre App eine intuitive Benutzeroberfläche bietet, die mit anderen UWP-Apps konsistent ist.

Beachten Sie für die Standard Seite Ihrer App, dass Windows 8.1 mehrere Apps in verschiedenen Größen auf einem einzigen Monitor anzeigen kann. Weitere Informationen dazu, wie Ihre App zwischen Bildschirmgrößen, Fenstergrößen und Ausrichtungen ordnungsgemäß umbrechen kann, finden Sie in den folgenden Richtlinien.

Bewährte Methoden

  • Fügen Sie keine Aktionswörter für Benachrichtigungen ein. Verwenden Sie in der Benachrichtigung keinen Text, der Benutzern angibt, Benachrichtigungen zu übertragen, zu drücken oder auf eine Benachrichtigung zu klicken. Benutzer wissen bereits, dass sie ein Popup drücken können, um weitere Informationen zu erhalten. Schreiben Sie z. B. einfach "Der Tintenstand Ihres Druckers ist niedrig" anstelle von "Der Tintenstand Ihres Druckers ist niedrig. Drücken Sie die Problembehandlung".

  • Halten Sie Interaktionen einfach. Alles, was auf der Benachrichtigungsoberfläche angezeigt wird, sollte mit der Benachrichtigung zusammenhängen. Beispielsweise sollte eine Benachrichtigungsseite zu einem Papierstau nur Links und Informationen zum Beheben dieses Problems enthalten. Sie sollte keine Links zu nicht verwandten Erfahrungen enthalten, z. B. Freihandeingaben oder andere Supportinformationen.

  • Verwenden Sie Multimedia. Verwenden Sie tatsächliche Fotos, Videos oder Illustrationen des Geräts, um Benutzern zu helfen, ein Problem mit ihrem Gerät schnell zu beheben.

  • Behalten Sie Benutzer im Kontext Ihrer App bei. Wenn Sie Informationen zu einem Problem bereitstellen, verknüpfen Sie nicht mit Online- oder anderen Supportmaterialien. Behalten Sie den Benutzer im Kontext der App bei.

Schritt 4: Erstellen einer Hintergrundaufgabe

Wenn Ihre App eine Hintergrundaufgabe für Druckbenachrichtigungen registriert, muss sie einen Handler für die Aktivierung der Hintergrundaufgabe bereitstellen. Im Beispiel Druckeinstellungen und Druckbenachrichtigungen behandelt die PrintBackgroundTask Klasse die Druckbenachrichtigungen.

Wenn der Druckerstatus keinen sofortigen Benutzereingriff erfordert, aktualisieren Sie eine Kachel, anstatt ein Popup anzuzeigen. Bei einer niedrigen Freihandbedingung reicht beispielsweise eine Kachelaktualisierung aus. Wenn der Tintenstand des Druckers jedoch völlig aufgebraucht ist, zeigt die App möglicherweise eine Popup-Benachrichtigung an.

Speichern der Benachrichtigungsdetails

Die Hintergrundaufgabe kann die Vordergrund-App nicht direkt starten, nur der Benutzer kann: von einer Kachel, einem Popup oder von Start. Um sicherzustellen, dass die Vordergrund-App auf die Druckbenachrichtigungsdetails zugreifen kann, speichert die Hintergrundaufgabe sie im lokalen Speicher. Weitere Informationen zur Verwendung des lokalen Speichers finden Sie in Schnellstart: lokale App-Daten.

Wenn eine Druckbenachrichtigung ausgelöst wird, führt Windows die Hintergrundaufgabe durch Aufrufen der zugehörigen Run-Methode aus. Die Benachrichtigungsdaten werden über einen Methodenparameter an die Hintergrundaufgabe übergeben, der in den Typ Windows.Devices.Printers.Extensions.PrintNotificationEventDetails umgewandelt werden muss. Die PrinterName Eigenschaften EventData des Objekts tragen den Druckernamen bzw. die Bidi-Meldung.

Dieses Beispiel zeigt die Methode Run der Hintergrundaufgabe in der Datei PrintBackgroundTask.cs , in der die Details der Druckbenachrichtigung in den App-Einstellungen gespeichert werden, bevor die Methoden Popup, Kachel und Badge aufgerufen werden.

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();
}

Aktualisieren einer Kachel

Wenn die Druckbenachrichtigungsdetails an die UpdateTile Methode gesendet werden, veranschaulicht die Hintergrundaufgabe des Beispiels, wie sie auf einer Kachel angezeigt werden. Weitere Informationen zu Kacheln finden Sie unter Übersicht über Kachel- und Kachelbenachrichtigungen.

Dieses Beispiel zeigt die Methode der Hintergrundaufgabe UpdateTile in der Datei 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);
}

Aktualisieren eines Badges

Die UpdateBadge Methode zeigt, wie Sie die BadgeNotification-Klasse verwenden, um ein Signal zu aktualisieren. Weitere Informationen zu Kacheln finden Sie unter Badge-Übersicht.

Dieses Beispiel zeigt die Methode der Hintergrundaufgabe UpdateBadge in der Datei 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);
}

Auslösen eines Popups

Eine Popupbenachrichtigung ist eine vorübergehende Nachricht für den Benutzer, die relevante, zeitabhängige Informationen enthält, und bietet schnellen Zugriff auf verwandte Inhalte in einer App. Popupbenachrichtigungen sollten Benutzern als Einladung angezeigt werden, zu Ihrer App zurückzukehren, um etwas interessantes nachzuverfolgen. Weitere Informationen finden Sie unter Übersicht über Popupbenachrichtigungen.

Um Popupbenachrichtigungen zu aktivieren, muss die App registrieren, dass sie im App-Paketmanifest popupfähig ist. Legen Sie im VisualElements Element das ToastCapable Attribut auf true fest.

Wichtig

Es wird nicht empfohlen, immer ein Popup anzuzeigen, insbesondere für Nicht-Aktionen erfordernde Ereignisse. Dies kann für Benutzer lästig werden und dazu führen, dass sie alle Popups aus einer App deaktivieren. Für Ereignisse, die keine sofortige Aufmerksamkeit des Benutzers erfordern, empfehlen wir, nur die Kachel und das Badge zu aktualisieren und kein Popup anzuzeigen.

Dieses Beispiel zeigt das ToastCapable Attribut im VisualElements Element, wie es in der App-Paketmanifestdatei Package.appxmanifest angezeigt wird.

<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>

Dieses Beispiel stammt aus der ShowToast Methode der PrintBackgroundTask.cs Datei. Es zeigt, wie man ein Popup basierend auf zwei Zeichenfolgen mit den Namentitle und body erstellt.

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);
}

Schritt 5: Behandeln der Aktivierung

Nachdem eine Druckbenachrichtigung die Hintergrundaufgabe ausgelöst hat, kann die App gestartet werden, indem Sie auf eine Popupbenachrichtigung oder eine Kachel tippt. Wenn Ihre App über eine der beiden Aktiviert wird, wird ein Parameter über LaunchActivatedEventArgs.arguments die Eigenschaft an die App übergeben. Weitere Informationen zur Aktivierung und zum Lebenszyklus der Microsoft Store-App finden Sie unter "Anwendungslebenszyklus".

Um festzustellen, ob Ihre App in einem dieser Fälle aktiviert wurde, behandeln Sie das OnLaunched Ereignis, und überprüfen Sie die Ereignisargumente, die an den Ereignishandler übergeben werden. Wenn die Ereignisargumente NULL sind, wurde die App vom Benutzer von Start aktiviert. Wenn die Ereignisargumente nicht NULL sind, wurde die App über ein Popup oder eine Kachel gestartet.

Dieses Beispiel stammt aus der Methode OnLaunched der Datei App.xaml.cs . Es zeigt, wie die Aktivierung von Popups oder Kacheln behandelt wird.

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();
}

Schritt 6: Zugriffsbenachrichtigungsdetails

Da die Hintergrundaufgabe die Vordergrund-App nicht direkt starten kann, müssen die Druckbenachrichtigungsdetails in den Einstellungen der App gespeichert werden, damit die Vordergrund-App darauf zugreifen kann. Weitere Informationen zur Verwendung des lokalen Speichers finden Sie in Schnellstart: lokale App-Daten.

In diesem Beispiel wird gezeigt, wie der Druckername und die Bidi-Nachricht aus den App-Einstellungen im Beispiel Druckeinstellungen und"Druckbenachrichtigungen abgerufen werden. Der Code stammt aus der DisplayBackgroundTaskTriggerDetails Methode der InkLevel.xaml.cs-Datei. Beachten Sie, dass die Schlüsselindexwerte keyPrinterName und keyAsyncUIXML dieselben Zeichenfolgenkonstanten sind, die in der Hintergrundaufgabe PrintBackgroundTask.cs verwendet werden.

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;
}

Testen

Bevor Sie Ihre UWP-Geräte-App testen können, muss sie mithilfe von Gerätemetadaten mit Ihrem Drucker verknüpft werden.

Sie benötigen eine Kopie des Gerätemetadatenpakets für Ihren Drucker, um die Geräte-App-Informationen hinzuzufügen. Wenn Sie keine Gerätemetadaten haben, können Sie diese mit dem Assistenten zum Erstellen von Gerätemetadaten erstellen, wie im Thema Gerätemetadaten für Ihre UWP-Geräte-App erstellen beschrieben.

Um den Assistenten zum Erstellen von Gerätemetadaten zu verwenden, müssen Sie Microsoft Visual Studio Professional, Microsoft Visual Studio Ultimate oder das eigenständige SDK für Windows 8.1 installieren, bevor Sie die Schritte in diesem Thema ausführen. Beim Installieren von Microsoft Visual Studio Express für Windows wird eine Version des SDK installiert, die den Assistenten nicht enthält.

Die folgenden Schritte erstellen Ihre App und installieren die Gerätemetadaten.

  1. Aktivieren Sie die Testsignatur.

    1. Starten Sie den Assistenten für die Erstellung von Gerätedaten aus %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, indem Sie auf DeviceMetadataWizard.exe doppelklicken.

    2. Wählen Sie im Menü "Extras " die Option "Testsignatur aktivieren" aus.

  2. Starten Sie den Computer neu.

  3. Erstellen Sie die Lösung, indem Sie die Lösungsdatei (.sln) öffnen. Drücken Sie F7 oder gehen Sie im oberen Menü zu Build->Build Solution, nachdem das Beispiel geladen wurde.

  4. Trennen Sie den Drucker, und deinstallieren Sie den Drucker. Dieser Schritt ist erforderlich, damit Windows die aktualisierten Gerätemetadaten beim nächsten Erkennen des Geräts liest.

  5. Bearbeiten und Speichern von Gerätemetadaten Um die Geräte-App mit Ihrem Gerät zu verknüpfen, müssen Sie die Geräte-App Ihrem Gerät zuordnen.

    Wenn Sie Ihre Gerätemetadaten noch nicht erstellt haben, lesen Sie Erstellen von Gerätemetadaten für Ihre UWP-Geräte-App.

    1. Wenn der Device Metadata Authoring Wizard noch nicht geöffnet ist, starten Sie ihn unter %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, indem Sie auf DeviceMetadataWizard.exe doppelklicken.

    2. Klicken Sie auf Gerätemetadaten bearbeiten. Dadurch können Sie Ihr vorhandenes Gerätemetadatenpaket bearbeiten.

    3. Suchen Sie im Dialogfeld Öffnen das Gerätemetadatenpaket, das Ihrer UWP-Geräte-App zugeordnet ist. (Es verfügt über die Dateierweiterung devicemetadata-ms.)

    4. Geben Sie auf der Seite "Informationen zur UWP-Geräte-App angeben" die Informationen zur Microsoft Store-App in das Feld " UWP-Geräte-App " ein. Klicken Sie auf UWP-App-Manifestdatei importieren, um automatisch den Paketnamen, Herausgebernamen und UWP app ID einzugeben.

    5. Wenn Ihre App für Druckerbenachrichtigungen registriert ist, füllen Sie das Benachrichtigungshandlerfeld aus. Geben Sie in der Ereignis-ID den Namen des Druckereignishandlers ein. Geben Sie in "Event Asset" den Namen der Datei ein, in der sich dieser Code befindet.

    6. Wenn Sie fertig sind, klicken Sie auf Weiter , bis Sie zur Seite Fertig stellen gelangen.

    7. Vergewissern Sie sich auf der Seite "Überprüfen des Gerätemetadatenpakets ", dass alle Einstellungen korrekt sind, und aktivieren Sie das Kontrollkästchen "Gerätemetadatenpaket in den Metadatenspeicher auf dem lokalen Computer kopieren". Klicken Sie anschließend auf Speichern.

  6. Verbinden Sie Ihre Drucker erneut, damit Windows die aktualisierten Gerätemetadaten liest, wenn das Gerät verbunden ist.

Problembehandlung

Problem: Es wird keine standardmäßige Popupbenachrichtigung angezeigt.

Wenn keine standardmäßige Druckbenachrichtigung angezeigt wird, wenn erwartet...

  • Mögliche Ursache: Die Testsignatur ist nicht aktiviert. Informationen zum Aktivieren finden Sie im Abschnitt Debuggen in diesem Thema.

  • Mögliche Ursache: Domänenrichtlinien haben Popupbenachrichtigungen deaktiviert. Verlassen Sie die Domäne und versuchen Sie es erneut.

  • Mögliche Ursache: Der Drucker hat DriverEvents nicht implementiert. Überprüfen Sie, ob Ihr v4-Treiber Bidi und DriverEvents unterstützt. Weitere Informationen finden Sie unter Treiberunterstützung für angepasste UI.

  • Mögliche Ursache: Der Computer hat keinen aktuellen Auftrag in der Druckerwarteschlange. Stellen Sie sicher, dass das Druckersymbol in der unteren rechten Ecke des Bildschirms angezeigt wird. Wenn nicht, senden Sie einen anderen Druckauftrag.

  • Mögliche Ursache: Ihr Einstiegspunkt für die Hintergrundaufgabe (IBackgroundTask) befindet sich innerhalb desselben Projekts wie die Vordergrund-App. Dies ist nicht zulässig. Trennen Sie eine völlig neue Klasse für den Hintergrundaufgabenhandler.

  • Mögliche Ursache: Die Klasse, die den Einstiegspunkt für Benachrichtigungen in Ihrer App darstellt, ist in Ihrem Manifest oder Ihren Gerätemetadaten falsch angegeben, was dazu führt, dass die App im Hintergrundhost abstürzt und kein Popup angezeigt wird. Prüfen Sie Folgendes:

    • Stellen Sie sicher, dass der Einstiegspunkt auf der Registerkarte Deklarationen des Manifest-Designers richtig angegeben ist. Er sollte sich in Form von Namespace.ClassName für C# und C++ befinden. Für JavaScript sollte es sich um den relativen Verzeichnispfad zur .js-Datei sein.

    • Eine JavaScript-App sollte close() aufrufen, nachdem sie abgeschlossen ist.

    • Die C#-Klasse muss Windows.ApplicationModel.Background.IBackgroundTask implementieren und über eine öffentliche void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance)- Methode verfügen.

    • Die C++ Klasse muss Windows::ApplicationModel::Background::IBackgroundTask implementieren und über eine virtual void Run(Windows::ApplicationModel::Background::IBackgroundTaskInstance^ taskInstance)- Methode verfügen.

Badgeübersicht (UWP-Apps)

Übersicht über Kachel- und Kachelbenachrichtigungen (UWP-Apps)

Richtlinien und Prüfliste für Kacheln und Badges (UWP-Apps)

Übersicht über Popupbenachrichtigungen (UWP-Apps)

Richtlinien und Prüfliste für Popupbenachrichtigungen (UWP-Apps)

Treiberunterstützung für angepasste UI

Entwickeln von v4-Drucktreibern

Druckererweiterungsschnittstellen (v4 Drucktreiber)

Bidirektionale Kommunikationen

Erste Schritte mit UWP-Apps

Erstellen einer UWP-Geräte-App (schrittweise Anleitung)

Erstellen von Gerätemetadaten für eine UWP-Geräte-App (schrittweise Anleitung)