Freigeben über


Gerätesynchronisierung und -update für Store-Geräte-Apps in Windows 8.1

Von Bedeutung

Gerätemetadaten sind veraltet und werden in einer zukünftigen Version von Windows entfernt. Informationen zum Ersatz dieser Funktionalität finden Sie unter Treiberpaketcontainermetadaten.

Ihre UWP-App kann eine Hintergrundaufgabe für Geräte verwenden, um Daten auf Ihrem Peripheriegerät zu synchronisieren. Wenn Ihre App Gerätemetadaten zugeordnet ist, kann diese UWP-Geräte-App auch einen Gerätehintergrund-Agent verwenden, um Geräteupdates auszuführen, z. B. Firmwareupdates. Geräte-Hintergrunddienste unterliegen Richtlinien, die sicherstellen, dass der Benutzer eingewilligt hat und die Akkulaufzeit erhalten bleibt, während Geräte synchronisiert und aktualisiert werden.

Um Gerätesynchronisierungs- und Aktualisierungsvorgänge auszuführen, erstellen Sie eine Gerätehintergrundaufgabe, die den DeviceUseTrigger bzw. DeviceServicingTrigger verwendet. Informationen zum Erstellen einer Gerätehintergrundaufgabe mit dem Beispiel für ein benutzerdefiniertes USB-Gerät finden Sie unter Erstellen einer Hintergrundaufgabe für Geräte.

Windows-Runtime-Geräte-APIs erfordern keine Gerätemetadaten. Dies bedeutet, dass Ihre App keine UWP-Geräte-App sein muss, um sie zu verwenden. UWP-Apps können diese APIs für den Zugriff auf USB, Human Interface Devices (HID), Bluetooth-Geräte und vieles mehr verwenden. Weitere Informationen finden Sie unter Integrieren von Geräten.

Übersicht über die Geräte-Hintergrundaufgabe

Wenn Benutzer Ihre UWP-App außerhalb des Bildschirms verschieben, hält Windows Ihre App im Arbeitsspeicher an, sodass eine andere App den Vordergrund hat. Wenn eine App angehalten wird, bleibt sie im Arbeitsspeicher, aber Windows hat ihre Ausführung gestoppt.

Alle laufenden Gerätevorgänge wie Synchronisierung und Aktualisierung werden ohne Hilfe einer Gerätehintergrundaufgabe unterbrochen. Windows stellt zwei Hintergrundaufgabentrigger zur Lösung dieses Problems bereit: DeviceUseTrigger und DeviceServicingTrigger. Mit diesen Triggern kann Ihre App lange ausgeführte Synchronisierungs- und Aktualisierungsvorgänge auf Ihrem Peripheriegerät sicher im Hintergrund ausführen, auch wenn Ihre App angehalten ist. Weitere Informationen zum Anhalten der App finden Sie unter Starten, Fortsetzen und Multitasking.

Trigger für Hintergrundaufgaben Erfordert Gerätemetadaten BESCHREIBUNG
DeviceUseTrigger Nein Ermöglicht lang andauernde Synchronisierungsvorgänge mit oder von Ihrem Peripheriegerät, während Ihre App ausgesetzt ist. Wenn Sie Ihr Gerät im Hintergrund synchronisieren, muss der Benutzer die Hintergrundsynchronisierung von Ihrer App genehmigen. Ihr Gerät muss auch mit dem PC verbunden oder gekoppelt sein, mit aktiver E/A und maximal 10 Minuten zulässiger Hintergrundaktivität. Weitere Details zur Richtlinienerzwingung finden Sie weiter unten in diesem Artikel.
DeviceServicingTrigger Ja Aktiviert lang andauernde Geräteupdates, z. B. Einstellungenübertragungen oder Firmwareupdates, während Ihre App angehalten wird. Damit Ihr Gerät im Hintergrund aktualisiert werden kann, ist jedes Mal die Zustimmung des Benutzers erforderlich, wenn die Hintergrundaufgabe eingesetzt wird. Im Gegensatz zur DeviceUseTrigger-Hintergrundaufgabe ermöglicht die DeviceServicingTrigger-Hintergrundaufgabe den Geräteneustart und die Trennung und ermöglicht maximal 30 Minuten Hintergrundaktivität. Weitere Details zur Richtlinienerzwingung finden Sie weiter unten in diesem Artikel.

