Interpretar fechas independientemente del idioma del teléfono

Posted: noviembre 28, 2011 by Jose Antonio Gallego in Tips, Windows Phone

Esto es un mini tip para ahorrar tiempo, a la hora de trabajar con fechas aunque nuestra aplicación vaya en Español de España UNICA Y EXCLUSIVAMENTE al desplegar en el teléfono si este esta en ingles y nos da por trabajar con conversores de fechas nos vamos a encontrar fijo con algún InvalidCastException, independientemente de que trabajemos con Convert.ToDateTime, DateTime.Parse o DateTimeParseExact, ya que el Culture.CurrentUICulture nos va a retornar nuestra aplicación en caso de estar en ingles será por ejemplo en-US, por lo que no intepretará bien la fecha dando una excepción.

Para asegurarnos al convertir nuestras fechas, podemos utilizar el siguiente método:

string[] supportedFormats = new string[] {"dd/MM/yyyy" };
string miFecha = "24/11/2011";
CultureInfo cultureInfo = new System.Globalization.CultureInfo("es-Es");
DateTime dtime = DateTime.ParseExact(miFecha, supportedFormats, cultureInfo, DateTimeStyles.None); 

 

Y listo, de este modo todas las fechas (que vengan en Castellano) se interpretaran de modo correcto este el teléfono el idioma que sea.

Curso on-line Introducción a XNA para Windows Phone

Posted: noviembre 24, 2011 by Jose Antonio Gallego in Artículos, Tips, Videos, Windows Phone

Ya esta disponible en el centro de desarrolladores de Windows Phone el curso on-line de introducción al desarrollo con XNA para Windows Phone.

En este curso podréis aprender desde Cero como desarrollar juegos desde el 2D al 3D y como integrar todo esto con Silverlight para Windows Phone.

Este curso es para sentar las bases a aquellos que quieran aprender como desarrollar juegos y para comprender mejor todo el contenido que podéis encontrar en el App Hub de desarrolladores de Windows Phone.

Aquí os dejo el temario:

Sección Introducción

  • Modulo 1 Introducción a
  • Módulo 1:Introducción al desarrollo de videojuegos con XNA para Windows Phone
  • Módulo 2:Bazar de juegos, XBOX Live y publicación de juegos
  • Módudulo 3:Comenzando el desarrollo de un juego con XNA.

Sección XNA 2D

  • Módulo 4: Añadiendo contenidos al Content Pipeline
  • Módulo 5: Trabajando con texturas en XNA
  • Módulo 6: Controlando la entrada de usuario
  • Módulo 7: Control de colisiones en 2D
  • Módulo 8: Animaciones en 2D

Sección XNA 3D

  • Módulo 9: El espacio 3D en XNA
  • Módulo 10: Trabajando con Modelos 3D
  • Módulo 11: Efectos 3D de XNA en Windows Phone
  • Módulo 12: Control de colisiones 3D
  • Módulo 13: Optimización y rendimiento en 3D

Sección Extendiendo XNA en Windows Phone (miscelanea)

  • Módulo 14: Multimedia (sonidos y efectos
  • Módulo 15: Persistencia de datos
  • Módulo 16: XNA y Silverlight en MANGO
  • Módulo 17: Herramientas y recursos para XNA

Podéis encontrar todos los contenidos AQUÍ.

Ale a darle a la tecla :-)

SORTEO de NOKIAS Lumia 800 Windows Phone

Posted: noviembre 24, 2011 by Jose Antonio Gallego in Uncategorized

Atentos a este pedazo de trozo de cacho de cosa de SORTEO del nuevo Nokia Lumia 800 cortesía de Microsoft Ibérica.

Y es que gracias a Microsoft y solo por publicar una aplicación dentro del periodo del concurso podemos acceder a participar y conseguir GRATIS un teléfono NOKIA Lumia 800, solo tenéis que ver lo que dice Josue Yeray el crack que ha escrito el libro de desarrollo en Castellano para Windows Phone 7.5 en su post… y es que encima se acercan las Navidades y creo que después de un duro año dándolo todo nos hemos ganado un nuevo gadget para nuestra colección.

image

El concurso

Se van a sortear VARIOS teléfonos cada semana (a partir del 5 de Diciembre) así hasta enero.

Participar es muy sencillo.

1º Publicar una aplicación dentro de la semana en curso.

2º Inscribirse aquí.

http://msdn.microsoft.com/es-es/windowsphone/hh553489

3º El miércoles de la semana siguiente y tras sorteo ante NOTARIO se publicaran los ganadores.

Cuantas mas aplicaciones publiques mas opciones de conseguir un Nokia Lumia 800 tendrás.

Un saludo!!!

Spoiler Mobility Show 2011

Posted: octubre 3, 2011 by Eduardo Ortega Bermejo in Eventos

Un año mas el Mobility Show se mueve por España. Valladolid, Madrid, Barcelona, Sevilla, Bilbao y Santander. Os esperamos en cada una de esas ciudades con una agenda muy muy cargadita y con algunos regalos para motivar al personal Sonrisa

Aquí tenéis un adelanto de lo que habrá en el Mobility Show de este año.
Info sobre el evento y registro: http://bit.ly/mobshow2011

Geo-localización en Windows Phone 7

Posted: septiembre 29, 2011 by Jose Antonio Gallego in Uncategorized

La localización o detección de nuestro entorno siempre ha ido muy ligado a los desarrollos de aplicaciones para dispositivos móviles, del extendido uso de navegadores como el conocido TomTom® hemos pasado al uso de aplicaciones que nos permiten realizar esas acciones en un único dispositivo con el que además podemos hacer fotos, actualizar la agenda, navegar por internet y si, también llamar, que para eso son nuestros teléfonos. Ahora en Windows Phone podemos desde mostrar un mapa al usuario, saber dónde se encuentra resolviendo su posición a direcciones comprensibles por el ser humano hasta llegar finalmente al cálculo de rutas para poder guiarle, y todo de un modo muy sencillo de implementar.

En Windows Phone contamos con varias herramientas que nos van a permitir realizar todas estas acciones desde nuestra aplicación, por un lado contamos con el control Bing Maps para Windows Phone con el cual podemos mostrar al usuario un mapa, tanto en modo callejero como en vista satélite, por otro lado, contamos con el sistema de localización de Windows Phone el cual nos va permitir obtener la posición del teléfono y complementariamente a estas dos opciones se nos une el API de Bing Maps que nos va a permitir resolver direcciones geográficas, calcular rutas, obtener nombre de calles o realizar búsquedas geo-localizadas. A lo largo de este artículo veremos cómo poder exprimir estas características en nuestras aplicaciones.

¿Dónde estamos?

En Windows Phone para obtener la posición del terminal contamos con el objeto System.Device.Location.GeoCoordinateWatcher [1]. Con Windows Mobile la única opción que teníamos para poder localizar el terminal era; o bien utilizar el GPS (en caso de que el teléfono contase con uno, lo cual no era muy común o estuviese conectado a un GPS externo), o bien implementar un sistema de localización por triangulación, utilizando las estaciones base de telefonía. Por suerte en Windows Phone esto ha cambiado radicalmente, como hemos dicho ahora contamos con el sistema de localización de Windows Phone el cual nos permite despreocuparnos de estar abriendo puertos, encender o apagar un receptor externo, estar consultando bases de datos o calculando potencias.

El objeto GeoCoordinateWatcher integra en un único punto de acceso tres sistemas de localización, poniéndolos a nuestra disposición siempre que estén disponibles. Desde la localización por WiFi o triangulación por celda, hasta el uso del GPS integrado del teléfono, pudiendo seleccionar que sistema deseamos utilizar modificando el valor de la propiedad DesiredAccuracy.

Además este objeto se encarga de velar por la integridad de nuestra batería como veremos a continuación.

