Delen via


Sjablonen

Met sjablonen kan een clienttoepassing de exacte indeling opgeven van de meldingen die hij wil ontvangen. Met behulp van sjablonen kan een app verschillende voordelen realiseren, waaronder het volgende:

  • Een platformonafhankelijke back-end.

  • Persoonlijke meldingen.

  • Onafhankelijkheid van clientversie.

  • Eenvoudige lokalisatie.

In deze sectie vindt u twee uitgebreide voorbeelden van het gebruik van sjablonen voor het verzenden van platformonafhankelijke meldingen die gericht zijn op al uw apparaten op verschillende platforms en het personaliseren van broadcastmeldingen aan elk apparaat.

Sjablonen gebruiken die platformoverschrijdend zijn

De standaardmethode voor het verzenden van pushmeldingen is het verzenden van elke melding die moet worden verzonden, een specifieke nettolading naar platformmeldingsservices (WNS, APNS). Als u bijvoorbeeld een waarschuwing naar APNS wilt verzenden, is de nettolading een JSON-object van het volgende formulier:

{“aps”: {“alert” : “Hello!” }}

Als u een vergelijkbaar pop-upbericht wilt verzenden in een Windows Store-toepassing, is de nettolading als volgt:

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

U kunt vergelijkbare nettoladingen maken voor MPNS-platforms (Windows Phone) en GCM (Android).

Deze vereiste dwingt de back-end van de app om voor elk platform verschillende nettoladingen te produceren en maakt de back-end effectief verantwoordelijk voor een deel van de presentatielaag van de app. Enkele aandachtspunten zijn lokalisatie en grafische indelingen (met name voor Windows Store-apps met meldingen voor verschillende typen tegels).

Met de sjabloonfunctie Notification Hubs kan een client-app speciale registraties maken, ook wel sjabloonregistraties genoemd, waaronder, naast de set tags, een sjabloon. Gezien de voorgaande payloadvoorbeelden is de enige platformonafhankelijke informatie het werkelijke waarschuwingsbericht (Hello!). Een sjabloon is een set instructies voor de Notification Hub over het opmaken van een platformonafhankelijk bericht voor de registratie van die specifieke client-app. In het voorgaande voorbeeld is het platformonafhankelijke bericht één eigenschap: message = Hello!.

In de volgende afbeelding ziet u het bovenstaande proces:

Templates

De sjabloon voor een registratie van een iOS-client-app is als volgt:

{“aps”:{“alert”:”$(message)”}}

De analoge sjabloon voor een Windows Store-client-app is:

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

Houd er rekening mee dat het werkelijke bericht wordt vervangen door de expressie $(message). Met deze expressie wordt de Notification Hub geïnstrueerd wanneer er een bericht naar deze specifieke registratie wordt verzonden om een bericht te maken dat volgt op deze sjabloon.

Clienttoepassingen kunnen meerdere registraties maken om meerdere sjablonen te kunnen gebruiken; Bijvoorbeeld een sjabloon voor waarschuwingsberichten en een sjabloon voor tegelupdates. Clienttoepassingen kunnen ook systeemeigen registraties (registraties zonder sjabloon) en sjabloonregistraties combineren.

Notitie

De Notification Hub verzendt één melding voor elke registratie zonder na te denken of deze deel uitmaken van dezelfde client-app. Dit gedrag kan worden gebruikt om platformonafhankelijke meldingen te vertalen naar meer meldingen. Hetzelfde platformonafhankelijke bericht naar de Notification Hub kan bijvoorbeeld naadloos worden vertaald in een pop-upwaarschuwing en een tegelupdate, zonder dat de back-end hiervan op de hoogte hoeft te zijn. Houd er rekening mee dat sommige platforms (bijvoorbeeld iOS) meerdere meldingen naar hetzelfde apparaat kunnen samenvouwen als ze binnen een korte periode worden verzonden.

Sjablonen gebruiken voor persoonlijke instellingen

Een ander voordeel van het gebruik van sjablonen is de mogelijkheid om Notification Hubs te gebruiken om per registratie persoonlijke instellingen voor meldingen uit te voeren. Denk bijvoorbeeld aan een weer-app die een tegel weergeeft met de weersomstandigheden op een specifieke locatie. Een gebruiker kan kiezen tussen Celsius- of Fahrenheit-graden en een prognose van één of vijf dagen. Met behulp van sjablonen kan elke installatie van de client-app zich registreren voor de vereiste indeling (1-daagse Celsius, 1-daagse Fahrenheit, 5 dagen Celsius, 5 dagen Fahrenheit) en de back-end één bericht laten verzenden dat alle informatie bevat die nodig is om deze sjablonen te vullen (bijvoorbeeld een prognose van vijf dagen met Graden Celsius en Fahrenheit).

De sjabloon voor de prognose van één dag met Celsius temperaturen is als volgt:

<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>

Het bericht dat naar de Notification Hub wordt verzonden, bevat de volgende eigenschappen:

  • Day1_image

  • Day1_tempC

  • Day1_tempF

  • Day2_image

  • Day2_tempC

Door dit patroon te gebruiken, verzendt de back-end slechts één bericht zonder specifieke persoonlijke opties voor de app-gebruikers op te slaan. In de volgende afbeelding ziet u dit scenario:

Templates

Registreren voor sjablonen

Zie Registratiebeheer voor meer informatie over het registreren voor sjablonen.

Taal voor sjabloonexpressie

Sjablonen kunnen geen tekenreeksen bevatten. Ze zijn beperkt tot XML- of JSON-documenten. U kunt ook alleen expressies op bepaalde plaatsen plaatsen; Bijvoorbeeld knooppuntkenmerken of -waarden voor XML, tekenreekseigenschapswaarden voor JSON.

Het volgende is bijvoorbeeld geen geldige XML-sjabloon:

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

Zoals uitgelegd in de volgende sectie, moeten expressies bij het gebruik van samenvoeging tussen accolades worden verpakt. Bijvoorbeeld:

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

De analoge code in JSON wordt als volgt weergegeven:

{"aps":{"alert":"{'Hi, ' + $(name)}"}}

In de volgende tabel ziet u de taal die is toegestaan in sjablonen:

Expressie Beschrijving

$(prop)

Verwijzing naar een gebeurteniseigenschap met de opgegeven naam. Namen van eigenschappen zijn niet hoofdlettergevoelig. Deze expressie wordt omgezet in de tekstwaarde van de eigenschap of in een lege tekenreeks als de eigenschap niet aanwezig is.

$(prop, n)

Zoals hierboven, maar de tekst expliciet wordt geknipt bij n tekens, bijvoorbeeld $(title, 20) knipt de inhoud van de titeleigenschap bij 20 tekens.

.(prop, n)

Zoals hierboven, maar de tekst wordt achtervoegsel met drie puntjes geknipt. De totale grootte van de geknipte tekenreeks en het achtervoegsel mogen niet langer zijn dan n tekens. .(title, 20) met de invoereigenschap 'Dit is de titelregel' resulteert in Dit is de titel.....

%(prop)

Vergelijkbaar met $(name) behalve dat de uitvoer URI-gecodeerd is.

#(prop)

Wordt gebruikt in JSON-sjablonen (bijvoorbeeld voor iOS- en Android-sjablonen).

Deze functie werkt precies hetzelfde als $(prop) eerder opgegeven, behalve wanneer deze wordt gebruikt in JSON-sjablonen (bijvoorbeeld Apple-sjablonen). Als deze functie in dit geval niet wordt omgeven door '{','}' (bijvoorbeeld ‘myJsonProperty’ : ‘#(name)’), en deze resulteert in een getal in Javascript-indeling, regexp: (0|([1-9][0-9]*))(\.[0-9]+)?((e|E)(+|-)?[0-9]+)?bijvoorbeeld, is de uitvoer-JSON een getal.

Wordt bijvoorbeeld ‘badge : ‘#(name)’‘badge’ : 40 (en niet ‘40‘).

‘text’ or “text”

Een letterlijke. Letterlijke waarden bevatten willekeurige tekst tussen enkele of dubbele aanhalingstekens.

expr1 + expr2

De samenvoegingsoperator voegt twee expressies toe aan één tekenreeks.

De expressies kunnen een van de voorgaande formulieren zijn.

Wanneer u samenvoeging gebruikt, moet de hele expressie worden omgeven door {}. Bijvoorbeeld {$(prop) + ‘ - ’ + $(prop2)}.