DeviceServicingTrigger erfordert Gerätemetadaten, da die App als privilegierte App angegeben werden muss, um Geräteaktualisierungsvorgänge auszuführen.

App-Berechtigungen

Eine privilegierte App kann einige wichtige Gerätevorgänge ausführen, z. B. lang andauernde Geräteupdates. Eine privilegierte App ist die App, die der Gerätehersteller zum Ausführen dieser Vorgänge autorisiert. Die Gerätemetadaten geben an, welche App (falls vorhanden) als privilegierte App für ein Gerät festgelegt wird.

Geben Sie beim Erstellen der Gerätemetadaten mit dem Gerätemetadaten-Assistenten Ihre App auf der Seite " UWP-Geräte-App-Informationen angeben " an. Weitere Informationen finden Sie in Schritt 2: Erstellen von Gerätemetadaten für Ihre UWP-Geräte-App.

Unterstützte Protokolle

Gerätehintergrundaufgaben, die DeviceUseTrigger und DeviceServicingTrigger verwenden, ermöglichen Ihrer App die Kommunikation mit Peripheriegeräten über bestimmte Protokolle. Die vom System ausgelösten Aufgaben, die in der Regel von UWP-Apps verwendet werden, unterstützen diese Protokolle nicht.

Protokoll DeviceServicingTrigger DeviceUseTrigger Systemauslöser
USB deviceservicingtrigger unterstützt USB. deviceusetrigger unterstützt USB Systemtrigger unterstützen usb nicht
VERHEIMLICHTE DeviceUseTrigger unterstützt HID Systemtrigger unterstützen HID nicht
Bluetooth RFCOMM deviceservicingtrigger unterstützt Bluetooth rfcomm. deviceusetrigger unterstützt Bluetooth RFCOMM Systemtrigger unterstützen bluetooth rfcomm nicht
Bluetooth GATT Deviceservicingtrigger unterstützt Bluetooth GATT. deviceusetrigger unterstützt Bluetooth GATT Systemtrigger unterstützen Bluetooth GATT nicht
MTP (Medienübertragungsprotokoll) deviceservicingtrigger unterstützt mtp. deviceusetrigger unterstützt mtp nicht Systemtrigger unterstützen mtp nicht
Netzwerkverkabelt deviceservicingtrigger unterstützt kabelgebundenes Netzwerk. deviceusetrigger unterstützt keine kabelgebundene Netzwerkverbindung Systemtrigger unterstützen keine kabelgebundenen Netzwerke
Netzwerk Wi-Fi deviceservicingtrigger unterstützt vernetzte wi-fi. deviceusetrigger unterstützt keine vernetzten wi-fi Systemtrigger unterstützen keine Netzwerk-wi-fi
IDeviceIOControl deviceservicingtrigger unterstützt ideviceiocontrol. deviceusetrigger unterstützt ideviceiocontrol nicht Systemtrigger unterstützen ideviceiocontrol nicht

Registrieren von Hintergrundaufgaben im App-Paketmanifest

Ihre App führt Synchronisierungs- und Aktualisierungsvorgänge in Code aus, der als Teil einer Hintergrundaufgabe ausgeführt wird. Dieser Code ist in eine Windows-Runtime-Klasse eingebettet, die IBackgroundTask implementiert (oder auf einer dedizierten JavaScript-Seite für JavaScript-Apps). Um eine Hintergrundaufgabe für ein Gerät zu verwenden, muss es in der App-Manifestdatei einer Vordergrund-App deklariert werden, ähnlich wie bei systemausgelösten Hintergrundaufgaben.

In diesem Beispiel einer App-Paketmanifestdatei sind DeviceLibrary.SyncContent und DeviceLibrary.UpdateFirmware Einstiegspunkte aus der Vordergrund-App. DeviceLibrary.SyncContent ist der Einstiegspunkt für die Hintergrundaufgabe, die DeviceUseTrigger verwendet. DeviceLibrary.UpdateFirmware ist der Einstiegspunkt für die Hintergrundaufgabe, die deviceServicingTrigger verwendet.