clip_image002

Figura 1- Clase GeoCoordinateWatcher

Dentro de la clase GeoCoordinateWatcher destacan cinco propiedades que merece la pena repasar: DesiredAccuracy, MovementThreshold, Permission, Position y Status. Las tres últimas son de solo lectura y como veremos son a modo informativo. Estas propiedades nos permitirán comprobar el estado, precisión y tipo de localización modificando las dos primeras podremos controlar el consumo de recursos y a la postre de batería.

La propiedad DesiredAccuracy permite especificar la precisión a la que deseamos que trabaje el servicio de localización. Esta acepta dos valores, por defecto y alta, a mayor precisión mayor consumo, por lo que salvo en casos en los que necesitemos una posición exacta podremos establecer el valor por defecto, debemos tener en cuenta que si establecemos un valor “Alto” de precisión nos podemos encontrar con que nuestra aplicación tarde en responder o que el sistema no retorne ninguna posición, el valor High indica al GeoCoordinateWatcher que utilice el GPS, por lo que es posible que no retorne valores hasta obtener unas coordenadas precisas. El sistema puede tardar desde 15 segundos hasta dos minutos. El valor por defecto permite al sistema de localización utilizar la localización por WiFi o la ubicación por celda, con lo que los resultados pueden tener muy poca precisión. Por último decir que esta propiedad solo la podremos establecer en el constructor de la clase.

Con la propiedad MovementThreshold indicamos al sistema la distancia mínima (en metros) que debe desplazarse el terminal antes de generar un evento PositionChanged. Debemos tener en cuenta que no es lo mismo una aplicación pensada para ejecutarse sobre un vehículo que una que esté pensada para ejecutarse mientras se va caminando por la calle, y es que al igual que nos ocurre con la precisión a mas detalle, es decir, a menor MovementThreshold, mayor consumo de batería. El valor por defecto de esta propiedad es cero, por lo que en caso de no establecer un valor mayor estaremos recibiendo posiciones constantemente aunque no nos estemos moviendo. Microsoft recomienda no establecer un valor menor de 20. Una ventaja de la propiedad MovementThreshold es que nos permite modificarla una vez iniciado el proceso de captura de tramas, de este modo podremos variar la precisión, por ejemplo, en base a la velocidad que se está moviendo el usuario.

Por otro lado con las propiedades Permission, Position y Status podemos comprobar si el usuario ha concedido permiso para que la aplicación utilice el sistema de localización de Windows Phone, ver cuál es la última posición recibida, y con la propiedad Status ver el estado del servicio. De este modo podremos mostrar información al usuario sobre el estado del proceso, el objeto GeoCoordinateWatcher expone los eventos PositionChanged y StatusChanged para poder capturar los cambios de posición y estado en tiempo real.

Certificación en Marketplace

A nivel de la certificación en Marketplace las normas son muy claras, durante el inicio de nuestra aplicación, al menos la primera vez como mínimo, debemos preguntar al usuario si da permiso para utilizar el sistema de localización del teléfono, además debemos incluir la posibilidad de que el usuario pueda revocar este permiso. Lo más adecuado es que incluyamos esta posibilidad en la sección de configuración de nuestra aplicación. En el caso de no cumplir con estos dos requisitos nuestra aplicación no pasará el proceso de certificación.

Nota: El método TryStart incluye el parámetro suppressPermissionPrompt pero actualmente no está implementado. Este parámetro permitiría mostrar la pregunta del sistema para la concesión de acceso al servicio de localización, pero actualmente debemos hacerlo nosotros mismos.

Creando nuestra solución de localización

Para ponernos con las manos en la masa lo primero será crear un proyecto para Windows Phone sobre Silverlight en nuestro Visual Studio, una vez tengamos nuestro proyecto, para utilizar la clase GeoCoordinateWatcher tan solo debemos agregar la referencia a la librería System.Device.dll a nuestro proyecto.

