Compartir a través de


Windows Phone

Actualización de aplicaciones de Windows Phone 7.1 a Windows Phone 8

Michael Crump

Mientras que algunos desarrolladores ya actualizaron sus proyectos de Windows Phone 7.1 a Windows Phone 8 para sacar partido de las características nuevas, otros todavía no entienden bien los requisitos de actualización y qué herramientas y características adicionales debieran usar. En este artículo mostraré que pasar de Windows Phone 7.1 a Windows Phone 8 es más sencillo de lo que parece. 

Plantillas nuevas

Antes de ver las plantillas, pregúntese cuáles son los problemas reales que va a solucionar con la actualización. Los desarrolladores de juegos, que trabajan principalmente con XNA, probablemente desearán cambiar a Direct3D, puesto que Microsoft dejó de desarrollar XNA en forma activa. Todavía existe la opción para crear aplicaciones XNA, pero no esta permite aprovechar las características nuevas de Windows 8.

Además, los desarrolladores web nativos finalmente tienen la oportunidad de ser parte de la acción, puesto que Internet Explorer 10 ahora viene instalado en el teléfono. Sin embargo, aparte del desarrollo web y de juegos, Windows Phone 8 contiene una amplia gama de características nuevas para los desarrolladores en XAML/C# y Visual Basic.

Estas son la nuevas plantillas que se incluyen en el SDK de Windows Phone 8:

  • Aplicación XAML y Direct3D para Windows Phone: este proyecto permite crear aplicaciones administradas para Windows Phone con componentes nativos. Al iniciarlo, observará que contiene dos proyectos: un proyecto de Windows Phone 8 y un componente de Windows en tiempo de ejecución (WinRT) en C++.
  • Aplicación HTML5 para Windows Phone: este proyecto permite crear aplicaciones de Windows Phone que usan principalmente contenidos HTML. Esta plantilla habitualmente se confunde con la versión para Windows Phone de la Biblioteca de Windows para JavaScript (WinJS), aunque no es lo mismo. Simplemente usa un control WebBrowser para mostrar contenidos HTML5.
  • Prueba unitaria para Windows Phone: este proyecto contiene pruebas unitarias que sirven para probar aplicaciones de Windows Phone. Esta plantilla se agrega después de que se instala Windows Studio Update 2 RTM. 

Actualización de un proyecto existente

Es cierto, las nuevas plantillas de proyecto son de gran ayuda para el desarrollo de aplicaciones nuevas, pero ¿qué pasa con las aplicaciones existentes basadas en XAML creadas con Windows Phone 7.1? Lo bueno es que puede actualizar dichas aplicaciones a Windows Phone 8 al hacer clic simplemente en el proyecto de Windows Phone 7.1 en Visual Studio 2012 y seleccionar Actualizar a Windows Phone 8. Aparecerá un aviso que le advertirá que esta actualización no se puede deshacer y que no se actualizarán los proyectos a los que se hace referencia. Asegúrese de crear una copia de seguridad de su aplicación antes de continuar. También puede actualizar a Windows Phone 8 al seleccionar Propiedades de proyecto, hacer clic luego en la página Aplicación, seleccionar Windows Phone 8 de la lista desplegable y, finalmente, guardar sus cambios.

Además, si todavía tiene un proyecto de Windows Phone 7, aparecerá un aviso que le indicará que debe actualizarlo a Windows Phone 7.1 antes de actualizarlo a Windows Phone 8. Reitero mi recomendación de crear una copia de seguridad antes de continuar.

Después de actualizar su aplicación a Windows Phone 8, podrá usar las nuevas herramientas y características del SDK. Ahora echaré una mirada a las nuevas opciones del emulador que se encuentran en Windows Phone 8.

Opciones nuevas del emulador