<Extensions>
  <Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
    <BackgroundTasks>
      <m2:Task Type="deviceUse" /> 
    </BackgroundTasks>
  </Extension>
  <Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.UpdateFirmware">
    <BackgroundTasks>
      <m2:Task Type="deviceServicing" /> 
    </BackgroundTasks>
  </Extension>
</Extensions>

Verwendung Ihres Geräts mit Hintergrundaufgaben des Geräts

Um Ihre App zu entwickeln, um die Hintergrundaufgaben "DeviceUseTrigger" und "DeviceServicingTrigger" zu nutzen, führen Sie diese grundlegenden Schritte aus. Weitere Informationen zu Hintergrundaufgaben finden Sie unter Unterstützen ihrer App mit Hintergrundaufgaben.

  1. Ihre App registriert ihre Hintergrundaufgabe im App-Manifest und bettet den Hintergrundaufgabencode in eine Windows-Runtime-Klasse ein, die IBackgroundTask oder eine dedizierte JavaScript-Seite für JavaScript-Apps implementiert.

  2. Wenn Ihre App gestartet wird, erstellt und konfiguriert sie ein Gerätetriggerobjekt des entsprechenden Typs, entweder DeviceUseTrigger oder DeviceServicingTrigger, und speichert die Triggerinstanz für die zukünftige Verwendung.

  3. Ihre App prüft, ob die Hintergrundaufgabe zuvor registriert wurde, und registriert sie andernfalls gegen den Gerätetrigger. Ihre App darf keine Bedingungen für die aufgabe festlegen, die diesem Auslöser zugeordnet ist.

  4. Wenn Ihre App die Hintergrundaufgabe auslösen muss, ruft sie die RequestAsync-Aktivierungsmethode für das Gerätetriggerobjekt auf.

  5. Ihre Hintergrundaufgabe wird nicht wie andere Systemhintergrundaufgaben gedrosselt (es gibt kein CPU-Zeitkontingent), wird jedoch mit reduzierter Priorität ausgeführt, um die Reaktionsfähigkeit von Vordergrund-Apps aufrechtzuerhalten.

  6. Basierend auf dem Triggertyp überprüft Windows, ob die erforderlichen Richtlinien erfüllt sind, einschließlich der Anforderung der Benutzerzustimmung für den Vorgang vor dem Starten der Hintergrundaufgabe.

  7. Windows überwacht Systembedingungen und Aufgabenlaufzeit und bricht bei Bedarf die Aufgabe ab, wenn die erforderlichen Bedingungen nicht mehr erfüllt sind.

  8. Wenn die Hintergrundaufgaben Fortschritt oder Abschluss berichtet, empfängt Ihre App diese Ereignisse über Fortschritts- und Abschlussereignisse für die registrierte Aufgabe.

Wichtige Punkte, die Sie bei der Verwendung der Hintergrundaufgaben des Geräts berücksichtigen sollten

  • Die Möglichkeit, Hintergrundaufgaben, die DeviceUseTrigger und DeviceServicingTrigger verwenden, programmgesteuert auszulösen, ist nur auf Hintergrundaufgaben des Geräts beschränkt.

  • Windows erzwingt bestimmte Richtlinien, um die Zustimmung des Benutzers beim Aktualisieren seiner Peripheriegeräte sicherzustellen. Weitere Richtlinien werden erzwungen, um die Akkulaufzeit des Benutzers beim Synchronisieren und Aktualisieren von Peripheriegeräten beizubehalten.

  • Windows kann Hintergrundaufgaben abbrechen, die DeviceUseTrigger und DeviceServicingTrigger verwenden, wenn bestimmte Richtlinienanforderungen nicht mehr erfüllt sind, einschließlich einer maximalen Hintergrundzeit (Wanduhrzeit). Es ist wichtig, diese Richtlinienanforderungen zu berücksichtigen, wenn Sie diese Hintergrundaufgaben für die Interaktion mit Ihrem Peripheriegerät verwenden.

Tipp