Para nuestro ejemplo crearemos una clase a la cual llamaremos Localización, una vez creada agregaremos el código que podemos ver en el Listado 1

private GeoCoordinateWatcher _geoCoordinateWatcher;

public void IniciarLocalizacion()
{
 //Default: WiFi y telefonía
 //High: Solo GPS
_geoCoordinateWatcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);

//Precisión en metros
_geoCoordinateWatcher.MovementThreshold = 10.0f;
_geoCoordinateWatcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(geoCoordinateWatcher_statusChanged);
_geoCoordinateWatcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(geoCoordinateWatcher_PositionChanged);

new Thread(hiloSegundoPlano).Start();
}

Listado 1

En este caso hemos instanciado nuestra clase GeoCoordinateWatcher para por un lado obtener una precisión alta, además le hemos indicado que se actualizará tan solo si nos desplazamos 10 metros. Como podéis observar lanzaremos la ejecución en un hilo secundario, de este modo podemos utilizar la función TryStart sin interferir en la experiencia de usuario. La función TryStart nos permite especificar un tiempo de espera tras el cual si el sistema no ha conseguido recuperar una posición valida, retornara false, de este modo podremos notificar al usuario que no es posible iniciar el sistema u obtener una dirección valida.

Una vez iniciado el proceso el sistema retorna dos tipos de eventos a los que podemos subscribirnos, por un lado aquellos referentes al estado del dispositivo y que recogeremos con el método geoCoordinateWatcher_statusChanged, y por otro los relacionados con la posición del terminal, estos los procesaremos en el método geoCoordinateWatcher_PositionChanged tal y como veis en el

Listado 2.

void geoCoordinateWatcher_statusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
    switch (e.Status)
    {
        case GeoPositionStatus.Disabled:
             // El sistema puede carecer de permisos.
             break;
        case GeoPositionStatus.Initializing:
             // El sistema se está iniciando.
             break;
        case GeoPositionStatus.NoData:
             // No tenemos datos validos. 
             break;
        case GeoPositionStatus.Ready:
             // El servicio está listo.
             break;
    }
}

void geoCoordinateWatcher_PositionChanged(object sender,
GeoPositionChangedEventArgs<GeoCoordinate> e)
{
    string latitud = e.Position.Location.Latitude.ToString("0.0000000000");
    string longitud = e.Position.Location.Longitude.ToString("0.0000000000");
    string velocidad = e.Position.Location.Speed.ToString("0.0") + " metros por segundo";
    string direccion = e.Position.Location.Course.ToString("0.0") + " grados";
    string altitud = e.Position.Location.Altitude.ToString("0.0") + " altitud.";
}

Listado 2

El método PositionChanged recibe un parámetro basado en la clase GeoPosition esta está compuesta de un punto geográfico contenido en la clase GeoCoordinate y del TimeStamp del momento en que fue capturado. En cuanto a la precisión de cada coordenada recogida, dentro de la clase GeoCoordinate encontraremos dos valores interesantes VerticalAccuracy y HorizontalAccuracy, estos nos indicaran la precisión del punto recogido. Por ejemplo tan solo tendremos disponible la precisión vertical en caso de que utilicemos el GPS estableciendo la propiedad DesiredAccuracy como High.

Nota: La clase GeoCoordinate además de contener la longitud, latitud, altitud, velocidad y dirección incluye la función GetDistanceTo, esta función esta implementada para calcular la distancia desde el punto actual hasta otro, retornándonos el valor en metros.

Limitaciones del API de localización

Como la mayoría ya sabéis Windows Phone está diseñado para optimizar al máximo el consumo de batería, esto supone que no podremos (al menos a fecha de hoy con la versión Mango encima de la mesa) crear una aplicación de tracking que funcione con nuestra aplicación desactivada, ya que aunque ahora contemos con los Agentes en segundo plano, el API de geo-localización está limitada, de modo que aunque los agentes se pueden ejecutar de forma programada cada 30 minutos, la posición que nos retornara el objeto GeoCoordinateWatcher será la contenida en la cache del teléfono, esta cache se actualiza cada 15 minutos siempre y cuando este el servicio habilitado.