En Windows Phone 7.1 solo se pueden implementar dos tipos de emuladores con un tamaño de pantalla de 400 × 800 (WVGA). La única diferencia en las imágenes del emulador es la cantidad de RAM (512 MB o 256 MB). Windows Phone 8 agregó dos tamaños de pantalla nuevos: 768 × 1280 (WXGA) y 720 × 1280 (720p). También tiene la opción de descargar la actualización del SDK de Windows Phone para Windows Phone 7.8 (bit.ly/10pauq4) para agregar emuladores adicionales para probar cómo se ejecutarán las aplicaciones en los dispositivos con Windows Phone 7.8. Dado que la plantilla de aplicación XAML y XNA de Windows Phone está orientada al sistema operativo Windows Phone 7.1, todavía puede probar su aplicación en un emulador de Windows Phone 8. Puede ver una lista de todos los emuladores antiguos y nuevos disponibles en la Figura 1.

Emulator Options in Windows Phone 8
Figura 1 Emuladores disponibles en Windows Phone 8

Gracias a la disponibilidad de los diferentes emuladores, ya no tendrá que poseer hardware físico para ejecutar su aplicación en los numerosos dispositivos con Windows Phone 7 y 8 existentes en el mercado. Los nuevos emuladores de Windows Phone 8 son máquinas virtuales (VM) genuinas y son una de las mejoras más importantes realizadas al SDK. 

Nota: para los emuladores nuevos necesitará Hyper-V, el cual solo está disponible en Windows 8 Pro y Enterprise. Para obtener más información, consulte la página del centro de desarrollo de Windows Phone “Requisitos de sistema para el emulador de Windows Phone” en bit.ly/QWhAA2.

Tenga en cuenta que, considerando el poder de los procesadores de PC modernos, debiera probar su aplicación en un dispositivo físico antes de enviarlo a Marketplace, para medir su rendimiento real.

Ahora que pudo apreciar la manera en la que las nuevas plantillas pueden beneficiar a los distintos tipos de desarrolladores y que conoció las nuevas opciones del emulador y lo sencillo que es actualizar un proyecto existente a Windows Phone 8, llegó la hora de abordar otros problemas importantes que han enfrentado los desarrolladores de Windows Phone 7.

Panel de simulación

Cuando se ejecuta una aplicación de Windows Phone, hay varias cosas que pueden interrumpir la experiencia de usuario: velocidad de respuesta lenta, falta de acceso a Internet, recordatorios de llamadas entrantes, errores para restaurar el estado de la aplicación después de que se bloquee el teléfono, entre otras. En Windows Phone 7.1, probablemente debería haber escrito código para simular estas situaciones. Ahora puede controlarlas con el nuevo panel de simulación, tal como se indica en la Figura 2.

The Simulation Dashboard Included in the Windows Phone 8 SDK
Figura 2 Panel de simulación que se incluye en el SDK de Windows Phone 8

Puede acceder a este menú al seleccionar Herramientas | Panel de simulación en Visual Studio 2012. Al usar el panel de simulación puede poner a prueba el desempeño de su aplicación en distintas circunstancias antes de enviarla a Marketplace.

Al habilitar la Simulación de red y seleccionar una velocidad de red, puede probar varias redes de datos de telefonía móvil, Wi-Fi o circunstancias en las que no hay redes disponibles. Las opciones de intensidad de señal son especialmente interesantes, las cuales afectan la tasa de pérdida de paquetes y la latencia de red. Con estas opciones al alcance de la mano, podrá crear una aplicación de Windows Phone 8 que funcione bien en una gran variedad de situaciones.

Cualquier aplicación que esté destinada a Windows Phone 7.1 u 8 se desactiva una vez que se activa la pantalla de bloqueo. Luego se vuelve a activar en cuanto se desbloquea el dispositivo. Dentro del panel de simulación, tiene la posibilidad de bloquear o desbloquear fácilmente la pantalla para probar lo que pasa con su aplicación frente a la activación y desactivación. Opcionalmente puede presionar la tecla F12 para mostrar la pantalla de bloqueo.

