Sdílet prostřednictvím


Správa registrací

Toto téma vysvětluje, jak zaregistrovat zařízení do center oznámení, aby bylo možné přijímat nabízená oznámení. Toto téma popisuje registrace na vysoké úrovni a pak zavádí dva hlavní vzory pro registraci zařízení: registraci ze zařízení přímo do centra oznámení a registraci prostřednictvím back-endu aplikace.

Co je registrace zařízení

Registrace je dílčí entita centra oznámení a přidruží popisovač PNS zařízení (popisovač služby oznámení platformy, například ChannelURI, token zařízení, GCM registrationId) se značkami a případně šablonou. Značky se používají ke směrování oznámení do správné sady popisovačů zařízení. Další informace najdete v tématu Směrování a výrazy značek. Šablony se používají k implementaci transformace registrace. Další informace najdete v tématu Šablony.

Je důležité si uvědomit, že registrace jsou přechodné. Podobně jako u popisovačů PNS, které obsahují, vyprší platnost registrací. Můžete nastavit dobu, která bude aktivní pro registraci v Centru oznámení, až do 90 dnů. Tento limit znamená, že se musí pravidelně aktualizovat a také že by neměly být jediným úložištěm důležitých informací. Toto automatické vypršení platnosti také zjednodušuje vyčištění při odinstalaci mobilní aplikace.

Registrace musí obsahovat nejnovější popisovač PNS pro každé zařízení nebo kanál. Protože obslužné rutiny PNS lze získat pouze v klientské aplikaci na zařízení, je jedním ze způsobů, jak spravovat registrace přímo v této klientské aplikaci. Naopak aspekty zabezpečení a obchodní logika související se značkami můžou vyžadovat správu registrace v back-endu aplikace. Následující část popisuje tyto dva přístupy.

Správa registrace ze zařízení

Při správě registrací z klientských aplikací zodpovídá back-end pouze za odesílání oznámení. Klientské aplikace udržují zabezpečení PNS v aktualizovaném stavu a registrují se ke značkám. Tento vzor znázorňuje následující obrázek.

Registration Management

Zařízení nejprve načte popisovač PNS z PNS a pak se zaregistruje přímo v centru oznámení. Po úspěšném dokončení registrace může back-end aplikace odeslat oznámení, které cílí na tuto registraci. Další informace o odesílání oznámení najdete v tématu Směrování a výrazy značek.

Všimněte si, že v tomto případě použijete pouze práva naslouchání pro přístup k vašim centrem oznámení ze zařízení. Další informace naleznete v tématu Zabezpečení.

Následující kód zaregistruje vaše zařízení pomocí odkazů na rozhraní API Notification Hubs:

await hub.RegisterNativeAsync(channelUri, tags);
[hub registerNativeWithDeviceToken:deviceToken tags:nil completion:^(NSError* error) {
    if (error != nil) {
        NSLog(@"Error registering for notifications: %@", error);
    }
}];

hub.register(regid, tags);

Tyto metody vytvářejí nebo aktualizují registraci zařízení, na kterém jsou volána. To znamená, že pokud chcete aktualizovat popisovač nebo značky, musíte přepsat celou registraci. Mějte na paměti, že registrace jsou přechodné, takže byste měli vždy mít spolehlivé úložiště (místní úložiště na zařízení nebo v back-endu aplikace) s aktuálními značkami, které konkrétní zařízení potřebuje. Podrobnější příklady aktualizace registrací najdete v kurzu Novinek .

K registraci ze zařízení můžete použít také rozhraní REST API. Další informace naleznete v tématu Použití rozhraní REST Notification Hubs.

V následujících kurzech scénářů najdete podrobné pokyny k registraci z klienta:

Šablony

Pokud chcete použít šablony, každá registrace představuje jednotlivé šablony. To znamená, že pokud vaše zařízení používá dvě šablony, musíte každou šablonu zaregistrovat nezávisle na svém vlastním popisovači PNS a sadě značek.

Pro nativní registrace (tj. bez šablony) metody registrace šablon vytvářejí nebo aktualizují existující registrace. Pokud chcete cílit na různé šablony, zadejte při registraci název šablony. Pokud chcete zachovat více šablon pro stejné zařízení, zadáte různé názvy.

Důležité

Při použití šablon nemusíte svoje zařízení registrovat, jak je znázorněno v předchozí části. Tato registrace se používá jenom v případě, že odesíláte nativní oznámení (oznámení odeslaná ve formátu specifickém pro platformu).

Následující kód zaregistruje vaše zařízení pomocí odkazů na rozhraní API Notification Hubs:

await hub.RegisterTemplateAsync(channelUri, template, templateName, tags);
[hub registerTemplateWithDeviceToken:deviceToken name:templateName jsonBodyTemplate: template expiryTemplate:nil tags:nil completion:^(NSError* error) {
    if (error != nil) {
        NSLog(@"Error registering for notifications: %@", error);
    }
}];

hub.registerTemplate(regId, templateName, template, tags);

