Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Nezpracovaná oznámení jsou krátká oznámení určená pro obecné účely. Jsou přísně instruktážní a nezahrnují komponentu uživatelského rozhraní. Stejně jako u jiných nabízených oznámení poskytuje funkce WNS (Windows Push Notification Services) nezpracovaná oznámení z cloudové služby do vaší aplikace.
Nezpracovaná oznámení můžete použít pro různé účely, včetně aktivace aplikace tak, aby spouštěla úlohu na pozadí, pokud uživatel udělil oprávnění aplikace. Pomocí služby WNS ke komunikaci s vaší aplikací se můžete vyhnout režijním nákladům na zpracování vytváření trvalých připojení soketů, odesílání zpráv HTTP GET a dalších připojení typu service-to-app.
Important
Abyste porozuměli nezpracovaným oznámením, je nejlepší seznámit se s koncepty, které jsou popsány v přehledu služby WNS (Windows Push Notification Services).
Stejně jako u informačních zpráv, dlaždic a odznáčků jsou surová oznámení odesílána z cloudové služby vaší aplikace přes přiřazený kanál URI (Uniform Resource Identifier) do WNS. WNS následně doručí oznámení zařízení a uživatelskému účtu přidruženému k danému kanálu. Na rozdíl od jiných nabízených oznámení nemají nezpracovaná oznámení zadaný formát. Obsah datové části je zcela definovaný aplikací.
Jako obrázek aplikace, která by mohla těžit z nezpracovaných oznámení, se podíváme na teoretickou aplikaci pro spolupráci na dokumentech. Zvažte dva uživatele, kteří upravují stejný dokument najednou. Cloudová služba, která je hostitelem sdíleného dokumentu, může pomocí nezpracovaných oznámení upozorňovat každého uživatele na změny provedené jiným uživatelem. Nezpracovaná oznámení nemusí nutně obsahovat změny dokumentu, ale místo toho by signalizovala kopii aplikace každému uživateli, aby kontaktovala centrální umístění a synchronizovala dostupné změny. Pomocí nezpracovaných oznámení může aplikace a její cloudová služba ušetřit režii při údržbě trvalých připojení po celou dobu, kdy je dokument otevřený.
Jak fungují nezpracovaná oznámení
Všechna surová oznámení jsou push oznámení. Nastavení potřebné k odesílání a přijímání nabízených oznámení se proto vztahuje také na nezpracovaná oznámení:
- Abyste mohli odesílat nezpracovaná oznámení, musíte mít platný kanál WNS. Další informace o získání kanálu nabízených oznámení najdete v tématu Jak požádat, vytvořit a uložit kanál oznámení.
- Do manifestu aplikace musíte zahrnout funkci internetu. V editoru manifestu sady Microsoft Visual Studio najdete tuto možnost na kartě Schopnosti jako Internet (Klient). Další informace najdete v tématu Možnosti.
Text oznámení je ve formátu definovaném aplikacím. Klient obdrží data jako řetězec ukončený hodnotou null (HSTRING), který musí být srozumitelný pouze aplikací.
Pokud je klient offline, služba WNS uloží nezpracovaná oznámení do mezipaměti pouze v případě, že je v oznámení zahrnutá hlavička X-WNS-Cache-Policy . Jakmile se ale zařízení vrátí do online režimu, do mezipaměti se uloží jenom jedno nezpracované oznámení.
U klienta existují jenom tři možné cesty pro surové oznámení: budou doručena do vaší spuštěné aplikace prostřednictvím události doručení oznámení, odeslána na úlohu na pozadí nebo zrušena. Proto pokud je klient offline a služba WNS se pokusí doručit nezpracované oznámení, oznámení se zahodí.
Vytvoření nezpracovaného oznámení
Odeslání surového oznámení se podobá odeslání upozornění dlaždice, toastu nebo odznáčku s těmito rozdíly:
- Hlavička HTTP Content-Type musí být nastavená na application/octet-stream.
- Hlavička X-WNS-Type musí být nastavena na "wns/raw".
- Tělo oznámení může obsahovat libovolný řetězcový obsah menší než 5 kB, ale nesmí být prázdný řetězec.
Nezpracovaná oznámení jsou určená k použití jako krátké zprávy, které aktivují aplikaci k provedení akce, například k přímému kontaktování služby, aby synchronizovala větší množství dat nebo aby na základě obsahu oznámení udělala změnu místního stavu. Mějte na paměti, že doručení push oznámení WNS není zaručeno, takže vaše aplikace a cloudová služba musí brát v úvahu možnost, že se surová notifikace nemusí dostat ke klientu, například když je klient offline.
Další informace o odesílání nabízených oznámení najdete v tématu Rychlý start: Odesílání nabízených oznámení.
Příjem nezpracovaného oznámení
Existují dvě cesty, kterými může vaše aplikace přijímat nezpracovaná oznámení:
- Prostřednictvím událostí doručení oznámení, když je vaše aplikace spuštěná.
- Prostřednictvím úloh na pozadí aktivovaných surovým oznámením, pokud je ve vaší aplikaci povoleno spouštět úlohy na pozadí.
Aplikace může přijímat nezpracovaná oznámení pomocí obou mechanismů. Pokud aplikace implementuje obslužnou rutinu události doručení oznámení i úlohy na pozadí aktivované nezpracovanými oznámeními, bude mít událost doručení oznámení prioritu při spuštění aplikace.
- Pokud je aplikace spuštěná, událost doručení oznámení bude mít přednost před úlohou na pozadí a aplikace bude mít první příležitost k zpracování oznámení.
- Obslužná rutina události doručení oznámení může určit, nastavením vlastnosti události PushNotificationReceivedEventArgs.Cancel na true, že surové oznámení by nemělo být předáno úloze na pozadí po ukončení obslužné rutiny. Pokud je vlastnost Cancel nastavena na false nebo není nastavena (výchozí hodnota je false), nezpracované oznámení aktivuje úlohu na pozadí po dokončení obslužné rutiny události doručení oznámení.
Události doručení oznámení
Aplikace může použít událost doručování oznámení (PushNotificationReceived) k přijímání nezpracovaných oznámení, když se aplikace používá. Když cloudová služba odešle nezpracované oznámení, může ji spuštěná aplikace přijmout zpracováním události doručení oznámení na identifikátoru URI kanálu.
Pokud vaše aplikace není spuštěná a nepoužívá úlohy na pozadí), všechny nezpracované oznámení odeslané do této aplikace se při přijetí zahodí službou WNS. Abyste se vyhnuli plýtvání prostředků cloudové služby, měli byste zvážit implementaci logiky ve službě, abyste mohli sledovat, jestli je aplikace aktivní. Existují dva zdroje těchto informací: aplikace může explicitně informovat službu, že je připravena začít přijímat oznámení, a služba WNS může službu informovat, kdy se má zastavit.
Aplikace upozorní cloudovou službu: Aplikace může kontaktovat svou službu, aby věděla, že aplikace běží v popředí. Nevýhodou tohoto přístupu je, že aplikace může velmi často kontaktovat vaši službu. Má ale výhodu, že služba bude vždy vědět, kdy je aplikace připravená přijímat příchozí nezpracovaná oznámení. Další výhodou je, že když aplikace kontaktuje svou službu, služba pak ví, že odesílá nezpracovaná oznámení do konkrétní instance této aplikace místo vysílání.
Cloudová služba reaguje na odpovědní zprávy WNS: Služba App Service může použít X-WNS-NotificationStatus a X-WNS-DeviceConnectionStatus informace, které WNS vrací, k určení, kdy se mají do aplikace přestat odesílat nezpracovaná oznámení. Když služba odešle oznámení do kanálu jako HTTP POST, může v odpovědi obdržet jednu z těchto zpráv:
- X-WNS-NotificationStatus: vyřazeno: To znamená, že klient oznámení nepřijal. Je to bezpečný předpoklad, že vyřazená odpověď je způsobená tím, že vaše aplikace už není v popředí na zařízení uživatele.
- X-WNS-DeviceConnectionStatus: odpojeno nebo X-WNS-DeviceConnectionStatus: dočasně připojeno: To znamená, že Windows klient už nemá připojení k WNS. Upozorňujeme, že pokud chcete tuto zprávu obdržet ze služby WNS, musíte ji požádat nastavením hlavičky X-WNS-RequestForStatus v protokolu HTTP POST oznámení.
Cloudová služba vaší aplikace může pomocí informací v těchto stavových zprávách ukončit pokusy o komunikaci prostřednictvím nezpracovaných oznámení. Jakmile aplikace kontaktuje službu, může služba pokračovat v odesílání nezpracovaných oznámení, když se aplikace přepne zpět do popředí.
Mějte na paměti, že byste neměli spoléhat na X-WNS-NotificationStatus , abyste zjistili, jestli bylo oznámení úspěšně doručeno klientovi.
Další informace najdete v tématu žádost o službu push oznámení a hlavičky odpovědí
Úlohy na pozadí aktivované nezpracovanými oznámeními
Important
Před použitím úloh na pozadí pro surová oznámení musí být aplikaci udělen přístup na pozadí prostřednictvím BackgroundExecutionManager.RequestAccessAsync.
Vaše úloha na pozadí musí být registrována v PushNotificationTrigger. Pokud není zaregistrovaný, úloha se při přijetí nezpracovaného oznámení nespustí.
Úloha na pozadí aktivovaná nezpracovaným oznámením umožňuje cloudové službě vaší aplikace kontaktovat vaši aplikaci, i když aplikace není spuštěná (i když ji může aktivovat ke spuštění). K tomu dochází, aniž by aplikace musela udržovat nepřetržité připojení. Nezpracovaná oznámení jsou jediným typem oznámení, který může aktivovat úlohy na pozadí. I když nabízená oznámení, dlaždice a oznámení odznáčků nemohou aktivovat úlohy na pozadí, úlohy na pozadí aktivované surovými oznámeními mohou ale aktualizovat dlaždice a vyvolat oznámení prostřednictvím místních volání rozhraní API.
Jako obrázek toho, jak fungují úlohy na pozadí aktivované nezpracovanými oznámeními, zvažme aplikaci, která se používá ke čtení elektronických knih. Nejprve si uživatel koupí knihu online, pravděpodobně na jiném zařízení. V reakci na to může cloudová služba aplikace odeslat nezpracované oznámení na každé zařízení uživatele s datovou částí, která uvádí, že kniha byla zakoupena a aplikace by si ji měla stáhnout. Aplikace pak přímo kontaktuje cloudovou službu aplikace, aby zahájila stahování nové knihy na pozadí, aby se později, když uživatel aplikaci spustí, už je kniha tam a připravená ke čtení.
Pokud chcete k aktivaci úlohy na pozadí použít nezpracované oznámení, musí vaše aplikace:
- Pomocí backgroundExecutionManager.RequestAccessAsync požádejte o oprávnění ke spouštění úloh na pozadí (které může uživatel kdykoli odvolat).
- Implementujte úlohu na pozadí. Další informace najdete v tématu Podpora aplikace pomocí úloh na pozadí
Poté se úloha na pozadí spustí v reakci na PushNotificationTrigger, při každém přijetí surového oznámení pro vaši aplikaci. Vaše úloha na pozadí interpretuje datovou část specifickou pro aplikaci v surových oznámeních a reaguje na ni.
Pro každou aplikaci může běžet vždy jenom jedna úloha na pozadí. Pokud je úloha na pozadí aktivována pro aplikaci, pro kterou je úloha na pozadí již spuštěná, musí se před spuštěním nové úlohy na pozadí dokončit první úloha na pozadí.
Další prostředky
Tento článek o UWP popisuje starší chování úloh na pozadí PushNotificationTrigger. Aktuální registraci kanálu Windows App SDK a aktivaci syrových nabízených oznámení na popředí nebo na pozadí prostřednictvím PushNotificationManagernajdete v ukázce nabízených oznámení pro Windows App SDK. Aktuální ukázka nepoužívá model registrace úlohy na pozadí UPW PushNotificationTrigger .
Příbuzná témata
- Rychlý start: Vytvoření a registrace úlohy na pozadí nezpracovaného oznámení
- Rychlý start: Zachycení push oznámení pro běžící aplikace
- RawNotification
- BackgroundExecutionManager.RequestAccessAsync
Windows developer