Plantillas
Las plantillas permiten que una aplicación cliente especifique el formato exacto de la notificación que desea recibir. Con las plantillas, una aplicación puede obtener muchos beneficios distintos, incluidos los siguientes:
Back-end independiente de la plataforma.
Notificaciones personalizadas.
Independencia de la versión de cliente.
Localización sencilla.
Esta sección proporciona ejemplos detallados sobre cómo usar las plantillas para enviar notificaciones independientes de la plataforma orientadas a todos los dispositivos en todas las plataformas y para personalizar la notificación de difusión a cada dispositivo.
Uso de plantillas multiplataforma
La forma estándar de enviar notificaciones push es enviar una carga específica a los servicios de notificación de plataforma (WNS, APNS) para cada notificación que se debe enviar. Por ejemplo, para enviar una alerta a APNS, la carga es un objeto JSON con el formato siguiente:
{“aps”: {“alert” : “Hello!” }}
Para enviar un mensaje de notificación del sistema similar en una aplicación de Windows Store, la carga es la siguiente:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">Hello!</text>
</binding>
</visual>
</toast>
Puede crear cargas similares para plataformas MPNS (Windows Phone) y GCM (Android).
Este requisito obliga al back-end de la aplicación a generar cargas distintas para cada plataforma y, de manera efectiva, hace que el back-end sea responsable de parte del nivel de presentación de la aplicación. Algunos problemas incluye diseños gráficos y de localización (especialmente para las aplicaciones de la Tienda Windows que incluyen notificaciones para varios tipos de iconos).
La característica de plantilla de Notification Hubs permite que una aplicación cliente cree registros especiales, llamados registros de plantilla, que, además del conjunto de etiquetas, incluye una plantilla. Dados los ejemplos de carga anteriores, la única información independiente de la plataforma es el propio mensaje de alerta (Hello! ). Una plantilla es un conjunto de instrucciones para el Centro de notificaciones sobre cómo dar formato a un mensaje independiente de la plataforma para el registro de esa aplicación cliente específica. En el ejemplo anterior, el mensaje independiente de la plataforma es una propiedad única: message = Hello!.
La siguiente ilustración muestra el proceso anterior:
La plantilla para un registro de aplicación cliente de iOS es la siguiente:
{“aps”:{“alert”:”$(message)”}}
La plantilla análoga para una aplicación cliente de Windows Store es:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">$(message)</text>
</binding>
</visual>
</toast>
Tenga en cuenta que el mensaje real se sustituye por la expresión $(message)
. Esta expresión indica al Centro de notificaciones, siempre que envíe un mensaje a este registro en particular, para generar un mensaje que siga esta plantilla.
Las aplicaciones cliente pueden crear varios registros con el fin de usar varias plantillas; por ejemplo, una plantilla para los mensajes de alerta y una plantilla para las actualizaciones de iconos. Las aplicaciones cliente también pueden combinar los registros nativos (registros sin plantilla) y los registros de plantilla.
Nota
El Centro de notificaciones envía una notificación para cada registro sin tener en cuenta si pertenecen a la misma aplicación cliente. Este comportamiento se puede usar para traducir las notificaciones independientes de la plataforma en más notificaciones. Por ejemplo, el mismo mensaje independiente de la plataforma al Centro de notificaciones se puede traducir sin problemas en una alerta de notificación del sistema y una actualización de icono, sin requerir que el back-end lo sepa. Tenga en cuenta que algunas plataformas (por ejemplo, iOS) puede contraer las diversas notificaciones en el mismo dispositivo si se envían en un período breve.
Uso de plantillas para la personalización
Otra ventaja de usar plantillas es la capacidad de usar Notification Hubs para ejecutar la personalización por registro de las notificaciones. Por ejemplo, considere una aplicación para el clima que muestra un icono con las condiciones climáticas de una ubicación específica. Un usuario puede elegir entre grados Celsius o Fahrenheit, además de un pronóstico de un día o de cinco días. Con las plantillas, cada instalación de aplicación cliente puede registrar el formato requerido (pronóstico de 1 día en grados Celsius, pronóstico de 1 día en grados Fahrenheit, pronóstico de 5 días en grados Celsius, pronóstico de 5 días en grados Fahrenheit) y hacer que el back-end envíe un mensaje único con toda la información necesaria para rellenar esas plantillas (por ejemplo, un pronóstico de 5 días con grados Celsius y Fahrenheit).
La plantilla para un pronóstico de 1 día con temperaturas expresadas en Celsius es la siguiente:
<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>
El mensaje enviado al Centro de notificaciones contiene las siguientes propiedades:
Day1_image
Day1_tempC
Day1_tempF
Day2_image
Day2_tempC
…
Con este patrón, el back-end solo envía un mensaje único sin tener que almacenar opciones de personalización específicas para los usuarios de la aplicación. La siguiente ilustración muestra este escenario:
Cómo registrarse para plantillas
Para obtener más información sobre cómo registrarse para plantillas, consulte Administración de registros.
Lenguaje de expresión de plantilla
Las plantillas no pueden contener cadenas. Están limitados a documentos XML o JSON. Además, solo puede ubicar expresiones en lugares específicos; por ejemplo, valores o atributos de nodo para XML, valores de propiedad de cadena para JSON.
El siguiente ejemplo no es una plantilla XML válida:
<tile>
<visual>
<binding $(property)>
<text id="1">Seattle, WA</text>
</binding>
</visual>
</tile>
Como se explica en la sección siguiente, al usar la concatenación, las expresiones se deben encapsular entre corchetes. Por ejemplo:
<tile>
<visual>
<binding template="ToastText01">
<text id="1">{'Hi, ' + $(name)}</text>
</binding>
</visual>
</tile>
El código análogo en JSON aparece de la siguiente manera:
{"aps":{"alert":"{'Hi, ' + $(name)}"}}
La tabla siguiente muestra el lenguaje que se permite en las plantillas:
Expression | Descripción |
---|---|
|
Referencia a una propiedad de evento con el nombre especificado. Los nombres de propiedad no distinguen mayúsculas de minúsculas. Esta expresión se resuelve en el valor de texto de la propiedad o en una cadena vacía, si la propiedad no está presente. |
|
Como se ha indicado anteriormente, pero el texto se recorta explícitamente en n caracteres, por ejemplo |
|
Igual que el caso anterior, pero se agregan tres puntos como sufijo al texto debido a que se recorta. El tamaño total de la cadena recortada y el sufijo no exceden los n caracteres.
|
|
Similar a excepto |
#(prop) |
Se usa en las plantillas JSON (por ejemplo, para plantillas de iOS y Android). Esta función funciona exactamente igual que Por ejemplo, |
|
Literal. Los literales contienen texto arbitrario encerrado entre comillas simples o dobles. |
|
El operador de concatenación que une dos expresiones en una sola cadena. Las expresiones pueden estar en cualquiera de los formatos anteriores. Cuando se usa la concatenación, toda la expresión debe estar entre |