Mallar
Mallar gör det möjligt för ett klientprogram att ange det exakta formatet för de meddelanden som det vill ta emot. Med hjälp av mallar kan en app få flera olika fördelar, bland annat följande:
En plattformsoberoende serverdel.
Anpassade meddelanden.
Oberoende av klientversion.
Enkel lokalisering.
Det här avsnittet innehåller två djupgående exempel på hur du använder mallar för att skicka plattformsoberoende meddelanden som riktar sig till alla dina enheter på olika plattformar och för att anpassa sändningsmeddelanden till varje enhet.
Använda mallar på flera plattformar
Standardsättet för att skicka push-meddelanden är att för varje meddelande som ska skickas skickas en specifik nyttolast till plattformsaviseringstjänster (WNS, APNS). Om du till exempel vill skicka en avisering till APNS är nyttolasten ett Json-objekt i följande formulär:
{“aps”: {“alert” : “Hello!” }}
Om du vill skicka ett liknande popup-meddelande i ett Windows Store-program är nyttolasten följande:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">Hello!</text>
</binding>
</visual>
</toast>
Du kan skapa liknande nyttolaster för MPNS-plattformar (Windows Phone) och GCM (Android).
Det här kravet tvingar appens serverdel att producera olika nyttolaster för varje plattform och gör effektivt serverdelen ansvarig för en del av appens presentationslager. Vissa problem omfattar lokalisering och grafiska layouter (särskilt för Windows Store-appar som innehåller meddelanden för olika typer av paneler).
Med mallfunktionen Notification Hubs kan en klientapp skapa särskilda registreringar, som kallas mallregistreringar, som förutom uppsättningen taggar inkluderar en mall. I föregående nyttolastexempel är den enda plattformsoberoende informationen det faktiska aviseringsmeddelandet (Hello!). En mall är en uppsättning instruktioner för Notification Hub om hur du formaterar ett plattformsoberoende meddelande för registrering av den specifika klientappen. I föregående exempel är plattformsoberoende meddelande en enskild egenskap: message = Hello!.
Följande bild illustrerar ovanstående process:
Mallen för en iOS klientappregistrering är följande:
{“aps”:{“alert”:”$(message)”}}
Den analoga mallen för en Windows Store-klientapp är:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">$(message)</text>
</binding>
</visual>
</toast>
Observera att det faktiska meddelandet ersätts med uttrycket $(message)
. Det här uttrycket instruerar Notification Hub att när det skickar ett meddelande till den här registreringen skapa ett meddelande som följer den här mallen.
Klientprogram kan skapa flera registreringar för att kunna använda flera mallar. till exempel en mall för aviseringsmeddelanden och en mall för paneluppdateringar. Klientprogram kan också blanda interna registreringar (registreringar utan mall) och mallregistreringar.
Anteckning
Notification Hub skickar ett meddelande för varje registrering utan att överväga om de tillhör samma klientapp. Det här beteendet kan användas för att översätta plattformsoberoende meddelanden till fler meddelanden. Till exempel kan samma plattformsoberoende meddelande till meddelandehubben sömlöst översättas i en popup-avisering och en paneluppdatering, utan att serverdelen behöver vara medveten om det. Observera att vissa plattformar (till exempel iOS) kan minimera flera meddelanden till samma enhet om de skickas på kort tid.
Använda mallar för anpassning
En annan fördel med att använda mallar är möjligheten att använda Notification Hubs för att utföra personanpassning per registrering av meddelanden. Tänk dig till exempel en väderapp som visar en panel med väderförhållandena på en viss plats. En användare kan välja mellan graderna Celsius eller Fahrenheit och en prognos på en eller fem dagar. Med hjälp av mallar kan varje klientappsinstallation registrera sig för det format som krävs (1 dag Celsius, 1 dag Fahrenheit, 5 dagar Celsius, 5 dagar Fahrenheit) och låta serverdelen skicka ett enda meddelande som innehåller all information som krävs för att fylla dessa mallar (till exempel en femdagarsprognos med Celsius- och Fahrenheit-grader).
Mallen för endagsprognosen med Celsiustemperaturer är följande:
<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>
Meddelandet som skickas till Notification Hub innehåller följande egenskaper:
Day1_image
Day1_tempC
Day1_tempF
Day2_image
Day2_tempC
…
Med det här mönstret skickar serverdelen bara ett enda meddelande utan att behöva lagra specifika anpassningsalternativ för appanvändarna. Följande bild illustrerar det här scenariot:
Registrera dig för mallar
Mer information om hur du registrerar dig för mallar finns i Registreringshantering.
Malluttrycksspråk
Mallar får inte innehålla strängar. De är begränsade till XML- eller JSON-dokument. Du kan också bara placera uttryck på vissa platser. till exempel nodattribut eller värden för XML, strängegenskapsvärden för JSON.
Följande är till exempel inte en giltig XML-mall:
<tile>
<visual>
<binding $(property)>
<text id="1">Seattle, WA</text>
</binding>
</visual>
</tile>
Som förklaras i följande avsnitt måste uttryck omslutas inom klammerparenteser när du använder sammanlänkning. Exempel:
<tile>
<visual>
<binding template="ToastText01">
<text id="1">{'Hi, ' + $(name)}</text>
</binding>
</visual>
</tile>
Den analoga koden i JSON visas på följande sätt:
{"aps":{"alert":"{'Hi, ' + $(name)}"}}
I följande tabell visas det språk som tillåts i mallar:
Uttryck | Beskrivning |
---|---|
|
Referens till en händelseegenskap med det angivna namnet. Egenskapsnamn är inte skiftlägeskänsliga. Det här uttrycket omvandlas till egenskapens textvärde eller till en tom sträng om egenskapen inte finns. |
|
Som ovan, men texten klipps uttryckligen med n tecken, till exempel |
|
Som ovan, men texten är suffixet med tre punkter när den klipps. Den totala storleken på den klippta strängen och suffixet överskrider inte n tecken. |
|
|
#(prop) |
Används i JSON-mallar (till exempel för iOS och Android mallar). Den här funktionen fungerar exakt på samma sätt som Blir till exempel |
|
En literal. Literaler innehåller godtycklig text omgiven av enkla eller dubbla citattecken. |
|
Sammanfogningsoperatorn kopplar ihop två uttryck till en enda sträng. Uttrycken kan vara något av föregående formulär. När du använder sammanfogning måste hela uttrycket omges av |