Cosas a tener en cuenta al subir apps en el nuevo App Hub…

El día 18 de Julio se publicó una gran actualización del App Hub para subir aplicaciones para Windows Phone 7. Además del cambio estético a nivel completo se han realizado algunas modificaciones en el proceso de envío de aplicaciones que es importante tener en cuenta. Si has enviado alguna aplicación de forma reciente te habrás dado cuenta de ello.

  • Selección del nombre de la aplicación: Ahora ya no existe la opción de modificar el nombre de la aplicación durante el proceso de envío. El nombre es seleccionado directamente del .xap que envías. Si quieres tener diferentes nombres según el idioma de la aplicación será necesario localizar la aplicación
  • Idioma de la aplicación: Ahora es necesario seleccionar de forma explícita el idioma de la aplicación en sus propiedades. Si quieres subir una aplicación en un idioma solo; por ejemplo, en español, será necesario que lo indiques porque si no detectará también el Inglés Internacional. Puedes encontrar más información en esta entrada de los foros.
  • Subida conjunta de imágenes: Por fin es posible enviar todas las imágenes de golpe sin tener que subir una a una. Únicamente tendrás que navegar hasta el directorio y seleccionarlas todas.

Puedes encontra la información de cómo hacerlo con más detalle en la entrada del blog de Mike Francis que la he encontrado mientras buscaba por qué me sucedía lo que indicaba en el primer y segundo punto.

Compartiendo circuitos de forma fácil…

Además de la programación otro de los intereses que tengo es la electrónica, aunque debido a los costes asociados a la necesidad de materiales y herramientas no he trasteado tanto con ella como me gustaría.

En alguna de las asignaturas de la carrera, como los laboratorios de circuitos electrónicos o de electrónica básica y componentes, muchas veces tienes que compartir los esquemáticos del circuito que has hecho con tu compañero de equipo u otros compañeros. Si todos usan la misma versión del programa o los mismos tipos de ficheros no hay problema en compartirlos; sin embargo, si esto no es así, se hace bastante difícil.

Alguna de las formas de compartir los documentos son los que comentan en el por qué de CircuitBee , un nuevo proyecto que permite compartir de forma sencilla tus circuitos con el resto de la gente. Por ahora está en las primeras versiones, pero tiene muy buena pinta.

Podéis probarlo en CircuitBee o directamente aquí:

Modificar la navegación inicial en Windows Phone 7…

Es posible que en alguna de las aplicaciones que desarrolles para Windows Phone 7 tengas que modificar la navegación inicial dependiendo de algún parámetro; por ejemplo, algo común es que si el usuario no ha iniciado sesión se le envíe a la página de login y si ya lo ha hecho, se envíe directamente a la página principal de la aplicación.

Buscando la mejor forma de hacerlo, o mejor dicho, la que funcionara ya que la aproximación que estaba realizando no era válida, encontré el post de Peter Torr que propone dos soluciones para controlar esta situación.

Cualquiera de los dos métodos funciona para lograr lo que se desea; sin embargo, es importante tener en cuanta algunos detalles:

  • Si posteriormente quieres emplear el NavigationService para moverte entre páginas tienes que tener en cuenta que ese código se ejecutará provocándote errores. Si solo deseas que eso se evalúe la primera vez, lo mejor es que te desuscribas del evento para evitar que vuelva a ser llamado cada vez que hagas uso de los servicios de navegación.
  • Si estás con Windows Phone 7, la vista de login se quedará en el stack de navegación. Si el usuario pulsa el botón atrás le volverá a aparecer dicha vista. Por lo tanto, es recomendable utilizar la aproximación de un elemento que se coloque por encima de la vista principal y controlar su visibilidad.
  • Si por el contrario, estás con Windows Phone 7.1, parece que Microsoft ha oído las quejas de la gente por los foros añadiendo la posibilidad de eliminar una entrada del stack de navegación con el método NavigationService.RemoveBackEntry

Así que tened en cuenta estas situaciones para evitar modificar el código que ya estaba escrito y funcionando.

Aplicaciones web en Windows Phone 7…

