Sdílet prostřednictvím


Synchronizace a aktualizace zařízení pro aplikace ze Storu ve Windows 8.1

Důležité

Metadata zařízení jsou zastaralá a budou odebrána v budoucí verzi Windows. Informace o nahrazení této funkce naleznete v tématu Metadata kontejneru balíčku ovladačů.

Aplikace pro UPW může k synchronizaci dat na periferním zařízení použít úlohu na pozadí zařízení. Pokud je vaše aplikace přidružená k metadatům zařízení, může tato aplikace zařízení pro UPW použít také agenta na pozadí zařízení k provádění aktualizací zařízení, jako jsou aktualizace firmwaru. Agenti na pozadí zařízení podléhají zásadám, které zajišťují souhlas uživatele a pomáhají zachovat životnost baterie při synchronizaci a aktualizaci zařízení.

Pokud chcete provádět operace synchronizace a aktualizace zařízení, vytvořte úlohu na pozadí zařízení, která používá DeviceUseTrigger a DeviceServicingTrigger. Pokud chcete zjistit, jak vytvořit úlohu na pozadí zařízení pomocí ukázky vlastního zařízení USB, přečtěte si téma Vytvoření úlohy na pozadí zařízení.

Rozhraní API zařízení prostředí Windows Runtime nevyžadují metadata zařízení. To znamená, že vaše aplikace nemusí být aplikací pro zařízení UPW, která by je používala. Aplikace pro UPW můžou tato rozhraní API používat pro přístup k USB, zařízením HID (Human Interface Devices), zařízením Bluetooth a dalším funkcím. Další informace najdete v tématu Integrace zařízení.

Přehled úlohy na pozadí zařízení

Když uživatelé přesunou aplikaci pro UPW mimo obrazovku, Windows pozastaví vaši aplikaci v paměti a nechá jinou aplikaci na popředí. Když je aplikace pozastavená, zůstává v paměti, ale Windows ji zastavil, aby neběžela.

Všechny probíhající operace zařízení, jako je synchronizace a aktualizace, se přeruší bez pomoci úlohy na pozadí zařízení. Systém Windows poskytuje dva triggery úloh na pozadí k vyřešení tohoto problému: DeviceUseTrigger a DeviceServicingTrigger. Tyto triggery umožňují vaší aplikaci bezpečně provádět dlouhotrvající operace synchronizace a aktualizace na periferním zařízení na pozadí, i když je vaše aplikace pozastavená. Další informace o pozastavení aplikace najdete v tématu Spuštění, obnovení a multitasking.

Spouštěč úlohy na pozadí Vyžaduje metadata zařízení. Popis
DeviceUseTrigger Ne Umožňuje dlouhotrvající operace synchronizace do nebo z periferního zařízení, když je aplikace pozastavená. Synchronizace zařízení na pozadí vyžaduje, aby uživatel schválil synchronizaci pozadí vaší aplikací. Zařízení musí být také připojené k počítači nebo spárované s ním, s aktivními vstupně-výstupními operacemi a maximálně 10 minut povolené aktivity na pozadí. Podrobnější informace o vynucování zásad najdete dále v tomto článku.
DeviceServicingTrigger Ano Umožňuje dlouhotrvající aktualizace zařízení, například přenosy nastavení nebo aktualizace firmwaru, když je vaše aplikace pozastavená. Aktualizace zařízení na pozadí vyžaduje schválení uživatele při každém použití úlohy na pozadí. Na rozdíl od úlohy deviceUseTrigger na pozadí úloha DeviceServicingTrigger na pozadí umožňuje restartování a odpojení zařízení a umožňuje maximálně 30 minut aktivity na pozadí. Podrobnější informace o vynucování zásad najdete dále v tomto článku.

DeviceServicingTrigger vyžaduje metadata zařízení, protože aplikace musí být určena jako privilegovaná aplikace, aby bylo možné provádět operace aktualizace zařízení.

Oprávnění aplikace