Um zu sehen, wie diese Hintergrundaufgaben funktionieren, laden Sie ein Beispiel herunter. Das Beispiel für ein benutzerdefiniertes USB-Gerät veranschaulicht eine Hintergrundaufgabe, die die Gerätesynchronisierung mit DeviceUseTrigger durchführt.

Wenn Ihre App DeviceUseTrigger oder DeviceServicingTrigger verwendet, erzwingt Windows Richtlinien, um sicherzustellen, dass der Benutzer Ihrer App die Berechtigung zum Zugreifen auf sein Gerät im Hintergrund zum Synchronisieren und Aktualisieren von Inhalten erteilt. Richtlinien werden auch erzwungen, um die Akkulaufzeit des Benutzers beim Synchronisieren und Aktualisieren von Peripheriegeräten zu erhalten.

Eine Hintergrundaufgabe, die DeviceUseTrigger verwendet, erfordert eine einmalige Benutzerzustimmung, mit der Ihre App im Hintergrund synchronisiert werden kann. Diese Zustimmung wird pro App und Gerätemodell gespeichert. Der Benutzer stimmt zu, der App den Zugriff auf das Gerät im Hintergrund zu ermöglichen, genau wie er zustimmt, damit die App auf das Gerät zugreifen kann, wenn sich die App im Vordergrund befindet.

Im folgenden Beispiel erhält eine App mit dem Namen Tailspin Toys die Benutzerberechtigung für die Synchronisierung im Hintergrund.

Dialogfeld zur Benutzereinwilligung für die Gerätesynchronisierung.

Wenn Benutzer ihre Meinung später ändern, können sie Berechtigungen in den Einstellungen widerrufen.

Einstellungsdialogfeld für Gerätesynchronisierungsberechtigungen.

Im Gegensatz zu Hintergrundaufgaben, die DeviceUseTrigger verwenden, benötigen Hintergrundaufgaben, die den DeviceServicingTrigger verwenden, jedes Mal die Zustimmung des Benutzers, wenn die Hintergrundaufgabe ausgelöst wird. Diese Zustimmung wird nicht gespeichert, wie sie für DeviceUseTrigger gilt. Dies liegt daran, dass Gerätefirmwareupdates vorgänge mit höherem Risiko beinhalten und mehr Zeit benötigen, um den Vorgang abzuschließen.

Windows stellt Benutzern außerdem Informationen zu Geräteupdates zur Verfügung. Dies schließt Warnungen ein, um das Gerät während des gesamten Updates zu verbinden und sicherzustellen, dass der PC aufgeladen ist. Windows zeigt auch die ungefähre Laufzeit des Vorgangs an, wenn ihre App sie bereitstellt.

Dialogfeld

Einschränkungen für Frequenz und Vordergrund

Es gibt keine Einschränkung der Häufigkeit, mit der Ihre App Vorgänge initiieren kann, aber Ihre App kann jeweils nur einen DeviceUseTrigger- oder DeviceServicingTrigger-Hintergrundaufgabenvorgang ausführen (dies wirkt sich nicht auf andere Arten von Hintergrundaufgaben aus), und kann eine Hintergrundaufgabe nur initiieren, während sich Ihre App im Vordergrund befindet. Wenn sich Ihre App nicht im Vordergrund befindet, kann sie keine Hintergrundaufgabe mit DeviceUseTrigger oder DeviceServicingTrigger initiieren. Ihre App kann keine zweite Gerätehintergrundaufgabe initiieren, bevor die erste Hintergrundaufgabe abgeschlossen wurde.

Richtlinien für Hintergrundaufgaben von Geräten

Windows erzwingt Richtlinien, wenn Ihre App eine Hintergrundaufgabe für Geräte verwendet. Wenn diese Richtlinien nicht erfüllt sind, wird die Hintergrundaufgabe mit DeviceUseTrigger oder DeviceServicingTrigger möglicherweise abgebrochen. Es ist wichtig, diese Richtlinienanforderungen bei der Verwendung von Gerätehintergrundaufgaben für die Interaktion mit Ihrem Peripheriegerät zu berücksichtigen.

Richtlinien für die Aufgabeninitiierung

