Vorlagen
Mithilfe von Vorlagen kann eine Clientanwendung das genaue Format der Benachrichtigungen angeben, die sie empfangen möchte. Die Verwendung von Vorlagen bietet einer App viele verschiedene Vorteile, einschließlich der folgenden:
Ein plattformagnostisches Back-End.
Personalisierte Benachrichtigungen.
Unabhängigkeit der Clientversion.
Einfache Lokalisierung.
Dieser Abschnitt enthält zwei ausführliche Beispiele. Sie zeigen, wie Vorlagen verwendet werden, um plattformunabhängige Benachrichtigungen plattformübergreifend an alle Geräte zu senden und um Übertragungsbenachrichtigungen für jedes Gerät zu personalisieren.
Verwenden von Vorlagen plattformübergreifender Vorlagen
Das Standardverfahren zum Senden von Pushbenachrichtigungen besteht darin, für jede Benachrichtigung, die gesendet werden soll, eine bestimmte Nutzlast an Plattformbenachrichtigungsdienste (WNS, APNS) zu senden. Beim Senden einer Benachrichtigung an APNS entspricht die Nutzlast z. B. einem Json-Objekt im folgenden Format:
{“aps”: {“alert” : “Hello!” }}
Um eine ähnliche Popupnachricht in einer Windows Store-Anwendung zu senden, lautet die Nutzlast wie folgt:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">Hello!</text>
</binding>
</visual>
</toast>
Sie können ähnliche Nutzlasten für MPNS (Windows Phone)- und GCM (Android)-Plattformen erstellen.
Durch diese Anforderung ist das App-Back-End gezwungen, für jede Plattform unterschiedliche Nutzlasten zu erzeugen, und ist dadurch effektiv für einen Teil der Darstellungsschicht der App verantwortlich. Die Lokalisierung und grafischen Layouts (insbesondere für Windows Store-Apps, die Benachrichtigungen für verschiedene Kacheltypen umfassen) sind dabei nicht unproblematisch.
Das Notification Hubs-Vorlagenfeature ermöglicht einer Client-App das Erstellen spezieller Registrierungen – so genannter Vorlagenregistrierungen – die neben den Tags eine Vorlage enthalten. Aus den zuvor aufgeführten Nutzlastbeispielen ergibt sich, dass der eigentliche Benachrichtigungstext (Hello! ) die einzige plattformunabhängige Information ist. Eine Vorlage umfasst eine Reihe von Anweisungen für den Notification Hub, die angeben, wie eine plattformunabhängige Nachricht für die Registrierung der spezifischen Client-App formatiert werden soll. Im vorherigen Beispiel ist die plattformunabhängige Nachricht eine einzelne Eigenschaft: message = Hello!.
Das oben beschriebene Verfahren wird in der folgenden Abbildung veranschaulicht.
Die Vorlage für eine iOS Client-App-Registrierung ist wie folgt:
{“aps”:{“alert”:”$(message)”}}
Die analoge Vorlage für eine Windows Store Client-App lautet:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">$(message)</text>
</binding>
</visual>
</toast>
Beachten Sie, dass die tatsächliche Nachricht für den Ausdruck $(message)
ersetzt wird. Dieser Ausdruck weist den Benachrichtigungshub an, wenn er eine Nachricht an diese bestimmte Registrierung sendet, um eine Nachricht zu erstellen, die dieser Vorlage folgt.
Clientanwendungen können mehrere Registrierungen erstellen, um mehrere Vorlagen zu verwenden; beispielsweise eine Vorlage für Warnungsnachrichten und eine Vorlage für Kachelupdates. Clientanwendungen können auch systemeigene Registrierungen (Registrierungen ohne Vorlage) und Vorlagenregistrierungen kombinieren.
Hinweis
Der Benachrichtigungshub sendet eine Benachrichtigung für jede Registrierung, ohne zu berücksichtigen, ob sie zur gleichen Client-App gehören. Dieses Verhalten kann verwendet werden, um plattformunabhängige Benachrichtigungen in weitere Benachrichtigungen zu übersetzen. Beispielsweise kann dieselbe plattformunabhängige Nachricht an den Notification Hub nahtlos in eine Popupbenachrichtigung und eine Kachelaktualisierung übersetzt werden, ohne dass das Back-End daran beteiligt ist. Beachten Sie, dass einige Plattformen (beispielsweise iOS) ggf. mehrere Benachrichtigungen an dasselbe Gerät reduzieren, wenn diese innerhalb eines kurzen Zeitraums gesendet werden.
Verwenden von Vorlagen für die Personalisierung
Ein weiterer Vorteil von Vorlagen besteht darin, dass Benachrichtigungen mithilfe von Notification Hubs pro Registrierung personalisiert werden können. Beispiel: Eine Wetter-App zeigt eine Kachel mit den Wetterbedingungen an einem bestimmten Ort an. Ein Benutzer kann zwischen Grad Celsius und Fahrenheit und einer eintägigen oder fünftägigen Vorhersage wählen. Mithilfe von Vorlagen kann sich jede Client-App-Installation für das erforderliche Format (1 Tag Celsius, 1 Tag Fahrenheit, 5 Tage Celsius, 5 Tage Fahrenheit) registrieren und das Back-End eine einzelne Nachricht senden lassen, die alle erforderlichen Informationen zum Füllen dieser Vorlagen enthält (z. B. eine fünftägige Vorhersage mit Gradangaben in Celsius und Fahrenheit).
Die Vorlage für die eintägige Vorhersage mit Temperaturangaben in Celsius sieht wie folgt aus:
<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>
Die an den Benachrichtigungshub gesendete Nachricht enthält die folgenden Eigenschaften:
Day1_image
Day1_tempC
Day1_tempF
Day2_image
Day2_tempC
…
Durch die Verwendung dieses Musters sendet das Back-End nur eine einzelne Nachricht und muss keine bestimmten Personalisierungsoptionen für die App-Benutzer speichern. Dieses Szenario wird in der folgenden Abbildung veranschaulicht.
So registrieren Sie sich für Vorlagen
Weitere Informationen zum Registrieren für Vorlagen finden Sie unter Registrierungsverwaltung.
Vorlagenausdrucksprache
Vorlagen können keine Zeichenfolgen enthalten. Sie sind auf XML- oder JSON-Dokumente beschränkt. Außerdem können Sie Ausdrücke nur an bestimmten Stellen einfügen, z. B. in Node-Attributen oder -Werten für XML und Zeichenfolgen-Eigenschaftswerten für JSON.
Folgendes ist beispielsweise keine gültige XML-Vorlage:
<tile>
<visual>
<binding $(property)>
<text id="1">Seattle, WA</text>
</binding>
</visual>
</tile>
Wie im folgenden Abschnitt erläutert, müssen Ausdrücke beim Verwenden von Verketteungen in geklammerte Klammern umgebrochen werden. Beispiel:
<tile>
<visual>
<binding template="ToastText01">
<text id="1">{'Hi, ' + $(name)}</text>
</binding>
</visual>
</tile>
Der analoge Code in JSON wird wie folgt angezeigt:
{"aps":{"alert":"{'Hi, ' + $(name)}"}}
In der folgenden Tabelle wird die in Vorlagen zulässige Sprache gezeigt:
Ausdruck | BESCHREIBUNG |
---|---|
|
Verweist auf eine Ereigniseigenschaft mit dem angegebenen Namen. Bei Eigenschaftennamen wird nicht zwischen Groß- und Kleinschreibung unterschieden. Dieser Ausdruck wird in den Textwert der Eigenschaft oder in eine leere Zeichenfolge aufgelöst, wenn die Eigenschaft nicht vorhanden ist. |
|
Wie oben, aber der Text wird explizit auf n Zeichen geclippt, z |
|
Wie oben, allerdings werden dem Text beim Abschneiden drei Punkte als Suffix hinzugefügt. Die Gesamtgröße der abgeschnittenen Zeichenfolge und des Suffixes überschreitet n Zeichen nicht.
|
|
Ähnlich wie |
#(prop) |
Wird in JSON-Vorlagen (z.B. für iOS- und Android-Vorlagen) verwendet. Diese Funktion funktioniert genau So wird |
|
Ein Literal. Literale enthalten beliebigen Text, der in einfache oder doppelte Anführungszeichen eingeschlossen ist. |
|
Der Verkettungsoperator, der zwei Ausdrücke zu einer Zeichenfolge verbindet. Die Ausdrücke können eine der oben beschriebenen Formen aufweisen. Bei Verwendung der Verkettung muss der gesamte Ausdruck in |