Privilegovaná aplikace může provádět některé důležité operace zařízení, například dlouho běžící aktualizace zařízení. Privilegovaná aplikace je aplikace, kterou výrobce zařízení autorizuje k provádění těchto operací. Metadata zařízení určují, která aplikace (pokud existuje) je určená jako privilegovaná aplikace pro zařízení.

Při vytváření metadat zařízení pomocí průvodce metadaty zařízení zadejte aplikaci na stránce Zadat informace o aplikaci pro UPW . Další informace najdete v kroku 2: Vytvoření metadat zařízení pro aplikaci zařízení UPW.

Podporované protokoly

Úlohy na pozadí zařízení, které používají DeviceUseTrigger a DeviceServicingTrigger, umožňují vaší aplikaci komunikovat s periferními zařízeními přes konkrétní protokoly. Úlohy aktivované systémem obvykle používané aplikacemi pro UPW tyto protokoly nepodporují.

Protokol SpouštěčServisníhoZařízení DeviceUseTrigger Systémové spouštěče
USB DeviceServicingTrigger podporuje USB. deviceusetrigger podporuje USB Triggery systému nepodporují usb
skryto deviceservicingtrigger podporuje skrytí. deviceusetrigger podporuje skrytí Systémové spouštěče nepodporují HID
Bluetooth RFCOMM Deviceservicingtrigger podporuje RFCOMM Bluetooth. deviceusetrigger podporuje Bluetooth RFCOMM Systémové triggery nepodporují Bluetooth rfcomm
Bluetooth GATT deviceservicingtrigger podporuje bluetooth gatt. deviceusetrigger podporuje Bluetooth GATT systémové spouštěcí události nepodporují bluetooth gatt
MTP (Protokol přenosu médií) DeviceServicingTrigger podporuje MTP. deviceusetrigger nepodporuje mtp Triggery systému nepodporují mtp
Drátové připojení k síti deviceservicingtrigger podporuje drátové připojení k síti. deviceusetrigger nepodporuje pevné připojení Triggery systému nepodporují síťovou kabelovou síť
Síť Wi-Fi deviceservicingtrigger podporuje připojení k síti wi-fi. Spouštěč používání zařízení nepodporuje síťovou funkci wi-fi Spouště systému nepodporují funkce sítě wi-fi
IDeviceIOControl DeviceServicingTrigger podporuje IDeviceIOControl. deviceusetrigger nepodporuje ideviceiocontrol system triggers do not support ideviceiocontrolSystémové triggery nepodporují ideviceiocontrol

Registrace úloh na pozadí v manifestu balíčku aplikace

Aplikace provádí operace synchronizace a aktualizace v kódu, který běží jako součást úlohy na pozadí. Tento kód je vložen do třídy Windows Runtime, která implementuje IBackgroundTask (nebo na vyhrazenou stránku JavaScriptu pro aplikace v JavaScriptu). Pokud chcete použít úlohu na pozadí zařízení, musí aplikace deklarovat ji v souboru manifestu aplikace na popředí, jako to dělá u úloh na pozadí aktivovaných systémem.

V tomto příkladu souboru manifestu balíčku aplikace jsou DeviceLibrary.SyncContent a DeviceLibrary.UpdateFirmware vstupními body z hlavní aplikace. DeviceLibrary.SyncContent je vstupním bodem pro úlohu na pozadí, která používá DeviceUseTrigger. DeviceLibrary.UpdateFirmware je vstupním bodem pro úlohu na pozadí, která používá DeviceServicingTrigger.

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

Použití zařízení s úlohami na pozadí zařízení