Diese Tabelle gibt an, welche Aufgabeninitiierungsrichtlinien für jeden Hintergrundaufgabentrigger gelten.

Politik DeviceServicingTrigger DeviceUseTrigger
Ihre UWP-App befindet sich beim Auslösen der Hintergrundaufgabe im Vordergrund. Die Richtlinie gilt. Richtlinie gilt
Ihr Gerät ist an das System angeschlossen (oder in Reichweite für ein drahtloses Gerät). Die Richtlinie gilt. Richtlinie gilt
Ihre Hintergrundaufgabe verbraucht 400 ms CPU-Zeit (vorausgesetzt, eine CPU mit 1 GHz) jede Minute, wenn der Bildschirm gesperrt ist, oder alle 5 Minuten, wenn der Bildschirm nicht gesperrt ist. Wenn diese Richtlinie nicht erfüllt wird, kann dies zu einem Abbruch Ihrer Aufgabe führen. Die Richtlinie gilt. Richtlinie gilt
Auf Ihr Gerät kann über die Peripherie-APIs des Geräts (die Windows-Runtime-APIs für USB, HID, Bluetooth usw.) für die App zugegriffen werden. Wenn Ihre App nicht auf das Gerät zugreifen kann, wird der Zugriff auf die Hintergrundaufgaben verweigert. Die Richtlinie gilt. Richtlinie gilt
Der von der App bereitgestellte Einstiegspunkt für die Hintergrundaufgabe wird im App-Paketmanifest registriert. Die Richtlinie gilt. Richtlinie gilt
Der Benutzer hat der Aufgabe die Berechtigung zum Fortsetzen erteilt. Jedes Mal. Zum ersten Mal, dann durch App-Berechtigungen gesteuert.
Die von der App bereitgestellte Zeitschätzung beträgt weniger als 30 Minuten. Die Richtlinie gilt. Richtlinie gilt nicht
Die App wird als privilegierte App für das Gerät angegeben. (Es muss eine exakte Übereinstimmung der App-ID mit der Liste der privilegierten Apps in den Gerätemetadaten des Gerätecontainers vorhanden sein.) Die Richtlinie gilt. Richtlinie gilt nicht
Der Computer verfügt über mehr als 33% verbleibende Akkukapazität oder ist im Netzbetrieb. Die Richtlinie gilt. Richtlinie gilt nicht
Pro Vorgangstyp wird nur eine Hintergrundaufgabe für Geräte ausgeführt. Die Richtlinienüberprüfung wird angewendet. Richtlinie gilt

Laufzeit-Richtlinienprüfungen

Windows erzwingt die folgenden Laufzeitrichtlinienanforderungen, während Ihre Aufgabe im Hintergrund ausgeführt wird. Wenn eine der Ausführungsanforderungen nicht mehr zutrifft, bricht Windows die Hintergrundaufgabe des Geräts ab.

Diese Tabelle gibt an, welche Laufzeitrichtlinien für jeden Hintergrundaufgabentrigger gelten.

Richtlinienüberprüfung DeviceServicingTrigger DeviceUseTrigger
Zeitlimit für die Wanduhr – die Gesamtdauer der Ausführung der App-Aufgabe im Hintergrund. 30 Minuten 10 Minuten
Ihr Gerät ist an das System angeschlossen (oder in Reichweite für ein drahtloses Gerät). Die Richtlinie gilt nicht. Richtlinienüberprüfung gilt
Die Aufgabe führt normale E/A-Vorgänge auf dem Gerät aus (1 E/A alle 5 Sekunden). Die Richtlinie gilt nicht. Richtlinienüberprüfung gilt
Die App hat den Task nicht abgebrochen. Richtlinienüberprüfung wird angewendet. Richtlinienüberprüfung gilt
Die App ist nicht beendet worden. Die Richtlinienüberprüfung gilt. Richtlinienüberprüfung gilt

Bewährte Methoden

Im Folgenden sind bewährte Methoden für UWP-Geräte-Apps aufgeführt, die die Hintergrundaufgaben des Geräts verwenden.

Programmiermodell für Gerätehintergrundaufgaben