Las formas más habituales de desarrollar aplicaciones para Windows Phone 7 es haciendo uso de los dos frameworks disponibles en la plataforma: Silverlight y XNA. Sin embargo, no es la única posibilidad que existe.

Dentro de Silverlight tenemos disponible el control WebBrowser que podemos emplear para mostrar información directamente desde Internet o, aún más interesante, emplearlo para mostrar contenido estático o dinámico dentro del teléfono. Esto abre la posibilidad de realizar aplicaciones basadas en HTML + CSS + JavaScript pudiendo reutilizar código para generar aplicaciones para las tres plataformas móviles que mayor presencia tienen actualmente.

En el blog del equipo de desarrollo de Windows Phone 7 se han publicado recientemente dos artículos bastante relacionados con este aspecto que son interesantes de leer:

Sin embargo, el estar dentro del navegador nos limita un poco la funcionalidad de nuestra aplicación. Por ejemplo, ¿cómo controlamos la navegación? ¿cómo utilizamos las funciones del teléfono como reproducir audio? Poco a poco os lo iré mostrando.

Microsoft, otra forma de ver la vida…

En las últimas semanas han ido apareciendo vídeos procedentes de Microsoft donde se muestra cómo se integran los diferentes productos que tienen en nuestro día a día. Es una campaña de publicidad muy trabajada, con muy buena calidad artística que merece la pena disfrutar de ella.

Hasta ahora, han aparecido los siguientes tres vídeos. En ellos se puede ver cómo Windows 7, Windows Phone y Windows Live nos facilitan nuestro trabajo en el día al día mostrándonos cómo podemos compartir la información de una forma rápida y sencilla. Por otra parte, también se muestran las posibilidad de ocio de estas plataformas junto con Kinect y Xbox 360.

Aquí os los dejo:

– The making of a song: Andrew Belle

– Road trip to Mt. Hood

– The making of a flash mob

¿Conoces alguna otra campaña de marketing que sea recomendable ver?

Friend Assemblies, accediendo a un assembly desde otro…

Imagina que estás desarrollando un proyecto basado en pruebas y necesitas acceder a elementos internos de otro ensamblado, ¿cómo lo haces?

Una posibilidad es declarar todo aquello a lo que necesitas acceder de caracter público y así ya tienes acceso desde tu ensamblado de pruebas; sin embargo, hay un problema ya que no solo puedes acceder tú sino que estás dejándolo visible a cualquier otro ensamblado.

La otra es emplear el atributo InternalsVisibleTo definido en el namespace System.Runtime.CompilerServices. Cuando compilamos uno de nuestros ensamblados es posiblie definir qué otros ensamblados son considerados amigos dándole permiso para acceder a todos los miembros internos que se encuentren definidos de la misma forma que si se encontrara dentro del mismo namespace.

Su funcionamiento es sencillo, únicamente tendremos que añadir en la cabecera de nuestra clase el siguiente código:

[assembly: InternalsVisibleTo("Otro.Ensamblado.Tests")]

y podremos trabajar desde el ensamblado “Otro.Ensamblado.Tests” con los métodos y propiedades declaradas como internas sin tener que cambiarles su visibilidad a públicas.

¿Cómo rellenar el formulario W8 para cobrar en el Marketplace de WP7?

Hay un gran número de desarrolladores que se están volviendo un poco locos a la hora de conseguir validar correctamente el formulario W8 para poder obtener los beneficios fiscales a la hora de recibir el pago por sus aplicaciones en el Marketplace.

Si hace unos días Javi nos daba unas pautas de cómo podemos rellenar dicho formulario de forma correcta, Microsoft ha abierto un nuevo proceso que nos puede facilitar aún más el proceso: la validación del formulario vía e-mail antes de enviarlo.

Si queréis hacerlo, aquí tenéis los pasos:

  1. Escanear el documento y enviarlo a la dirección de correo mplcomm@microsoft.com.
  2. Tu formulario será validado en un tiempo estimado de siete días laborales
  3. Los formularios sólo serán validados una única vez
  4. Es necesario enviar una copia escrita por correo postal a la siguiente dirección para que los pagos puedan efectuarse correctamente.

    Microsoft – Windows Marketplace for Mobile
    Attn: Finance Department
    29011 Commerce Center Drive
    Valencia, CA 91355
    USA