Pokud chcete vyvíjet aplikaci, abyste mohli využívat úlohy na pozadí DeviceUseTrigger a DeviceServicingTrigger, postupujte podle této základní sady kroků. Další informace o úlohách na pozadí najdete v tématu Podpora aplikace pomocí úloh na pozadí.

  1. Vaše aplikace zaregistruje úlohu na pozadí v manifestu aplikace a vloží kód úlohy na pozadí do třídy Windows Runtime, která implementuje IBackgroundTask, nebo na vyhrazenou stránku pro JavaScript pro javascriptové aplikace.

  2. Když se aplikace spustí, vytvoří a nakonfiguruje objekt triggeru zařízení odpovídajícího typu, buď DeviceUseTrigger, nebo DeviceServicingTrigger, a uloží instanci triggeru pro budoucí použití.

  3. Vaše aplikace zkontroluje, jestli byla úloha na pozadí dříve zaregistrovaná, a pokud ne, zaregistruje ji proti triggeru zařízení. Vaše aplikace nemůže nastavit podmínky pro úlohu přidruženou k tomuto triggeru.

  4. Když vaše aplikace potřebuje aktivovat úlohu na pozadí, volá metodu aktivace RequestAsync na objektu triggeru zařízení.

  5. Úloha na pozadí není omezená, jako jsou jiné úlohy na pozadí systému (neexistuje žádná kvóta času procesoru), ale běží s omezenou prioritou, aby aplikace na popředí zůstaly responzivní.

  6. Na základě typu triggeru systém Windows ověří splnění nezbytných zásad, včetně vyžádání souhlasu uživatele pro operaci před spuštěním úlohy na pozadí.

  7. Systém Windows monitoruje podmínky systému a modul runtime úloh a v případě potřeby zruší úlohu, pokud už nejsou splněny požadované podmínky.

  8. Když úkoly na pozadí hlásí průběh nebo dokončení, aplikace tyto události obdrží prostřednictvím průběhu a dokončených událostí u registrovaného úkolu.

Důležité body, které je potřeba vzít v úvahu při používání úloh na pozadí zařízení

  • Možnost programově aktivovat úlohy na pozadí, které používají DeviceUseTrigger a DeviceServicingTrigger, je omezena pouze na úlohy na pozadí zařízení.

  • Systém Windows vynucuje určité zásady, které zajistí souhlas uživatele při aktualizaci periferních zařízení. Při synchronizaci a aktualizaci periferních zařízení se vynucují další zásady, aby se zachovala životnost baterie uživatele.

  • Systém Windows může zrušit úlohy na pozadí, které používají DeviceUseTrigger a DeviceServicingTrigger, pokud už nejsou splněny určité požadavky zásad, včetně maximálního času na pozadí (hodinová doba). Při použití těchto úloh na pozadí k interakci s periferním zařízením je důležité vzít v úvahu tyto požadavky zásad.

Návod

Pokud chcete zjistit, jak tyto úlohy na pozadí fungují, stáhněte si ukázku. Ukázka vlastního zařízení USB ukazuje úlohu na pozadí, která provádí synchronizaci zařízení se zařízením DeviceUseTrigger.

Když vaše aplikace používá DeviceUseTrigger nebo DeviceServicingTrigger, Systém Windows vynucuje zásady, které zajistí, aby uživatel dal aplikaci oprávnění pro přístup ke svému zařízení na pozadí pro synchronizaci a aktualizaci obsahu. Zásady se také vynucují, aby se zachovala životnost baterie uživatelů při synchronizaci a aktualizaci periferních zařízení.

Úloha na pozadí, která používá DeviceUseTrigger, vyžaduje jednorázový souhlas uživatele, který aplikaci umožní synchronizaci na pozadí. Tento souhlas se ukládá pro jednotlivé aplikace a model zařízení. Uživatel souhlasí s tím, že aplikaci umožní přístup k zařízení na pozadí stejně jako souhlas s povolením přístupu aplikace k zařízení, když je aplikace v popředí.

V následujícím příkladu aplikace s názvem Tailspin Toys získává oprávnění uživatele k synchronizaci na pozadí.

dialogové okno se zprávou souhlasu uživatele synchronizace zařízení

Pokud si uživatelé později změní názor, můžou oprávnění v Nastavení odvolat.

Dialogové okno pro nastavení oprávnění synchronizace zařízení

Na rozdíl od úloh na pozadí, které používají DeviceUseTrigger, ty, které používají úlohu DeviceServicingTrigger na pozadí, vyžadují souhlas uživatele při každém spuštění úlohy na pozadí. Tento souhlas se neukládá stejným způsobem jako u DeviceUseTrigger. Důvodem je to, že aktualizace firmwaru zařízení zahrnují operace s vyšším rizikem a potřebují více času na dokončení.