Para terminar, podrá usar “accionar recordatorios”, lo que simulará una alarma, recordatorio, llamada telefónica, mensaje de texto o notificación del sistema. Nuevamente, esto le permitirá poner a prueba su aplicación frente a la activación o desactivación.

Análisis de aplicaciones para Windows Phone

Si bien el panel de simulación es útil para poner a prueba situaciones reales que pudiesen presentarse a un usuario una vez que la aplicación se ejecuta en su teléfono, no sirve para evaluar el rendimiento de la aplicación. Aquí puede aprovechar el análisis de aplicación para Windows Phone, que se encuentra en el menú Depurar | Iniciar análisis de aplicación Windows Phone.

Esta herramienta otorga una supervisión de la aplicación, lo que sirve para evaluar el tiempo de inicio y la capacidad de respuesta, además de la creación de perfiles. Esto le ayudará a evaluar problemas de ejecución o de memoria en su aplicación. La opción de generación de perfiles incluye opciones de configuración avanzadas que permiten, por ejemplo, crear perfiles visuales y tomar muestras de código, mientras que las opciones de memoria permiten recopilar pilas de asignación de memoria y referencias de objetos. Ambas opciones crearán un gráfico que se muestra en Visual Studio 2012, además de un archivo .sap con marcas de tiempo que se agregará al proyecto. Con los gráficos generados puede recuperar información relativa a horas específicas de inicio y término y ver el resumen de observación que generó Visual Studio 2012. La herramienta de Análisis de aplicación de Windows Phone es una parte integral del proceso de control de calidad.

Kit de prueba de la tienda

Después de poner a prueba a la aplicación en distintas situaciones de usuarios y de analizar su rendimiento con la ayuda del kit de Análisis de aplicación de Windows Phone, deberá constatar si la aplicación puede recibir la certificación de la Tienda de Windows Phone. Este es un paso vital. Si invierte 30 minutos ahora puede ahorrar varios días si la aplicación presenta un error detectable con el kit.

Puede obtener acceso fácilmente a este kit al hacer clic con el botón secundario en la aplicación y seleccionar Abrir kit de pruebas de Tienda. Windows Phone 7.1 también contaba con esta funcionalidad, pero se denominaba Kit de prueba de Marketplace. Se agregaron pruebas nuevas y mejoradas destinadas a Windows Phone 8.

Después de iniciarlo, verá un mensaje con un fondo azul en la parte inferior de la pantalla que indica que “Se han actualizado los casos de prueba de Tienda. ¿Deseas instalar los casos de prueba actualizados?” Puede seleccionar Actualizar y descargar pruebas nuevas o modificadas. Esto resulta útil debido a que siempre sabrá que está trabajando con las pruebas más recientes disponibles.

A la izquierda de su pantalla verá tres pestañas: Detalles de la aplicación, Pruebas automatizadas y Pruebas manuales. Los Detalles de aplicación permiten que los recursos de imágenes adhieran a las directrices de la Tienda de Windows Phone. Esto incluye el icono Tienda, además de las capturas de pantalla de la aplicación para WVGA, WXGA y 720p, si su proyecto es compatible con estas resoluciones. Las pruebas automatizadas comprueban los requisitos, la iconografía y las capturas de pantalla de los paquetes XAP. Todo lo que tiene que hacer es invocar esta característica con el botón Ejecutar prueba. La pestaña final contiene pruebas manuales. En el momento de escribir este artículo, existen 61 pruebas manuales posibles. Debe indicar manualmente si se aprobó la prueba o no, pero la documentación completa explica claramente cómo hacerlo. Las pruebas manuales incluyen pruebas orientadas a la compatibilidad con varios dispositivos, el cierre de la aplicación, la capacidad de respuesta, etcétera.

Localización, ahora más fácil

Con Windows Phone 7, muchos desarrolladores de aplicaciones se perdieron la oportunidad de localizar sus aplicaciones. Esto se debió frecuentemente a que contaban con poca o ninguna ayuda para traducir los contenidos de un idioma a otro. El reciente lanzamiento del Kit de herramientas para aplicaciones multilingües y las nuevas plantillas de proyecto solucionaron este problema.

