[Windows Phone 8.1] Probando notificaciones en el emulador

windows_phone_mac_iconIntroducción

Uno de los primeros cambios visibles en el nuevo SDK de Windows Phone 8.1 es el emulador. Contamos con una gran variedad de emuladores con diferentes resoluciones, tamaños de pantalla y memoria lo que nos permite probar una gran cantidad de la funcionalidad de nuestras aplicaciones. Entre la gran cantidad de situaciones que podemos probar, tenemos la posibilidad de probar notificaciones sin la necesidad de crear un servicio en la nube que si es necesario al publicar la aplicación.

Notificaciones

Notificaciones

Manos a la obra!

Vamos a crear un proyecto básico pero suficiente para poder probar la herramienta de notificaciones del emulador. Creamos un nuevo proyecto:

Nuevo proyecto

Nuevo proyecto

Partimos de la plantilla Blank App para centrar nuestra atención en la gestión de notificaciones. Añadimos las carpetas Views, ViewModels y Services además de las clases base necesarias para implementar el patrón MVVM de la misma forma que vimos en este artículo.

Para que la aplicación sea capaz de gestionar notificaciones Toast debemos activar la opción en el archivo de manifiesto del paquete.

Habilitar las notificaciones Toast en el archivo de manifiesto

Habilitar las notificaciones Toast en el archivo de manifiesto

Pasamos a definir la interfaz de nuestra aplicación. El objetivo sera probar la herramienta de notificaciones del emulador por lo que nuestra interfaz sera lo más simple posible para conseguir el objetivo. En este caso, un simple botón que al ser pulsado recuperare un canal de notificación de inserción para la aplicación:

<Grid>
     <Button Content="Enviar notificación"
             Command="{Binding NotificationCommand}"
             HorizontalAlignment="Center"/>
</Grid>

El resultado es:

Nuestra interfaz

Nuestra interfaz

En la viewmodel correspondiente a la vista se ejecutará un comando:

private ICommand _notificationCommand;

public ICommand NotificationCommand
{
     get { return _notificationCommand = _notificationCommand ?? new DelegateCommandAsync(NotificationCommandDelegate); }
}

public async Task NotificationCommandDelegate()
{
     var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

     channel.PushNotificationReceived += (s, e) => {
          if (e.ToastNotification != null)
               Debug.WriteLine("{0}:{1}", e.NotificationType, e.ToastNotification.Content.InnerText);
     };
}

Utilizamos la clase PushNotificationChannelManager encargada de crear objetos que se utilizan para recuperar canales de notificaciones de inserción de Servicios de notificaciones de inserción de Windows (WNS). Esta clase cuenta con un método llamado CreatePushNotificationChannelForApplicationAsync() que sera el utilizado para recuperar un canal de notificación de inserción para la aplicación. A continuación, para asegurarnos que todo esta funcionando como debe, nos suscribimos al evento PushNotificationReceived que se desencadena cuando llega una notificación de inserción a este canal.

Simulando notificaciones

Y ya. Todo listo para poder probar el simulador de notificaciones!. Pulsamos el botón y abrimos las herramientas extras seleccionando la pestaña notificaciones:

Herramienta extra notificaciones

Herramienta extra notificaciones

Habilitamos la simulación de notificaciones y pulsamos el botón refrescar:

Pulsamos el botón Refrescar

Pulsamos el botón Refrescar

Se refresca el contenido de la herramienta mostrando el AppId de la aplicación asi como la Uri, tipo de notificación y plantilla utilizada. En este punto podemos ver el contenido y probar con distintos tipos de notificaciones hasta poder elegir con certeza cual encaja con nuestros objetivos. Pulsamos el botón enviar:

Enviamos la notificación

Enviamos la notificación

Y automáticamente recibimos el mensaje de la notificación quedando la misma tambien registrada en el centro de actividades:

Notificación recibida!

Notificación recibida!

Podéis descargar el ejemplo realizado a continuación:

Más información

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s