Systém Windows také poskytuje uživatelům informace o aktualizacích zařízení. To zahrnuje upozornění, abyste udrželi zařízení připojené během aktualizace, a zajistit, aby byl počítač nabitý. Windows také zobrazuje přibližnou dobu spuštění operace, pokud ji vaše aplikace poskytuje.

dialogové okno se zprávou o souhlasu uživatele aktualizace zařízení

Omezení četnosti a popředí

Neexistuje žádné omezení četnosti, s jakou může aplikace zahájit operace, ale vaše aplikace může spustit vždy jenom jednu operaci úlohy DeviceUseTrigger nebo DeviceServicingTrigger na pozadí (to nemá vliv na jiné typy úloh na pozadí) a může zahájit úlohu na pozadí pouze v době, kdy je vaše aplikace v popředí. Pokud vaše aplikace není v popředí, nemůže zahájit úlohu na pozadí pomocí DeviceUseTriggeru nebo DeviceServicingTriggeru. Aplikace nemůže zahájit druhou úlohu na pozadí zařízení, než se dokončí první úloha na pozadí.

Zásady úloh na pozadí zařízení

Windows vynucuje zásady, když vaše aplikace používá úlohu na pozadí zařízení. Pokud tyto zásady nejsou splněné, může být úloha na pozadí pomocí DeviceUseTriggeru nebo DeviceServicingTriggeru zrušena. Tyto požadavky zásad je důležité vzít v úvahu při práci s periferním zařízením pomocí úloh na pozadí zařízení.

Zásady inicializace úkolů

Tato tabulka označuje, které zásady inicializace úkolů se vztahují na jednotlivé triggery úlohy na pozadí.

Policy SpouštěčServisníhoZařízení DeviceUseTrigger
Vaše aplikace pro UWP je v popředí při spuštění úlohy na pozadí. platí. zásady platí
Zařízení je připojené k systému (nebo v dosahu bezdrátového zařízení). platí. zásady platí
Úloha na pozadí spotřebovává 400ms času procesoru (za předpokladu, že procesor 1GHz) každou minutu, když je obrazovka uzamčena, nebo každých 5 minut, když obrazovka není uzamčená. Pokud tuto zásadu nesplníte, může dojít ke zrušení úkolu. platí. zásady platí
Vaše zařízení je přístupné pro aplikaci pomocí periferních rozhraní API zařízení (rozhraní API prostředí Windows Runtime pro USB, HID, Bluetooth atd.). Pokud vaše aplikace nemá přístup k zařízení, přístup k úlohům na pozadí se odepře. platí. zásady platí
Vstupní bod úlohy na pozadí poskytnutý aplikací je registrován v manifestu balíčku aplikace. platí. zásady platí
Uživatel udělil úkolu oprávnění pokračovat. Pokaždé. Poprvé, poté je ovládáno oprávněními aplikace.
Časový odhad poskytnutý aplikací je kratší než 30 minut. platí. zásady se nevztahují
Aplikace se pro zařízení zadává jako privilegovaná aplikace. (Musí existovat úplná shoda ID aplikace se seznamem privilegovaných aplikací v metadatech zařízení kontejneru zařízení.) platí. zásady se nevztahují
Počítač má zbývající kapacitu baterie větší než 33%, nebo je na síťovém napájení. platí. zásady se nevztahují
Pro každý typ operace je spuštěna pouze jedna úloha na pozadí zařízení. kontrola zásad se uplatňuje. zásady platí

Kontroly zásad modulu runtime

Systém Windows vynucuje následující požadavky na zásady modulu runtime, zatímco vaše úloha běží na pozadí. Pokud některý z požadavků na modul runtime přestane platit, Windows zruší úlohu na pozadí vašeho zařízení.

Tato tabulka označuje, které zásady modulu runtime se vztahují na jednotlivé triggery úlohy na pozadí.