La plantilla predeterminada de Windows Phone 8 lo orientará en el proceso de localización con comentarios integrados en el archivo MainPage.xaml y además estructura la aplicación con una clase auxiliar y una carpeta de recursos. Microsoft agregó el Kit de herramientas para aplicaciones multilingües que originalmente se creó para Windows 8. Después de instalar el Kit de herramientas para aplicaciones multilingües para Visual Studio 2012 (bit.ly/NgggGU), solo tiene que seleccionar Herramientas | Habilitar Kit de herramientas para aplicaciones multilingües. Una vez que el kit de herramientas se habilitó en su proyecto, seleccione Proyecto | Agregar idiomas de traducción para ver los idiomas disponibles, tal como se muestra en la Figura 3.

The Translation Languages Dialog Included with the Multilingual App Toolkit
Figura 3 El cuadro de diálogo de idiomas de traducción que se incluyen en el Kit de herramientas para aplicaciones multilingües

Puede filtrar el idioma que quiere y presionar el botón Aceptar. Se agregarán automáticamente los archivos del idioma en su carpeta de recursos. Un archivo en específico al que deberá prestar atención es el que tiene la extensión .xlf. Este es un archivo en el Formato de archivo de intercambio de localización en XML (XLIFF), el estándar corriente en la industria y que brinda un control detallado sobre cualquier seudotraducción. Si hace doble clic en este, se abrirá el editor multilingüe, que le permitirá traducir de un idioma a otro con solo hacer doble clic en el botón Traducir. Puede ver un ejemplo en la Figura 4.

Translating from One Language to Another 
 Figura 4 Traducción de un idioma a otro

En la Figura 4 verá que se tradujeron automáticamente varias palabras. Después de completar la traducción, puede cerrar la sesión o entregársela a un traductor humano para que la revise. En este ejemplo, las únicas palabras que necesitaron revisión fueron “MEINE TELERIK APP”, puesto que la palabra “Telerik” no formaba parte del recurso de traducción. El traductor humano se daría cuenta que Telerik se escribe igual en alemán que en inglés, de manera que se puede dejar tal como está. Puede guardar este archivo para obtener disponer de un idioma adicional.

Una manera más sencilla para probar esto es cambiar el título de la aplicación en MainPage.xaml con la siguiente línea:

<TextBlock Text="{Binding Path=LocalizedResources.ApplicationTitle,
  Source={StaticResource LocalizedStrings}}"
  Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>

Después, configure el idioma del teléfono al idioma que haya especificado. En mi ejemplo, seleccioné alemán y el título de la aplicación apareció como “MEINE TELERIK APP”. 

Aprovechar el núcleo compartido

Con el lanzamiento de Windows 8 emergió un núcleo compartido que podían usar los desarrolladores de Windows 8. Algunas de las mejoras más significativas de Microsoft .NET Framework 4.5 son la compatibilidad con async y await, además de una forma más sencilla para usar el almacenamiento aislado.

En Windows Phone 7.1, lo habitual sería escribir el código que se muestra en la Figura 5 para escribir un archivo en el almacenamiento aislado.

Figura 5 Escritura de un archivo en el almacenamiento aislado en Windows Phone 7.1

private void WriteFileToIsolatedStorage(string fileName, 
  string fileContent)
{
  using (IsolatedStorageFile isolatedStorageFile =
    IsolatedStorageFile.GetUserStoreForApplication())
  {
    using (IsolatedStorageFileStream isolatedStorageFileStream =
      isolatedStorageFile.CreateFile(fileName))
    {
      using (StreamWriter streamWriter =
        new StreamWriter(isolatedStorageFileStream))
      {
        streamWriter.Write(fileContent);
      }
    }
  }
}