Una solución es deshabilitar el ApplicationIdleDetectionMode de modo que, siempre y cuando nuestra aplicación este en primer plano, aunque se apague la pantalla o pulsemos sobre el botón apagar de nuestro terminal nuestra aplicación continuará recogiendo datos.

PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;

Disponible el SQL Server Compact Toolbox para VS2010

Posted: septiembre 6, 2011 by Jose Antonio Gallego in Tips, Windows Phone

Ya esta disponible el SQL Server Compact ToolBox para Visual Studio 2010. Esta herramienta nos permite simplificar el trabajar con tablas y Data Context en nuestros desarrollos con este tipo de bases de datos. Este toolbox al tratarse de un add-in sobre Visual Studio solo es compatible para versiones Pro o superiores.

Entre otras cosas nos permite importar, exportar, migrar, renombrar, ejecutar scripts… y ahora generar las clases para el Data context en Windows Phone.

toolbox1.png

Podéis encontrar toda la información relativa a este interesante proyecto en http://sqlcetoolbox.codeplex.com/

Saludos!

Microsoft ha liberado ya la versión RC (Release Candidate) de la herramientas de desarrollo para Windows Phone. Además hoy también ha abierto por lo que parece el proceso de publicación de aplicaciones para MANGO. Tal y como decían los rumores cada vez es más probable que Mango sea anunciado el 1 de Septiembre.