Kontrola zásad SpouštěčServisníhoZařízení DeviceUseTrigger
Časový limit nástěnného času – celková doba, po kterou může úloha vaší aplikace běžet na pozadí. 30 minut 10 minut
Zařízení je připojené k systému (nebo v dosahu bezdrátového zařízení). politika se nevztahuje. se uplatňuje kontrola zásad
Úloha provádí pravidelné vstupně-výstupní operace do zařízení (1 vstupně-výstupní operace každých 5 sekund). politika se nevztahuje. se uplatňuje kontrola zásad
Aplikace úlohu nezrušila. kontrola zásad se uplatňuje. se uplatňuje kontrola zásad
Aplikace se neukončila. kontrola zásad se uplatňuje. se uplatňuje kontrola zásad

Osvědčené postupy

Níže jsou uvedené osvědčené postupy pro aplikace pro zařízení s UPW, které používají úlohy na pozadí zařízení.

Model programování úloh na pozadí zařízení

Pomocí úloh na pozadí DeviceUseTrigger nebo DeviceServicingTrigger z vaší aplikace zajistíte, že všechny operace synchronizace nebo aktualizace zařízení spuštěné z vaší aplikace na popředí budou dál běžet na pozadí, pokud uživatelé přepínají aplikace a vaše aplikace na popředí je pozastavena systémem Windows. Doporučujeme postupovat podle tohoto celkového modelu pro registraci, aktivaci a zrušení registrace úloh na pozadí:

  1. Před vyžádáním triggeru zaregistrujte úlohu na pozadí.

  2. Připojte obslužné rutiny událostí průběhu a dokončení ke spouštěči. Když se aplikace vrátí z pozastavení, Windows vaší aplikaci poskytne všechny ve frontě zařazené události o průběhu či dokončení, které lze použít k určení stavu úloh na pozadí.

  3. Zavřete všechny otevřené objekty zařízení, když aktivujete úlohy na pozadí DeviceUseTrigger nebo DeviceServicingTrigger, aby tato zařízení byla volně otevřená a používána úlohou na pozadí.

  4. Zaregistrujte spouštěč.

  5. Po dokončení úkolu zrušíte registraci úlohy na pozadí. Po dokončení úlohy na pozadí můžete zrušit registraci úloh na pozadí a znovu otevřít zařízení a pravidelně ho používat z aplikace pro UPW.

  6. Zaregistrujte události zrušení z třídy úloh na pozadí. Registrace pro události zrušení umožňuje kódu úlohy na pozadí správně ukončit spuštěnou úlohu na pozadí, když ji zruší Windows nebo vaše aplikace na popředí.

  7. Při ukončení aplikace (ne pozastavení) zrušte registraci a zrušte všechny spuštěné úlohy.

    • Po ukončení aplikace zrušte registraci a zrušte všechny spuštěné úlohy.

    • Když se vaše aplikace ukončí, vaše úlohy na pozadí se zruší a všechny existující obslužné rutiny událostí se odpojí od stávajících úloh na pozadí. Tím vás to brání v tom, abyste určili stav svých úloh na pozadí. Zrušení registrace a zrušení úlohy na pozadí umožní kódu zrušení vyčistit úlohy na pozadí.

Návod

Podrobný popis toho, jak se to provádí pomocí ukázky vlastního zařízení USB, najdete v tématu Vytvoření úlohy na pozadí zařízení.

Zrušení úlohy na pozadí

Pokud chcete zrušit úlohu spuštěnou na pozadí z vaší aplikace na popředí, použijte metodu Unregister na objektu BackgroundTaskRegistration, který v aplikaci používáte, k registraci úlohy na pozadí DeviceUseTrigger nebo DeviceServicingTrigger . Zrušení registrace úlohy na pozadí pomocí metody Zrušit registraci v BackgroundTaskRegistration způsobí, že infrastruktura úloh na pozadí zruší úlohu na pozadí.

Metoda Unregister navíc přebírá logickou hodnotu true nebo false označující, jestli se aktuálně spuštěné instance úlohy na pozadí mají zrušit, aniž by bylo možné je dokončit. Další informace najdete v referenčních informacích k rozhraní API pro BackgroundTaskRegistration.Unregister.