El código de la Figura 5 usa el espacio de nombres System.IO.IsolatedStorage que no está disponible en Windows 8. En lugar de esto, Windows 8 y Windows Phone 8 pueden usar Windows.Storage y el patrón async/await para evitar atascamientos en el rendimiento y mejorar la capacidad de respuesta general de la aplicación. Este es un ejemplo de cómo escribir exactamente la misma llamada en Windows Phone 8, aprovechando el núcleo compartido:

public async Task WriteFileToIsolatedStorage(
  string fileName, string fileContent)
{
  IStorageFolder applicationFolder = 
    ApplicationData.Current.LocalFolder;
  IStorageFile storageFile = await applicationFolder.CreateFileAsync(
    fileName, CreationCollisionOption.ReplaceExisting);
  using (Stream stream = await storageFile.OpenStreamForWriteAsync())
  {
    byte[] content = Encoding.UTF8.GetBytes(fileContent);
    await stream.WriteAsync(content, 0, content.Length);
  }
}

Otro espacio de nombres que se emplea mucho en Windows 8 es HttpClient. Si bien el SDK de Windows Phone 8 sigue usando la clase WebClient en forma predeterminada, Microsoft proporcionó la clase HttpClient a través de NuGet. Con tan solo buscar “Microsoft.Net.Http” e instalar el paquete de NuGet, podrá escribir código como el siguiente fragmento, que funcionará tanto en Windows 8 como en Windows Phone 8:

private async void Button_Click(object sender, RoutedEventArgs e)
{
  var httpClient = new HttpClient();
  var request = await httpClient.GetAsync(new Uri(
    "https://www.microsoft.com/", UriKind.RelativeOrAbsolute));
  var txt = await request.Content.ReadAsStringAsync();
  // Do something with txt, such as MessageBox.Show(txt)
}

Nuevas características cruciales

Hasta ahora he analizado una variedad de modos que pueden ayudarle a llevar a cabo la transición a Windows Phone 8 en forma más sencilla. Ahora echaré una mirada a varias características nuevas totalmente indispensables para su aplicación.

Nuevos tipos de iconos Windows Phone 7.1 cuenta con un tipo de icono, denominado icono invertible, y un tamaño de mosaico de 173 × 173 píxeles, conocido también como icono mediano. Windows Phone 8 presenta algunos tipos y tamaños de iconos nuevos:

  • Icono invertible: este es idéntico al de Windows Phone 7.1, con la excepción de los nuevos tamaños. muestra el anverso y el reverso.
  • Icono icónico: este está inspirado principalmente en los principios de diseño de Windows Phone, para proporcionar una apariencia moderna.
  • Icono cíclico: este permite mostrar secuencias de hasta nueve imágenes.

En la Figura 6 se muestra una comparación de los tamaños de los iconos.

Figura 6 Comparación del tamaño de imagen entre los diferentes tipos de iconos

Tamaño del icono Tamaño de invertible y cíclico (píxeles) Tamaño icónico (píxeles)
Pequeño 159 × 159 110 × 110
Mediano 336 × 336 202 × 202
Ancho 691 × 336 No disponible

Los iconos se pueden configurar fácilmente con el archivo WMAppManifest.xml al seleccionar “Plantilla de mosaico” y, luego, al añadir las imágenes correctas. También puede configurar esto con código subyacente; encontrará una “Plantilla de icono invertible para Windows Phone 8” en el Centro de desarrollo (bit.ly/10pavKC).

Pantalla de bloqueo y notificaciones En Windows Phone 7.1, solo puede ver notificaciones como correos, mensajes de texto y llamadas telefónicas. Ahora sus usuarios pueden usar su aplicación como un proveedor de imágenes de fondo de pantalla de bloqueo y agregar notificaciones personalizadas similares a las que describieron antes. Configurar la imagen de fondo es tan sencillo como agregar una imagen en la carpeta con el tipo de contenido y actualizar el archivo app manifest para declarar la aplicación como un proveedor de fondos. Haga clic con el botón secundario en el archivo WMAppManifest.xml, seleccione “Abrir con” y seleccione Editor (de texto) XML, luego agregue esta extensión:

<Extensions>
  <Extension ExtensionName="LockScreen_Background"
    ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" />
</Extensions>

A continuación, llame el fragmento de código que se muestra en la Figura 7.

Figura 7 Configuración de la imagen de fondo de pantalla de bloqueo del teléfono

private async void btnLockScreenImage_Click_1(
  object sender, RoutedEventArgs e)
{
  if (!LockScreenManager.IsProvidedByCurrentApplication)
  {
    await LockScreenManager.RequestAccessAsync();
  }
  if (LockScreenManager.IsProvidedByCurrentApplication)
  {
    Uri imageUri=new Uri(
      "ms-appx:///LockScreen.jpg", UriKind.RelativeOrAbsolute);
    Windows.Phone.System.UserProfile.LockScreen.SetImageUri(imageUri);
  }
}

Verá que comenzará a revisar primero si el usuario tiene acceso para cambiar el fondo. Si no lo tiene, se presentará una interfaz gráfica de usuario que le pedirá permiso, después creará un identificador URI con la ruta a la imagen y usará el espacio de nombres Windows.Phone.System.UserProfile.LockScreen para configurarlo.

También puede agregar una notificación para mostrar un icono y un recuento (de mensajes, llamadas, etc.) en el área de notificación del dispositivo Windows Phone 8. Para obtener más información, consulte el artículo “Notificaciones de pantalla de bloqueo para Windows Phone 8” en bit.ly/QhyXyR.

Voz Una de las características nuevas más apasionantes es la voz. El SDK de Windows Phone 8 incluye varios componentes de voz:

  • Texto a voz (denominado también síntesis de voz): permite leer en voz alta el texto al usuario a través del altavoz, los audífonos o la conexión Bluetooth del teléfono.
  • Voz a texto (denominado también reconocimiento de voz): permite que el usuario emplee comandos hablados en el teléfono para realizar diferentes tareas.
  • Comandos de voz: permite que los usuarios digan comandos de voz fuera de la aplicación al mantener presionado el botón Inicio y decir “abrir” o “iniciar”, seguido del nombre de la aplicación, para realizar ciertas tareas.

Todo esto es posible gracias a las API Speech.Synthesis y Speech.Recognition. Una implementación simple de la función de texto a voz se puede realizar con dos líneas de código en un controlador de eventos:

private async void Button_Click(object sender, RoutedEventArgs e)
{
  SpeechSynthesizer synth = new SpeechSynthesizer();
  await synth.SpeakTextAsync("The latest MSDN issue has arrived!");
}

Simplemente debe recordar de agregar los operadores async y await al método.

Sacar el máximo provecho del cambio

Analicé todo, desde las nuevas herramientas y plantillas hasta algunas de las características nuevas del SDK de Windows Phone 8. Mostré lo fácil que es implementar la localización y describí el beneficio adicional de una base de código compartida con Windows 8. Ahora cuenta con los conocimientos necesarios para sacar el máximo provecho de su migración de Windows Phone 7 a Windows Phone 8.

Michael Crump es un MVP de Microsoft, miembro destacado de INETA y autor de varios libros electrónicos sobre .NET Framework. Trabaja en Telerik, donde se especializa en el conjunto de control de XAML. Puede comunicarse con él en Twitter en twitter.com/mbcrump o mantenerse al día en su blog al visitar michaelcrump.net.

Gracias a los siguientes expertos técnicos por su ayuda en la revisión de este artículo: Jeff Blankenburg (Microsoft) y Lance McCarthy (Telerik)
Jeff Blankenburg (Jeffrey.Blankenburg@microsoft.com) es evangelizador desarrollador en Microsoft, coautor del libro Migrating to Windows Phone (Apress, 2011) y organizador de varios congresos de tecnología.

Lance McCarthy es un embajador de Nokia y especialista en XAML en Telerik.