Szablony
Szablony umożliwiają aplikacji klienckiej określenie dokładnego formatu powiadomień, które mają być odbierane. Korzystając z szablonów, aplikacja może korzystać z kilku różnych korzyści, w tym następujących:
Niezależne od platformy zaplecze.
Spersonalizowane powiadomienia.
Niezależność wersji klienta.
Łatwa lokalizacja.
Ta sekcja zawiera dwa szczegółowe przykłady używania szablonów do wysyłania powiadomień niezależnej od platformy przeznaczonych dla wszystkich urządzeń na różnych platformach oraz personalizowania powiadomień rozgłaszanych na poszczególnych urządzeniach.
Używanie szablonów międzyplatformowych
Standardowym sposobem wysyłania powiadomień wypychanych jest wysyłanie każdego powiadomienia, które ma zostać wysłane, określony ładunek do usług powiadomień platformy (WNS, APNS). Na przykład aby wysłać alert do usługi APNS, ładunek jest obiektem Json następującego formularza:
{“aps”: {“alert” : “Hello!” }}
Aby wysłać podobny komunikat wyskakujące w aplikacji Windows Store, ładunek jest następujący:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">Hello!</text>
</binding>
</visual>
</toast>
Podobne ładunki można tworzyć dla platform MPNS (Windows Phone) i GCM (Android).
To wymaganie wymusza na zapleczu aplikacji tworzenie różnych ładunków dla każdej platformy i efektywnie sprawia, że zaplecze jest odpowiedzialne za część warstwy prezentacji aplikacji. Niektóre problemy obejmują lokalizację i układy graficzne (zwłaszcza w przypadku aplikacji ze sklepu Windows, które zawierają powiadomienia dla różnych typów kafelków).
Funkcja szablonu usługi Notification Hubs umożliwia aplikacji klienckiej tworzenie specjalnych rejestracji, nazywanych rejestracjami szablonów, które obejmują oprócz zestawu tagów szablonu. Biorąc pod uwagę powyższe przykłady ładunku, jedynymi informacjami niezależnymi od platformy jest rzeczywisty komunikat alertu (Hello!). Szablon to zestaw instrukcji dla centrum powiadomień na temat formatowania komunikatu niezależnego od platformy na potrzeby rejestracji tej konkretnej aplikacji klienckiej. W poprzednim przykładzie niezależny komunikat platformy jest pojedynczą właściwością: message = Hello!.
Na poniższej ilustracji przedstawiono powyższy proces:
Szablon rejestracji aplikacji klienckiej iOS jest następujący:
{“aps”:{“alert”:”$(message)”}}
Analogiczny szablon aplikacji klienckiej Windows Store to:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">$(message)</text>
</binding>
</visual>
</toast>
Należy pamiętać, że rzeczywisty komunikat jest zastępowany wyrażeniem $(message)
. To wyrażenie instruuje centrum powiadomień za każdym razem, gdy wysyła komunikat do tej konkretnej rejestracji, aby utworzyć komunikat, który jest zgodny z tym szablonem.
Aplikacje klienckie mogą tworzyć wiele rejestracji w celu korzystania z wielu szablonów; na przykład szablon komunikatów alertów i szablon aktualizacji kafelków. Aplikacje klienckie mogą również mieszać rejestracje natywne (rejestracje bez szablonu) i rejestracje szablonów.
Uwaga
Usługa Notification Hub wysyła jedno powiadomienie dla każdej rejestracji bez uwzględniania, czy należą one do tej samej aplikacji klienckiej. To zachowanie może służyć do tłumaczenia powiadomień niezależnych od platformy na więcej powiadomień. Na przykład ta sama niezależna od platformy wiadomość do centrum powiadomień może zostać bezproblemowo przetłumaczona w wyskakujących alertach i aktualizacji kafelka bez konieczności informowania o tym zaplecza. Należy pamiętać, że niektóre platformy (na przykład iOS) mogą zwinąć wiele powiadomień do tego samego urządzenia, jeśli zostaną wysłane w krótkim czasie.
Używanie szablonów do personalizacji
Kolejną zaletą korzystania z szablonów jest możliwość używania usługi Notification Hubs do przeprowadzania personalizacji powiadomień na rejestrację. Rozważmy na przykład aplikację pogodową, która wyświetla kafelek z warunkami pogodowymi w określonej lokalizacji. Użytkownik może wybrać stopnie Celsjusza lub Fahrenheita oraz pojedynczą lub pięciodniową prognozę. Przy użyciu szablonów każda instalacja aplikacji klienckiej może zarejestrować się w wymaganym formacie (1-dniowy stopni Celsjusza, 1-dniowy Fahrenheit, 5-dniowy stopni Celsjusza, 5-dniowy fahrenheit) i wysłać do zaplecza pojedynczy komunikat zawierający wszystkie informacje wymagane do wypełnienia tych szablonów (na przykład pięciodniową prognozę ze stopniami Celsjusza i Fahrenheit).
Szablon prognozy jednorazowej z temperaturami w stopniach Celsjusza jest następujący:
<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>
Komunikat wysyłany do centrum powiadomień zawiera następujące właściwości:
Day1_image
Day1_tempC
Day1_tempF
Day2_image
Day2_tempC
…
Korzystając z tego wzorca, zaplecze wysyła tylko jeden komunikat bez konieczności przechowywania określonych opcji personalizacji dla użytkowników aplikacji. Na poniższej ilustracji przedstawiono ten scenariusz:
Jak zarejestrować się w szablonach
Aby uzyskać więcej informacji na temat rejestrowania szablonów, zobacz Zarządzanie rejestracją.
Język wyrażeń szablonu
Szablony nie mogą zawierać ciągów. Są one ograniczone do dokumentów XML lub JSON. Ponadto wyrażenia można umieszczać tylko w określonych miejscach; na przykład atrybuty węzła lub wartości xml, wartości właściwości ciągu dla formatu JSON.
Na przykład następujący szablon nie jest prawidłowym szablonem XML:
<tile>
<visual>
<binding $(property)>
<text id="1">Seattle, WA</text>
</binding>
</visual>
</tile>
Jak wyjaśniono w poniższej sekcji, w przypadku używania łączenia wyrażenia muszą być opakowane w nawiasy klamrowe. Przykład:
<tile>
<visual>
<binding template="ToastText01">
<text id="1">{'Hi, ' + $(name)}</text>
</binding>
</visual>
</tile>
Analogiczny kod w formacie JSON jest wyświetlany w następujący sposób:
{"aps":{"alert":"{'Hi, ' + $(name)}"}}
W poniższej tabeli przedstawiono język dozwolony w szablonach:
Wyrażenie | Opis |
---|---|
|
Odwołanie do właściwości zdarzenia o podanej nazwie. W nazwach właściwości nie jest uwzględniana wielkość liter. To wyrażenie jest rozpoznawane jako wartość tekstowa właściwości lub pusty ciąg, jeśli właściwość nie jest obecna. |
|
Jak powyżej, ale tekst jest jawnie przycięty w n znaków, na przykład |
|
Jak powyżej, ale tekst jest sufiksowany z trzema kropkami, ponieważ jest przycięty. Całkowity rozmiar przyciętego ciągu i sufiks nie przekracza n znaków.
|
|
Podobnie jak w przypadku |
#(prop) |
Używane w szablonach JSON (na przykład w przypadku szablonów iOS i Android). Ta funkcja działa dokładnie tak samo jak Na przykład |
|
Literał. Literały zawierają dowolny tekst ujęty w pojedynczy lub podwójny cudzysłów. |
|
Operator łączenia łączący dwa wyrażenia w jeden ciąg. Wyrażenia mogą być dowolnym z powyższych formularzy. W przypadku używania łączenia całe wyrażenie musi być otoczone elementem |