Die Verwendung der Hintergrundaufgaben "DeviceUseTrigger" oder "DeviceServicingTrigger" aus Ihrer App stellt sicher, dass alle Synchronisierungs- oder Geräteaktualisierungsvorgänge, die von der Vordergrund-App gestartet wurden, weiterhin im Hintergrund ausgeführt werden, wenn Benutzer Apps wechseln und die Vordergrund-App von Windows angehalten wird. Es wird empfohlen, dieses allgemeine Modell zum Registrieren, Auslösen und Aufheben der Registrierung Ihrer Hintergrundaufgaben zu befolgen:

  1. Registrieren Sie die Hintergrundaufgabe, bevor Sie den Trigger anfordern.

  2. Verbinden Sie Fortschritts- und Abschlussereignishandler mit dem Trigger. Wenn Ihre App aus dem Aussetzen zurückkehrt, stellt Windows Ihrer App alle in der Warteschlange befindlichen Fortschritts- oder Abschlussereignisse bereit, die verwendet werden können, um den Status Ihrer Hintergrundaufgaben zu bestimmen.

  3. Schließen Sie alle geöffneten Geräteobjekte, wenn Sie Ihre DeviceUseTrigger- oder DeviceServicingTrigger-Hintergrundaufgaben auslösen, damit diese Geräte frei geöffnet und von Ihrer Hintergrundaufgabe verwendet werden können.

  4. Registrieren Sie den Auslöser.

  5. Wenn eine Aufgabe abgeschlossen ist, heben Sie die Registrierung der Hintergrundaufgabe auf. Nach Abschluss der Hintergrundaufgabe können Sie die Registrierung der Hintergrundaufgaben aufheben und das Gerät erneut öffnen und es regelmäßig aus Ihrer UWP-App verwenden.

  6. Registrieren Sie sich für Abmeldereignisse in Ihrer Hintergrundaufgabenklasse. Die Registrierung für Abbruchereignisse ermöglicht es Ihrem Hintergrundaufgabencode, die ausgeführte Hintergrundaufgabe sauber zu beenden, wenn sie von Windows oder der Vordergrund-App abgebrochen wird.

  7. Heben Sie beim Beenden der App (nicht anhaltend) die Registrierung auf, und brechen Sie alle ausgeführten Aufgaben ab.

    • Wenn Ihre App beendet wird, heben Sie die Registrierung auf, und brechen Sie alle ausgeführten Aufgaben ab.

    • Wenn Ihre App beendet wird, werden die Hintergrundaufgaben abgebrochen, und alle vorhandenen Ereignishandler werden von Ihren vorhandenen Hintergrundaufgaben getrennt. Dadurch wird verhindert, dass Sie den Status Ihrer Hintergrundaufgaben bestimmen. Wenn Sie die Registrierung aufheben und die Hintergrundaufgabe abbrechen, kann Ihr Abbruchcode Ihre Hintergrundaufgaben sauber beenden.

Tipp

Ausführliche Beschreibungen dazu, wie dies mit dem Beispiel für ein benutzerdefiniertes USB-Gerät erfolgt, finden Sie unter Erstellen einer Hintergrundaufgabe für Geräte.

Abbrechen einer Hintergrundaufgabe

Verwenden Sie zum Abbrechen einer Im Hintergrund ausgeführten Aufgabe aus der Vordergrund-App die Unregister-Methode für das BackgroundTaskRegistration-Objekt, das Sie in Ihrer App verwenden, um die Hintergrundaufgabe "DeviceUseTrigger " oder "DeviceServicingTrigger " zu registrieren. Wenn Sie die Registrierung Ihrer Hintergrundaufgabe mithilfe der Unregister-Methode von BackgroundTaskRegistration aufheben, wird die Infrastruktur für Hintergrundaufgaben dazu führen, dass die Hintergrundaufgabe abgebrochen wird.

Die Unregister-Methode verwendet zusätzlich einen booleschen Wert von true oder false, um anzugeben, ob derzeit ausgeführte Instanzen der Hintergrundaufgabe abgebrochen werden sollen, ohne dass sie fertiggestellt werden können. Weitere Informationen finden Sie in der API-Referenz für BackgroundTaskRegistration.Unregister.