Freigeben über


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.

Templates

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.

Templates

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

$(prop)

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.

$(prop, n)

Wie oben, aber der Text wird explizit auf n Zeichen geclippt, z $(title, 20) . B. den Inhalt der Titeleigenschaft mit 20 Zeichen.

.(prop, n)

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. .(title, 20) mit einer Eingabeeigenschaft von "This is the title line" results in This is the title.....

%(prop)

Ähnlich wie $(name) die Ausgabe ist URI-codiert.

#(prop)

Wird in JSON-Vorlagen (z.B. für iOS- und Android-Vorlagen) verwendet.

Diese Funktion funktioniert genau $(prop) wie zuvor angegeben, außer bei Verwendung in JSON-Vorlagen (z. B. Apple-Vorlagen). Wenn diese Funktion in diesem Fall nicht von "{','}" umgeben ist (z ‘myJsonProperty’ : ‘#(name)’). B. , und es wird in einem Javascript-Format regexp: (0|([1-9][0-9]*))(\.[0-9]+)?((e|E)(+|-)?[0-9]+)?ausgewertet, z. B. ist die Ausgabe JSON eine Zahl.

So wird ‘badge’ : 40 z. B. ‘badge : ‘#(name)’ (und nicht ‘40‘).

‘text’ or “text”

Ein Literal. Literale enthalten beliebigen Text, der in einfache oder doppelte Anführungszeichen eingeschlossen ist.

expr1 + expr2

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 {} eingeschlossen werden. Beispiel: {$(prop) + ‘ - ’ + $(prop2)}.