Všimněte si, že každé volání registrace poskytuje kromě popisovače PNS a volitelné sady značek šablonu pro tělo oznámení a název šablony. Každá platforma navíc může mít další vlastnosti, které jsou součástí šablony. V případě Windows Storu (pomocí WNS) a Windows Phone 8 (pomocí MPNS) může být součástí šablony další sada hlaviček. V případě apNs můžete vlastnost vypršení platnosti nastavit na konstantu nebo na výraz šablony.

Pokyny k úpravě těchto polí šablon najdete v tématu Reference k rozhraní API nebo rozhraní REST API služby Notification Hubs.

Sekundární dlaždice pro aplikace Windows Store

U klientských aplikací Windows Store je odesílání oznámení na sekundární dlaždice stejné jako odesílání do primární dlaždice. Podporují se nativní registrace i registrace šablon. Jediným rozdílem je, že sekundární dlaždice mají jiný identifikátor ChannelUri, který sada SDK ve vaší klientské aplikaci transparentně zpracovává.

Na vysoké úrovni všechny informace uvedené v předchozích částech pracují se sekundárními dlaždicemi voláním odpovídajících metod na objektech vystavených ve vlastnosti slovníku Microsoft.WindowsAzure.Microsoft Zasílání zpráv. NotificationHub.SecondaryTiles. Příklad:

await hub.SecondaryTiles["myTileId"].RegisterNativeAsync(new string[] {"Yankees"});
await hub.SecondaryTiles["myTileId"].RegisterTemplateAsync(buildToastTemplate(), "toastTemplate", new string[] {"RedSox"});

Slovník SecondaryTiles používá stejné TileId, který se používá k vytvoření SecondaryTiles objektu v aplikaci Windows Store.

Stejně jako u primárního identifikátoru ChannelUri se identifikátory ChannelUri sekundárních dlaždic můžou kdykoli změnit. Aby se registrace klientských aplikací v centru oznámení aktualizovala, musí je zařízení aktualizovat pomocí aktuálních identifikátorů ChannelUri sekundárních dlaždic.

Poznámka

Sekundární dlaždice můžete odstranit, když je aplikace neaktivní. Odpovídající registrace nebudou mít za následek žádná oznámení a centra oznámení automaticky odstraní.

Nevýhody registrace ze zařízení

Registrace ze zařízení je nejjednodušší metoda, ale má určité nevýhody.

První nevýhodou je, že klientská aplikace může aktualizovat své značky pouze v době, kdy je aplikace aktivní. Pokud má například uživatel dvě zařízení, která registrují značky související se sportovními týmy, když se první zařízení zaregistruje na další značku (například Seahawks), druhé zařízení nebude dostávat oznámení o Seahawks, dokud se aplikace na druhém zařízení nespustí podruhé. Obecně platí, že pokud jsou značky ovlivněny více zařízeními, správa značek z back-endu je žádoucí možností.

Druhou nevýhodou správy registrace z klientské aplikace je, že protože aplikace mohou být hacknuty, zabezpečení registrace na konkrétní značky vyžaduje zvláštní péči, jak je vysvětleno v části "Zabezpečení na úrovni značek".

Správa registrace z back-endu aplikace

Správa registrací z back-endu vyžaduje zápis dalšího kódu. Aplikace ze zařízení musí poskytnout aktualizovaný popisovač PNS back-endu při každém spuštění aplikace (spolu se značkami a šablonami) a back-end musí tento popisovač aktualizovat na Service Bus. Tento návrh znázorňuje následující obrázek.

Registration Management

Výhodou správy registrací z back-endu je možnost upravit značky na registrace, i když je odpovídající aplikace na zařízení neaktivní a ověřit klientskou aplikaci před přidáním značky do registrace.

Z back-endu aplikace můžete provádět základní operace CRUDS při registraci. Příklad:

var hub = NotificationHubClient.CreateClientFromConnectionString("{connectionString}", "hubName");
            
// create a registration description object of the correct type, e.g.
var reg = new WindowsRegistrationDescription(channelUri, tags);

// Create
await hub.CreateRegistrationAsync(reg);

// Get by id
var r = await hub.GetRegistrationAsync<RegistrationDescription>("id");

// update
r.Tags.Add("myTag");

// update on hub
await hub.UpdateRegistrationAsync(r);

// delete
await hub.DeleteRegistrationAsync(r);

Můžete také použít Node nebo rozhraní REST API.

Důležité

Back-end musí zpracovávat souběžnost mezi aktualizacemi registrace. Service Bus nabízí optimistickou kontrolu souběžnosti pro správu registrace. Na úrovni HTTP se to implementuje s použitím značky ETag při operacích správy registrace. Tato funkce je transparentně používána sadami MICROSOFT SDK, která vyvolá výjimku, pokud je aktualizace odmítnuta z důvodů souběžnosti. Back-end aplikace zodpovídá za zpracování těchto výjimek a v případě potřeby zkusí aktualizaci zopakovat.

Další materiály

V následujících kurzech najdete podrobné pokyny k registraci z back-endu aplikace: