[Windows Phone 8.1] Update Task

Introducción

Con la llegada de nuevo SDK siempre esperamos novedades
significativas que nos permitan crear cada vez mejores aplicaciones y
otorgar experiencias de usuario más completas. Con la llegada del SDK de
Windows Phone 8.1 contamos con nuevos controles, nuevas APIs,
herramientas, etc.

Entre la enorme cantidad de novedades contamos con una nueva background task realmente útil llamada Update Task.

Como podemos adivinar por su nombre, este background task se ejecuta
cuando la aplicación se actualiza. Esto nos permite mostrar información
al usuario, actualizar datos, actualizar settings, etc.

En este artículo vamos a aprender como utilizar el Update Task.

¿Te apuntas?

Creando el Update Task

Teniendo una aplicación Windows Phone 8.1 nos centramos en añadir la background task. Para añadir la background task debemos añadir un componente WinRT.

Una vez creado el componente WinRT renombraremos la clase a UpdateTask. La clase UpdateTask implementa la interfaz IBackgroundTask. Esta interfaz cuenta con un único método llamado Run. Este método sera al que el sistema llamará para iniciar la background task y es necesario en todas las tareas en segundo plano.

namespace UpdateTask
{
    public sealed class UpdateTask : IBackgroundTask
    {
        public void Run(IBackgroundTaskInstance taskInstance)
        {
 
        }
    }
}

NOTA:  La clase de la tarea en segundo plano debe ser una clase public y sealed.

La Task tendrá como objetivo notificar al usuario de una nueva versión. Por lo tanto, en el método Run vamos a lanzar una notificación Toast y vamos a actualizar el Tile de la aplicación.

Creamos un método para lanzar una notificación Toast:

/// <summary>
/// Muestra una notificación Toast para notificar al usuario de la nueva versión.
/// </summary>
private void ShowNotification()
{
     var toastnotifier = ToastNotificationManager.CreateToastNotifier();
     var toastDescriptor = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
     var txtNodes = toastDescriptor.GetElementsByTagName("text");
 
     txtNodes[0].AppendChild(toastDescriptor.CreateTextNode("Nueva versión!"));
     txtNodes[1].AppendChild(toastDescriptor.CreateTextNode(string.Format("Actualizada : {0}", DateTime.Now)));
 
     var toast = new ToastNotification(toastDescriptor);
 
     toastnotifier.Show(toast);
}

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). Utilizamos el método CreateToastNotifier que crea una nueva instancia de ToastNotification, que permite generar una notificación Toast para la aplicación.

Otro método actualizará el Tile de la aplicación:

/// <summary>
/// Actualiza el Tile de la aplicación notificando de la nueva versión.
///
/// </summary>
private void UpdateTileStatus()
{
     var tileContent = TileUpdateManager.GetTemplateContent(
                       TileTemplateType.TileSquare150x150Text01);
 
     var tileText = tileContent.SelectNodes("tile/visual/binding/text");
 
     tileText[0].InnerText = "Nueva versión!";
     tileText[1].InnerText = "Actualizada";
     tileText[2].InnerText = DateTime.Now.ToString();
 
     var notification = new TileNotification(tileContent);
     var updater = TileUpdateManager.CreateTileUpdaterForApplication();
 
     updater.Update(notification);
}

La clase TileUpdateManager crea objetos de tipo TileUpdater utilizados para actualizar el Tile
de Aplicación. Esta clase también nos facilita el acceso al contenido
XML de las plantillas de Tile para poder personalizar dicho contenido.

En el método Run de la Task ejecutaremos ambos métodos:

public void Run(IBackgroundTaskInstance taskInstance)
{
     ShowNotification();
     UpdateTileStatus();
}

Una vez terminada nuestra Task debemos añadir la referencia a la misma de nuestro proyecto Windows Phone. Clic derecho, opción “Add references”:

Tras añadir la referencia al componente WinRT debemos realizar algunos cambios en el archivo Package.appxmanifiest. Nos dirigimos a la pestaña “Capabilites”. Añadimos una nueva capacidad de tipo Update Task:

En las propiedades de la capacidad debemos definir la propiedad Entry Point, es decir, el nombre completo de la clase de nuestra background task incluido namespace:

Y todo listo!

NOTA: Para que nuestro ejemplo funcione en su
totalidad antes de abandonar el archivo de manifiesto debemos activar la
capacidad de notificaciones Toast en nuestra aplicación.

Probando el Update Task

Es hora de verificar que todo funciona correctamente. Tras lanzar
nuestra aplicación al menos una vez, podemos simular una actualización
de la aplicación modificando la versión de la misma en el archivo Package.appxmanifiest.

Tras ejecutar la aplicación:

Recibiremos una notificación Toast indicandonos la nueva versión además de haber sido actualizado el Tile de la aplicación.

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

Más información

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *