Šablony Notification Hubs

Šablony umožňují klientské aplikaci určit přesný formát oznámení, která chce přijímat. Pomocí šablon může aplikace dosáhnout několika různých výhod, včetně následujících:

  • Back-end nezávislá na platformě
  • Přizpůsobená oznámení
  • Nezávislost na verzi klienta
  • Snadná lokalizace

Tato část obsahuje dva podrobné příklady toho, jak pomocí šablon odesílat oznámení nezávislá na platformě, která cílí na všechna vaše zařízení na různých platformách, a přizpůsobit si vysílaná oznámení pro každé zařízení.

Použití šablon pro různé platformy

Standardním způsobem odesílání nabízených oznámení je odeslání konkrétní datové části do služeb oznámení platformy (WNS, APNS) pro každé oznámení. Pokud například chcete odeslat upozornění do služby APNS, datová část je objekt JSON v následujícím tvaru:

{"aps": {"alert" : "Hello!" }}

Chcete-li odeslat podobnou informační zprávu v aplikaci pro Windows Store, datová část XML je následující:

<toast>
  <visual>
    <binding template=\"ToastText01\">
      <text id=\"1\">Hello!</text>
    </binding>
  </visual>
</toast>

Podobné datové části můžete vytvořit pro platformy MPNS (Windows Phone) a FCM (Android).

Tento požadavek vynutí, aby back-end aplikace pro každou platformu vytvářel různé datové části. Díky tomu je back-end zodpovědný za část prezentační vrstvy aplikace. Některé problémy zahrnují lokalizaci a grafická rozložení (zejména pro aplikace pro Windows Store, které obsahují oznámení pro různé typy dlaždic).

Funkce šablony Notification Hubs umožňuje klientské aplikaci vytvářet speciální registrace označované jako registrace šablon, které kromě sady značek zahrnují i šablonu. Funkce šablony Notification Hubs umožňuje klientské aplikaci přidružit zařízení k šablonám bez ohledu na to, jestli pracujete s instalacemi (preferovanými) nebo registracemi. Vzhledem k předchozím příkladům datové části je jedinou informací nezávislou na platformě skutečná zpráva s upozorněním (Dobrý den!). Šablona je sada pokynů pro centrum oznámení, jak formátovat zprávu nezávislou na platformě pro registraci konkrétní klientské aplikace. V předchozím příkladu je zprávou nezávislou na platformě jedna vlastnost: message = Hello!.

Následující obrázek znázorňuje tento proces:

Diagram znázorňující proces použití šablon pro různé platformy

Šablona pro registraci klientské aplikace pro iOS je následující:

{"aps": {"alert": "$(message)"}}

Odpovídající šablona pro klientskou aplikaci pro Windows Store je:

<toast>
    <visual>
        <binding template=\"ToastText01\">
            <text id=\"1\">$(message)</text>
        </binding>
    </visual>
</toast>

Všimněte si, že výraz $(message)je nahrazen skutečnou zprávou . Tento výraz dává centru oznámení pokyn, aby při každém odeslání zprávy do této konkrétní registrace vytvořilo zprávu, která ji následuje a vloží společnou hodnotu.

Pokud pracujete s instalačním modelem, klíč "templates" instalace obsahuje JSON více šablon. Pokud pracujete s registračním modelem, klientská aplikace může vytvořit více registrací, aby bylo možné použít více šablon; například šablonu pro výstrahy a šablonu pro aktualizace dlaždic. Klientské aplikace mohou také kombinovat nativní registrace (registrace bez šablony) a registrace šablon.

Centrum oznámení odešle pro každou šablonu jedno oznámení bez ohledu na to, jestli patří do stejné klientské aplikace. Toto chování se dá použít k převodu oznámení nezávislých na platformě na více oznámení. Například stejnou zprávu nezávislou na platformě do centra oznámení můžete bez problémů přeložit v informační zprávě a aktualizaci dlaždice, aniž by o tom musel vědět back-end. Některé platformy (například iOS) můžou do stejného zařízení sbalit více oznámení, pokud se odesílají během krátké doby.

Použití šablon pro přizpůsobení