Suerte con vuestras aplicaciones! :)

Nuevas aplicaciones en el Marketplace…

Durante Navidades, estuve realizando unas pruebas rápidas de cómo funcionaba el control MutiScaleImage de Silverlight dentro de la plataforma Windows Phone 7. Ya había jugado con la tecnología DeepZoom que hay por detrás con el pivot de la PartyQuijote y quería comprobar el funcionamiento en el teléfono.

Una de las utilidades que encontré fue la de visualizar un mapa de información de la red de metro y de ahí surgieron las dos aplicaciones sencillas que ahora mismo están disponibles para su descargada desde el Marketplace: “Madrid Metro Map” y “Barcelona Metro Map“.

El resultado visualmente es muy agradable pero falta mucha mejoría por detrás para que sean de verdad unas aplicaciones prácticas. Ya he recibido recomendaciones de que cree un sistema de recomendación de rutas o incluya información de los horarios de los trenes. Lo que no me gustó es que no sea posible que las imágenes se carguen desde el dispositivo, lo que obliga a que para poder consultar el mapa tengas que emplear una conexión a Internet para que descargue los tiles. Esperemos que en alguna actualización esto sea modificado…

Navegando entre páginas en Windows Phone 7…

Una de las preguntas más repetidas en los foros de desarrollo de Windows Phone 7 es la forma de navegar entre páginas por nuestras aplicaciones. Vamos a ver lo sencillo que es en el siguiente ejemplo:

Imaginemos que tenemos dos páginas en nuestra aplicación, una que fuera la MainPage.xaml y otra SecondPage.xaml. Si queremos ir de la primera a la segunda, podemos hacer uso de un HyperlinkButton y de su evento click introduciendo en su manejador el siguiente código.

private void hyperlinkButton1_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));
        }

¿Y si queremos volver hacia atrás? ¿Es posible hacerlo? Sí, podemos hacer uso del método GoBack incluido en la clase NavigationService y establecer un vínculo de vuelta a la primera página.

private void hyperlinkButton2_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.GoBack();
        }

La propiedad NavigationService da acceso al servicio de navegación del framework de Silverlight. Además de lo aquí expuesto, existen otras utilidades como el paso de parámetros por URL que comentaré en otra entrada. Podéis echarle un ojo en la página de MSDN.

Bases de datos para Windows Phone 7…

Uno de las principales cosas que se echan en falta a la hora de desarrollar nuestras aplicaciones para Windows Phone 7, es la falta de una base de datos integrada que nos permita almacenar nuestra información de forma local sin necesidad de depender constantemente del acceso a Internet del teléfono.

Probablemente en algún momento saquen algún motor integrado en la plataforma, mientras tanto están disponibles los siguientes proyectos que os pueden ayudar.

  • Sterling: es una base de datos con soporte LINQ to Objects que sirve tanto para tus aplicaciones en Silverlight de navegador como las de Windows Phone 7. Entre las ventajas que anuncian son su flexibilidad, su portabilidad, su poco peso y su forma no intrusiva de almacenamiento de la información. Aún se encuentra en beta, por lo que “Use at your own risk” como ellos mismos señalan. Si quieres empezar con Windows Phone 7 te puede ser útil esta guía de incio
  • Windows Phone 7 DataBase: otro proyecto de Codeplex que ofrece soporte de tablas con un número cualquiera de columna. Incluye soporte para el cifrado de la información con clave y lazy loading. Su desarrollo parece un poco menos activo que el de Sterling.
  • SQLite para Windows Phone 7: este proyecto de Dan Ardelean se trata de una migración de csharp-sqlite para que funcione sobre Isolated Storage. En el enlace podéis encontrar la aplicación de prueba que desarrolló y el código que os puede resultar útil si queréis hacer uso de ella.

Esperemos que no tarden mucho en incluir dentro de la plataforma algo mejor que trabajar con el IsolatedStorage directamente y nos quitemos la necesidad de usar librerías externas.