[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

Anuncios

[Windows Phone] Nuevos emuladores disponibles (Update 2 y Update 3)

WPNewEmulatorsNuevos emuladores

Recientemente Microsoft ha publicado una actualización de los emuladores de Windows Phone.

Tenemos disponible las imágenes de los emuladores del Update 2 con el objetivo de probar nuestras aplicaciones en esta versión de la plataforma y también las correspondientes al Update 3. Ambas necesitan al menos Visual Studio 2012 Update 4 o Visual Studio 2013 RTM.

Update 2

El listado de imágenes correspondiente alos emuladores del Update 2 es el siguiente:

  • Windows Phone Emulator 8.0 (10322) WVGA
  • Windows Phone Emulator 8.0 (10322) WVGA 512 MB
  • Windows Phone Emulator 8.0 (10322) WXGA
  • Windows Phone Emulator 8.0 (10322) 720p

Update 3

El listado de imágenes correspondiente alos emuladores del Update 2 es el siguiente:

  • Windows Phone Emulator 8.0 Update 3 WVGA
  • Windows Phone Emulator 8.0 Update 3 WVGA 512 MB
  • Windows Phone Emulator 8.0 Update 3 WXGA
  • Windows Phone Emulator 8.0 Update 3 720p
  • Windows Phone Emulator 8.0 Update 3 1080p

NOTA: Incluye una imágen del emulador a 1080P ideal para adaptar y probar nuestra aplicación en este tipo de dispositivos garantizando la mejor experiencia de usuario posible en todos los entornos.

Más información

[Tips and Tricks] Windows Phone. Detectar si la App se ejecuta en el Emulador

emulador-wp8Problema

El emulador de Windows Phone es una herramienta fantástica que nos permitirá probar de manera rápida y efectiva la aplicación que está en desarrollo sin la necesidad del dispositivo físico pero es importante recordar, el emulador NO equivale a un dispositivo. Hay ciertas partes de la API que no funcionan en el emulador como algunos lanzadores u otras partes que por requisitos de hardware tampoco lo haran como por ejemplo el uso del Bluetooth.

Podemos gestionar estos casos en nuestros desarrollos con técnicas como las directivas de compilación aunque poder determinar con facilidad si estamos en el emulador o no puede ayudar en el desarrollo.

Veamos como sería…

NOTA: Podéis encontrar un listado de opciones que no se pueden realizar en el emulador en el siguiente enlace.

Solución

Dentro del namespace Microsoft.Devices tenemos la clase estática Environment. La clase Environment proporciona información relacionada del entorno donde se ejecuta la Aplicación. Actualmente la única propiedad con la que cuenta es DeviceType que indica si la Aplicación se esta ejecutando en el emulador o en un dispositivo fisico:

if (Microsoft.Devices.Environment.DeviceType ==
Microsoft.Devices.DeviceType.Emulator)
     //Emulador
else
     //Dispositivo

Podéis descargar y probar un simple ejemplo que verifica si la Aplicación se ejecuta o no en el emulador:

Recordar que cualquier tipo de duda o sugerencia la podéis dejar en los comentarios.

Keep Pushing!

Más información

¿Qué no puedo hacer en el emulador de Windows Phone 8?

Introducción

Además de las herramientas necesarias para el desarrollo (Visual Studio y Expression Blend), tras instalar el SDK tenemos a nuestra disposición un emulador del sistema.

Lo más importante y la idea fundamental que se intenta transmitir al hablar del emulador es que nos permitirá probar de manera rápida y efectiva la aplicación que está en desarrollo sin la necesidad del dispositivo físico pero el emulador NO equivale a un dispositivo físico.

Bien, entonces…

¿Qué no se puede hacer en el emulador?

  • Batería. A nivel de desarrollo contamos con APIs para comprobar el estado de la batería. Es una opción interesante para cambiar el comportamiento de nuestra aplicación según el nivel de batería. Sin embargo, en el emulador el nivel de batería siempre será el 100%.
  • Brújula. Todo dispositivo Windows Phone 8 cuenta con brújula. No así el emulador. Necesitaremos de un dispositivo para recibir información de este sensor de nuestras aplicaciones.
  • Cámara. Si utilizamos la cámara del dispositivo de algun modo, ya sea para tomar fotografías o videos, no podremos probar bajo el emulador. Muchos equipos cuentan con cámara, sin embargo, no podremos aprovecharnos de ellas en el emulador.
  • Giroscopio. A pesar de contar con opciones avanzadas que nos permiten recibir información simulada del acelerómetro no contamos con la simulación del giroscopio.
  • Multi Touch. No contamos con simulación por parte de ratón para gestos multitáctiles. Si el equipo que hace de Host para el emulador cuenta con pantalla multi-touch podremos utilizarla. Sin embargo, dado que la mayoría de desarrolladores no cuentan con pantallas de dichas características en sus equipos de desarrollo la opción más barata actualmente sería recibir un préstamo de un dispositivo o adquirirlo.
  • Network Roaming. El emulador siempre simula estar conectado a una red “Fake GSM”. Por lo que no podemos probar cambios de una red a otra por ejemplo.
  • Vibración. Aunque es lógico tampoco podemos probar la vibración sin un dispositivo.

Deberíamos hacer también una mención especial a otros puntos a tener en cuenta. El Isolated Storage (almacenamiento aislado) se puede emular en el simulador. Sin embargo, al cerrar la sesión en el emulador los datos se pierden. Por supuesto, en un dispositivo físico los datos del almacenamiento aislado perduran entre sesiones.

Más información

Windows Phone 8. El nuevo Emulador.

Introducción

Uno de los primeros cambios visibles en el nuevo SDK de Windows Phone 8 es el emulador. Recuerda que ya hablamos del emulador de Windows Phone 7 en la siguiente entrada. El emulador de Windows Phone 7 solo nos mostraba la aplicación de Internet Explorer y la Configuración del sistema, además limitada. Este nuevo emulador es una máquina virtual (Hyper-V) completa del sistema, por lo que al arrancarlo tendremos las mismas aplicaciones que cuando arrancamos un dispositivo físico.

Prerrequisitos

Precisamente dado que el nuevo emulador es una máquina virtual completa en Hyper-V necesitamos una requisitos mínimos de hardware para poder utilizarlo. Los prerrequisitos son:

  • Windows 8 Pro o superior.
  • Un procesador que cuente con Second Level Address Translation (SLAT). Básicamente todos los procesadores i3/i5/i7 cuentan con ello.
  • 4GB de RAM o superior.

¿Que ocurre si solo dispongo de mi inseparable portátil con un dual core?

Si tras verificar que tu procesador no cuenta con SLAT no desesperes. Podrás desarrollar aplicaciones para Windows Phone 8 (si cumples los requisitos para Visual Studio) solo que sin poder ejecutar el emulador. Siempre podrás probar en un dispositivo físico real.

NOTA: Puedes verificar si tu procesador cuenta con SLAT y DEP utilizando una herramienta de Microsoft, llamada Coreinfo. Puedes obtener más información al respecto en el siguiente artículo de Rafa Serna.

El Emulador.

Emuladores Windows Phone 8

Dicen que en la variedad esta el gusto. Contamos con más emuladores. Recuerda que en Windows Phone 7 contabamos con dos emuladores practicamente iguales salvo la diferencia de memoria (uno de 512MB y otro de 256MB). Ahora, para desarrollar en Windows Phone 8 contamos con hasta 4 emuladores:

  • WVGA: Resolución más baja en Windows Phone 8 ( 480X800px). Cuenta con 1GB de RAM.
  • WVGA 512MB: Igual que el anterior pero con sólo 512MB de RAM.
  • WXGA: Resolución de 1280X768px.
  • 720P: Resolución más alta (1280X720px).

En el caso de desarrollar aplicaciones para Windows Phone 7 contamos con hasta 6 emuladores. Los 2 que ya teníamos más los 4 nuevos.

Emulador Windows Phone 8

NOTA: Recuerda que el emulador es una máquina virtual. La primera vez que arranquemos el emulador se tomará aproximadamente unos 5 minutos en arrancar. Es normal. Se está creando la máquina virtual, se crea un SnapShot, etc. Tras el primer arranque todo será mucho más rápido tardando solo un par de segundos en arrancar (recuperar la SnapShot). Indicar que también ganamos rendimiento, tenemos acceso a toda una ROM completa del sistema, hay menos posibilidad de errores, etc.

En la parte superior derecha del emulador tenemos una serie de botones.

El primero de ellos (X) nos cerrará el emulador. En caso de estar depurando se interrumpirá la depuración.

El siguiente (_) minimizaría el emulador en la barra de tareas.

Los dos siguientes son de bastante utilidad. Sirven para rotar el emulador en horizontal y en vertical dependiendo del estado actual.

Los dos siguientes botones sirven para modificar el zoom del emulador.

Herramientas adicionales

El último de los botones disponibles (>>) nos ofrece una serie de opciones extra tales simular el acelerómetro, utilizar el GPS indicando posiciones o tomar capturas utilizando la herramienta Emulator Screenshot Tool.

También podemos simular el uso del acelerómetro sin necesidad de utilizar un dispositivo físico. Nada ha cambiado desde el emulador de Windows Phone 7. Podemos mover el punto rojo para girar el teléfono y probar el acelerómetro. También podemos girar el móvil entre otras acciones.

Acelerómetro

Tenemos a disposición una herramienta para probar el posicionamiento GPS. Tampoco tenemos nada nuevo en esta segunda pestaña. Podemos utilizar el mapa para indicar la una ubicación a utilizar o marcar inclusive varios lugares.

Posicionamiento GPS

Tenemos una herramienta que nos permite tomar capturas de la aplicación.

NOTA: Si sacas capturas para subirlas al MarketPlace recuerda poner el emulador al 100% de zoom. La calidad de las capturas será la mayor posible.

Tomar capturas

Esta última pestaña es una de las novedades. En esta pestaña podemos visualizar toda la información del adaptador de red virtual utilizado por el emulador.

Red

Teclas de acceso rápido

F1 – Back
F2 – Home
F3 – Search
F7 – Camera
F8 – Volume Up
F9 – Volume Down
Page Up – activar teclado físico
Page Down – activar teclado virtual
Pause/Break – alternar entre teclados

Más información

Extra