Další výhodou použití šablon je možnost používat Notification Hubs k provedení přizpůsobení oznámení podle registrace. Představte si například aplikaci pro počasí, která zobrazuje dlaždici s povětrnostními podmínkami na určitém místě. Uživatel si může vybrat mezi stupněm Celsia nebo stupněm Fahrenheita a předpovědí na jeden nebo pět dní. Pomocí šablon může každá instalace klientské aplikace zaregistrovat požadovaný formát (1 den Celsia, 1 den Fahrenheita, 5 dní Celsia, 5 dní Celsia, 5 dní Fahrenheita) a nechat back-end odeslat jednu zprávu, která obsahuje všechny informace potřebné k vyplnění těchto šablon (například pětidenní předpověď se stupněm Celsia a Fahrenheita).

Šablona pro denní předpověď teplot ve stupních Celsia je následující:

<tile>
  <visual>
    <binding template="TileWideSmallImageAndText04">
      <image id="1" src="$(day1_image)" alt="alt text"/>
      <text id="1">Seattle, WA</text>
      <text id="2">$(day1_tempC)</text>
    </binding>  
  </visual>
</tile>

Zpráva odeslaná do centra oznámení obsahuje všechny následující vlastnosti:

day1_image day2_image day3_image day4_image day5_image
day1_tempC day2_tempC day3_tempC day4_tempC day5_tempC
day1_tempF day2_tempF day3_tempF day4_tempF day5_tempF

Při použití tohoto vzoru back-end odešle pouze jednu zprávu, aniž by musel ukládat konkrétní možnosti přizpůsobení pro uživatele aplikace. Následující obrázek znázorňuje tento scénář:

Diagram znázorňující, jak back-end odesílá na každou platformu jenom jednu zprávu

Postup registrace šablon

Pokud se chcete zaregistrovat pomocí šablon pomocí instalačního modelu (preferovaný) nebo registračního modelu, přečtěte si téma Správa registrací.

Jazyk výrazů šablon

Šablony jsou omezené na formáty dokumentů XML nebo JSON. Také můžete umístit výrazy pouze na konkrétní místa; Například atributy uzlu nebo hodnoty pro XML, hodnoty vlastností řetězců pro JSON.

Následující tabulka ukazuje jazyk povolený v šablonách:

Výraz Popis
$(prop) Odkaz na vlastnost události s daným názvem. V názvech vlastností se nerozlišují velká a malá písmena. Tento výraz se přeloží na textovou hodnotu vlastnosti nebo do prázdného řetězce, pokud vlastnost neexistuje.
$(prop, n) Jak je uvedeno výše, ale text je explicitně oříznut na n znaků, například $(title, 20) připne obsah vlastnosti title na 20 znaků.
. (prop, n) Jak je uvedeno výše, ale text má příponu se třemi tečkami, protože je oříznutý. Celková velikost oříznutého řetězce a přípony nepřesahuje n znaků. (title, 20) se vstupní vlastností "This is the title line" (toto je řádek nadpisu) výsledkem bude This is the title...
%(prop) Podobá se $(name) s tím rozdílem, že výstup je kódovaný URI.
#(prop) Používá se v šablonách JSON (například pro šablony pro iOS a Android).

Tato funkce funguje úplně stejně jako dříve zadaná $(prop), s výjimkou případů, kdy se používá v šablonách JSON (například v šablonách Apple). V tomto případě platí, že pokud tato funkce není uzavřená mezi {','}" (například 'myJsonProperty': '#(name)') a vyhodnotí se jako číslo ve formátu JavaScriptu, například regexp: (0|( [1-9] [0-9]*))(.[ 0-9]+)? (e| E)(+|-)? [0-9]+)?, výstupní JSON je číslo.

Například odznáček: #(name) se změní na odznáček: 40 (a ne 40).
'text' nebo "text" Literál. Literály obsahují libovolný text uzavřený v jednoduchých nebo dvojitých uvozovkách.
výraz1 + výraz2 Operátor zřetězení spojující dva výrazy do jednoho řetězce.

Výrazy můžou mít libovolnou z předchozích forem.

Při použití zřetězení musí být celý výraz ohraničený znakem {}. Například, {$(prop) + ‘ - ’ + $(prop2)}.

Například následující šablona není platná šablona XML:

<tile>
  <visual>
    <binding $(property)>
      <text id="1">Seattle, WA</text>
    </binding>  
  </visual>
</tile>

Jak bylo vysvětleno dříve, při použití zřetězení musí být výrazy zabalené do složených závorek. Příklad:

<tile>
  <visual>
    <binding template="ToastText01">
      <text id="1">{'Hi, ' + $(name)}</text>
    </binding>  
  </visual>
</tile>

Další kroky

Informace o službě Azure Notification Hubs