Etiquetas

, , ,

 

Las aplicaciones de Style Windows 8 permiten recibir notificaciones (Push Notifications) al igual que otras tecnologías para dispositivos móviles. No entraremos en detalles de como se registra una aplicación de Win 8 para la recepción de  notificaciones, dado que ya hay varia información al respecto aunque muy poca en español, sino mostrar como utilizar Mobile Services de Windows Azure para administrar los servicios y realizar el envío de dichas notificaciones. Para comenzar daremos entonces una breve introducción que permita mostrar como implementar la recepción de las notificaciones en Windows 8. Si ya conocen este proceso pueden saltar esta primera etapa.

Registración de App Win 8 en Windows Store Developer.

En el siguiente link puede encontrar información de como se realiza la registración.

Una vez que la aplicación ya está registrada en el store de Microsoft debemos dirigirnos al sitio de Windows Azure e identificar la aplicación en el servicio mobile que deseemos que envía las notificaciones.

image

Una vez configurados estos valores, la aplicación de Mobile Services ya se encuentra apta para realizar el push de notificaciones a Windows 8.

Al mismo tiempo debemos asociar la solución que estamos desarrollando en Windows 8 con la aplicación que registramos en la tienda. Para esto debemos realizar los siguientes pasos:

registrar app win8 1

registrar app win8 2 

registrar app win8 3

registrar app win8 4

 

 

Algo que debemos notar es que cada uno de las instancias de la App que se encuentren ejecutándose en distintos dispositivos estará identificado por una URI diferente. Esta URI es la que nos permitirá identificar al dispositivo y poder enviarle notificaciones. Si no conocemos esta URI no será posible enviarle una notificación a esa instancia.

La aplicación de Windows 8 que recibirá las notificaciones y acabamos de asociar a la registración en el store deberá implementar el siguiente código:

El primer paso es abrir el canal, y registrar la aplicación para obtener la URI que identifica la instancia. En el archivo App.xaml.cs agregar:

 

registrar app win8 5 

Luego, definir el evento que recibirá la notificación:

Observar que en la imagen anterior se registra el siguiente evento para recibir y procesar cada una de las notificaciones. Este método deberá ser reemplazado por la lógica de que deseemos implementar.

 

image 

Para finalizar debemos invocar al OpenChannel al momento de iniciar la aplicación:

 

image

 

La recepción de algunos tipos de notificaciones requieren cambios en el manifiesto:

 

image

 

Una vez realizados estos pasos, ya tenemos creada y registrada nuestra App de Win 8 lista para recibir notificaciones y hemos asociado las credenciales de esta aplicación en nuestro Mobile Service.

Para poder realizar el envío de la notificación, a parte de conocer las credenciales ya registradas, debemos conocer la URI de la instancia a la cual deseamos hacerle el Push. En caso de que la notificación sea general para todas las instancias, debemos enviarla a cada una de ellas.

Para esto definiremos una tabla donde podamos almacenar la URI de cada una de las instancias:

Para este ejemplo no modificaremos ningún script ni especificaremos permisos particulares para las operaciones.

 

image

 

Por último para poder realizar el Push desde Mobile Services crearemos un Job. En este caso será uno que se ejecutará en demanda y no estará programado para que se ejecute en ninguna frecuencia en particular. Ustedes deberá implementar esta lógica para que se encuentre asociada al evento que requiera en función del caso de negocio que desee realizar.

 

envio de notificaciones

 

  1. Obtenemos la tabla “Notifications” donde se encuentran las URIs de cada instancia.
  2. Procesamos cada uno de los registros de la tabla (en este caso estaremos haciendo un push a todas las instancias).
  3. Utilizamos la librería de push para hacerle un envío a Windows 8 de un mensaje del tipo Badge (Ver información al final del post para implementar push a Windows Phone, iOS, Andriod).

 

Por último, para poder probar el job, debemos publicar la URI de la instancia que recibirá la notificación.

Si ya estamos ansiosos por probar esto, podemos simplemente ejecutar la aplicación de Windows 8, colocar un breackpoint al obtener la URI e insertarla manualmente en la tabla para poder ejecutar el Job.

image

 

Una vez que ya verificamos que hemos realizado todos los pasos correctamente, y que la notificación es recibida por la aplicación, debemos registrar automáticamente la URI utilizando el servicio de Mobile Services y la tabla Notifications.

Para esto debemos realizar los siguientes pasos:

Agregar la referencia de Mobile Services a la App, Json.Net y Microsoft.Threading

 

image

 

image 

image

image

Abrir el archivo App.xaml.cs y agregar las credenciales del Mobile Services.

 

image

Reemplazar {account} y {app-key} por los datos de su cuenta.

Definir la clase de Notifications que utilizaremos para el servicio:

image

Por último, al recibir la URI debemos agregarla utilizando Mobile Services. Para esto modificaremos el siguiente método: OnChannelCreationCompleted.

 

image

 

 URIs de Push Notifications:

Una URI tiene un tiempo de vigencia hasta que la misma se encuentra vencida. En el script de Mobile Service deberíamos identificar que la URI que estamos registrando no se encuentra registrada previamente. Y por último, en el envío del Push notification debemos identificar si el servicio de notificaciones de Windows 8 nos devuelve como error que esa URI ya se encuentra vencida para quitarla de la tabla.

 

Limitación de los jobs.

Una de las limitaciones que tienen los jobs es que no podemos invocarlos en forma programática en demanda. Por lo cual, no podemos ejecutar este job a raíz de evento generado por algún otro sistema o en algún momento en particular. Debemos analizar si el push se encuentra asociado a alguna operación de datos, para colocarlo donde se produzca la misma, o bien tener una tabla de notificaciones por enviar y cada cierto tiempo procesar los items pendientes.

Otra de las posibilidades es generar un job que se ejecute cada cierto tiempo y al mismo tiempo monitorear una cola (Queue de Service Bus o Storage) para desencolar los items que debemos procesar.

Por el momento si quisiéramos ejecutarlo a mediante servicio rest (utilizando Mobile Services) en demanda, podemos crear una tabla (por ejemplo Push), solo para que nos permita definir un script en alguna de las operaciones y ejecutar el código de la imagen anterior. Esto genera un problema de diseño porque en realidad estamos operando con una acción que hace referencia a un modelo de datos, cuando en realidad solo la estamos utilizando para hacer uso del script ejecutándolo en demanda a través del servicio.

 

Referencia de Request y Response para notificaciones en Windows 8:

http://msdn.microsoft.com/en-us/library/windows/apps/hh465435.aspx

 

Librería de Push de Mobile Services:

http://msdn.microsoft.com/en-us/library/windowsazure/jj554217.aspx

 

Método Descripción
apns Envío de notificaciones a iOS. (IPhone)
gcm Envío de notificaciones a Andriod.
mpns Envío de notificaciones a Windows Phone 8
wns Envío de notificaciones a Windows Store Apps (Windows 8)