La versión RC incluye:

  • Windows Phone SDK 7.1 (RC)
  • Windows Phone Emulator (RC)
  • Windows Phone SDK 7.1 Assemblies (RC)
  • Silverlight 4 SDK and DRT
  • Windows Phone SDK 7.1 Extensions for XNA Game Studio 4.0
  • Microsoft Expression Blend SDK for Windows Phone 7
  • Microsoft Expression Blend SDK for Windows Phone OS 7.1
  • WCF Data Services Client for Window Phone
  • Microsoft Advertising SDK for Windows Phone
  •  

    Podéis descargarlas aquí:Windows Phone SDK 7.1 Release Candidate

    Saludos y actualizar se ha dicho :)

    Como la mayoría ya sabréis el UserAgent de un navegador lo podemos recuperar de un modo sencillo utilizando simplemente javascript, concretamente con el objeto navigator. Con este objeto podemos ver la plataforma, versión, etc… para nuestro caso concretamente utilizaremos navigator.userAgent.

    Windows Phone no nos permite ejecutar Javascript directamente, pero si podemos hacerlo desde su navegador. Por lo que vamos a proceder de la siguiente manera. (Esto solo para aplicaciones sobre Silverlight)

    1) Agregaremos un control WebBrowser a nuestra pagina. Habilitando la ejecución de scripts y subscribiéndonos al evento ScriptNofity
    2) Utilizando la función NavigateToString cargaremos el Script que veréis mas abajo.
    3) Interceptaremos el evento ScriptNotify y lo procesaremos y almacenaremos en el IsolatedStorage para cuando nos haga falta.

    Declaramos nuestro control a nivel de clase, (así no lo agregamos desde el diseñador)

    private WebBrowser webBrowserControl;

    En el constructor de nuestra pagina, instanciamos y agregamos el control.

            public ManiPage()
            { 
                (…) 
                control.Loaded += new RoutedEventHandler(webBrowserControl_Loaded);

                webBrowserControl = new WebBrowser();
                webBrowserControl.IsScriptEnabled = true;
                webBrowserControl.Visibility = System.Windows.Visibility.Collapsed;
                webBrowserControl.ScriptNotify += new EventHandler<NotifyEventArgs>(webBrowserControl_ScriptNotify);
                contentPanel.Children.Add(webBrowserControl);
            }

    Cuando se cargue el control realizamos la navegación, esto es importante ya que si intentamos hacerlo antes y el control no se encuentra en el árbol visual recibiremos una excepción.

            void webBrowserControl_Loaded(object sender, RoutedEventArgs e)
            {
                string html = @"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">
                    <html>
                    <head>
                    <script language=""JavaScript"" type=""text/JavaScript"">
                    function getUserAgent() {
                        window.external.notify(navigator.userAgent);
                    }
                    </script>
                    </head>
                    <body onload=""getUserAgent();""></body>
                    </html>";

                webBrowserControl.NavigateToString(html);
            }

    Y por último interpretamos y almacenamos el UserAgent que debería tener un formato similar a este (el mostrado es el del Emulador de Windows Phone).

    User Agent:
    Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; Microsoft; XDeviceEmulator)

    void webBrowserControl_ScriptNotify(object sender, NotifyEventArgs e)

        _userAgent = e.Value; 
        //Guardamos el resultado en el almacenamiento aislado.
        System.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings["UserAgent"] = _userAgent;

        if (UserAgentChanged != null)
        {
            UserAgentChanged(e.Value, new EventArgs());
        }
    }

    NOTA: Para recuperar el valor almacenado solo tenéis que usar esto.

    string userAgent;
    System.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings.TryGetValue<string>("UserAgent", out userAgent);

    Saludos movileros!

    Como hacer scroll a un elemento en un Listbox desde código.

    Posted: agosto 11, 2011 by Jose Antonio Gallego in Tips, Windows Phone

    Un problema que nos puede hacer perder un rato es ver como hacer scroll desde código a un elemento en una lista (y que esta lo haga XD). Aquí os dejo la solución que he encontrado.

    public MainPage()
    {
        InitializeComponent();
        miListBox.Loaded += new RoutedEventHandler(miListBox_Loaded);
    }

    void miListBox_Loaded(object sender, RoutedEventArgs e)
    {
        miListBox.SelectedIndex = 14; //Seleccionamos el elemento 14 por ejemplo           
        miListBox.ScrollIntoView(miListBox.SelectedItem);
    }

    Con esto una vez cargue nuestra pagina el control mostrara el elemento seleccionado dentro del área visual.

    Saludos!

    Marketplace App Hub para Windows Phone Mango

    Posted: julio 22, 2011 by Eduardo Ortega Bermejo in Uncategorized

    Como ya sabréis el 20 de Julio ya han dado acceso al nuevo AppHub de Windows Phone, que además viene preparado para Mango. Este nuevo AppHub trae muchísimas mejoras con respecto a la versión anterior y que analizaremos en este artículo, pero sobre todo quiero destacar los 3 puntos en los que se ha realizado la mayor parte del esfuerzo:

    • Se amplia el número de Marketplaces a 19 nuevos países
    • Distribución privada de aplicaciones
    • Mejoras en la administración y seguimiento de nuestras aplicaciones

    Si entramos en nuestro “Dashboard” lo primero que encontramos ahora es esto:

    image

    Una pantalla dividida en 5 bloques donde de un solo vistazo podemos apreciar lo siguiente:

    • Últimos pagos que nos han realizado
    • Descargas en el último mes de nuestras aplicaciones y número de veces que las aplicaciones se han cerrado debido a errores no manejados en nuestra aplicación y cuyos usuarios han decidido reportarlo a Microsoft.
    • Informe gráfico de descargas totales de todas tus aplicaciones
    • Apartado específico para subir aplicaciones y FAQ
    • Notificaciones con todas aquellas cosas que tengamos pendientes, como rellenar información de nuestra cuenta bancaria, o aplicaciones en proceso de publicación o certificación que hayan tenido problemas o estén pendientes.

    En detalle:

    • Expansión geográfica:
      • 19 nuevos Marketplaces: Brasil, Chile, Colombia, Finlandia, Grecia, India, Holanda, Japón…
      • 7 nuevos Marketplace para desarrolladores: Demos la bienvenida a los nuevos publicadores de Chile, Colombia, República Checa, Hungría, Israel, South África y Corea del Sur y en breve China!!!
      • AppHub localizado al Koreano, Chino, Japonés e Ingles, eso sí, parece que aún no se han enterado que el Español es uno de los idiomas mas hablado en el mundo… Lengua fuera
      • Mayor flexibilidad a la hora de ajustar el precio al que queremos vender las aplicaciones (€): 0, 0.99, 1.29, 1.49, 1.99, 2.49, 2.99, 3.49, 3.99, 4.49, 4.99, 5.49, 5.99, etc.
        image
      • Advertising in-app: El Microsoft Advertising pubCenter dara paso a los desarrolladores de 18 países a final de 2011, ¡entre ellos España!
    • Distribución privada de aplicaciones: Como bien sabéis hasta ahora la única forma de desplegar una aplicación en un teléfono Windows Phone 7 es mediante su publicación en Marketplace, o bien mediante nuestra cuenta de publicador en Marketplace, desbloquear un dispositivo (máximo 5) físico para poder instalar hasta un máximo de 10 aplicaciones desde nuestro Visual Studio 2010 o con las herramientas de desarrollo de Windows Phone.

      Pues bien, ahora se habilita la “Beta Distribution” que consiste en permitir a los desarrolladores distribuir aplicaciones pre-certificadas a un grupo de hasta 100 beta testers durante un máximo de 90 días. Este método de distribución nos da la oportunidad de probar en mas de 5 dispositivos como teníamos hasta ahora sin embargo sigue teniendo la carencia de que no podemos hacer despliegues privados definitivos sin pasar por Marketplace, por lo que para muchas soluciones empresariales no nos servirá.

      Para ello se ha habilitado otro método de distribución llamado “Targeted Distribution” que nos permite distribuir aplicaciones a través de Marketplace en un estado oculto, no descubrible via Zune o Web. Para dar acceso a los usuarios simplemente tendremos que pasarles un enlace a la aplicación mediante e-mail u otros mecanismos. No hay ningún tipo de restricción de tiempo ni usuarios en esta opción.

    • Mejoras en la administración de aplicaciones:
      • Mejoras en el Dashboard, convirtiéndose en una pizarra global
      • Mayor detalle en los informes
      • Nuevos informes de “casques” de nuestras aplicaciones
      • Subida de imágenes del Artwork del tirón sin tener que ir una a una y mejoras en su subida y edición.
      • Nuevas categorías: Educación, Niños y Familia y Gobierno y Política.

     

    A continuación muestro al detalle cada una de estas mejoras:

    Payouts

    image

    En esta sección nos encontraremos los pagos que Microsoft nos ha realizado durante el último mes o meses. En el caso de el ejemplo que os dejo, yo no tengo ninguna aplicación de pago por lo que no puedo obtener nada a cambio mas que satisfacción personal de que la gente se baje las aplicaciones y las utilice alguna vez Lengua fuera

    Muchos publicadores tienen problemas a la hora de recibir los pagos dada la gran cantidad de documentación que tienen que rellenar pero por suerte estamos trabajando en un documento explicativo con el paso a paso de todo lo que hay que hacer para poder rellenar este sin fin de papeleos.

    Para los atrevidos que quieran hacerlo por su cuenta y riesgo que sepan que al no ser desarrolladores residentes en EEUU necesitan proporcionar básicamente 3 cosas:

    • Información de nuestra cuenta Bancaria
    • Obtener un Número de Identificación de Contribuyente de los Estados Unidos*

      *No es necesario proporcionar un Número de Identificación de Contribuyente (TIN) para recibir los pagos, pero se debe de proporcionar en el formulario W-8 si os queréis beneficiar de las ventajas de los tratados de doble imposición y evitar estar sujetos a retenciones de impuestos de EEUU que son del 30%.

      Para ello debemos de proporcionar el Número de la seguridad social (SSN) o el número de identificación de contribuyente individual (ITIN) que son 9 números tipo 122-32-2341. También el número de identificación de empleador (EIN) que también son 9 números tipo 13-3434213.

    • Enviar el formulario W-8 siempre y cuando lo deseemos.

     

    Si nos queremos quitar de líos y solo queremos cobrar rápido y YA, bastará con dar la información básica que nos piden y nada mas, eso sí, recordad que Microsoft se quedará con un 30% y la hacienda americana con otro 30% mas luego en España, depende lo que obtengáis de vuestras ventas también tendréis que ajustar cuentas con hacienda.

    APP Highlights

    image image

    En esta sección encontraremos las descargas totales de nuestras aplicaciones así como también los “Crash Counts”.
    Además pinchando en cada una de las aplicaciones podemos ver el historial de cada una de ellas. Por ejemplo:

    image Visualizar los REVIEWS que tiene nuestra aplicación en cada uno de los países en los que se ha vendido, así por ejemplo puedo ver aquí que en EEUU tiene una valoración de 3,3 sobre 5 y los comentarios de cada usuario.
    Esto es un gran avance ya que hasta ahora únicamente podíamos ver los comentarios de nuestra aplicación que teníamos solamente en nuestro país
    image Ver los detalles de la aplicación donde podremos ver las versiones que tenemos publicadas, la descripción, la descripción del Update (nuevo), el Artwork como siempre, la categoría en la que esta publicada, el nombre del XAP, la versión mayor/menor, el enlace, las Capabilities que utiliza y el enlace web a la aplicación .

     

    image Por último el Lifecycle de nuestra aplicación, donde podremos seguir los progresos a través de diferentes estados de la certificación y publicación de cada una de las Releases que hemos subido.
    Además desde esta pantalla podemos ocultar la aplicación del Marketplace, editar las características de la misma, el precio o incluso eliminarla de Marketplace.

     

    REPORTS

    image

    La página de informes (muy lograda por cierto) nos va a mostrar primero una visión global del total de descargas que tenemos entre todas nuestras aplicaciones, que posteriormente podemos ver al detalle por aplicación incluso por cada uno de los países en los que ha sido instalada.

    Tenemos también el informe de los “Crashes”  que han ocurrido en los últimos 30 días, y debajo tenéis un cuadro que pone “STACK TRACES” donde podemos obtener una hoja de Excel con todos los cierres inesperados de vuestras aplicaciones, que tendrá un aspecto similar a este:

    image

    Y donde podremos ver al detalle el volcado de pila, y que trataremos en posteriores artículos. Ejemplo:

    Frame    Image             Function                                                                          Offset   
    0        coredll.dll       xxx_RaiseException                                                                32       
    1        mscoree3_7.dll    WatsonUnhandledManagedException                                                   300      
    2        mscoree3_7.dll    Dbg_NotifyManagedException                                                        136      
    3        mscoree3_7.dll    FirstPassException                                                                1044     
    4                          TransitionStub                                                                    0        
    5                          System.Windows.Navigation.NavigationService.Navigate                              1292     
    6                          System.Windows.Controls.Frame.Navigate                                            80         
    …   
    46       TaskHost.exe      WinMain                                                                           1420     
    47       TaskHost.exe      WinMainCRTStartupHelper                                                           60       
    48       coredll.dll       MainThreadBaseFunc                                                                428

     

    Para terminar, deciros que se está trabajando en sacar en Agosto las Windows Phone Release Candidate Tools, un mes en el que casi con toda seguridad ya podamos tener nuestras aplicaciones de Mango “Ready To Submit” en Marketplace.

    Enhorabuena al equipo de desarrollo y al resto de desarrolladores de aplicaciones que como bien dice el equipo de desarrollo, han conseguido 23.000 aplicaciones en tan solo 8 meses de vida de esta nueva plataforma.

    Hasta la próxima.

    Eduardo Ortega