Unificación de las Stores de Windows y Windows Phone

Introducción

Hasta el momento actual, como
desarrolladores si nos interesaba crear Aplicaciones Windows Phone y
Windows Store necesitábamos contar con dos cuentas de desarrollador, uno
para cada plataforma. El coste de cada cuenta de desarrollador es:

  • Usuario individual, 19$ para la Windows Phone Store y 49$ para la Windows Store.
  • Empresa, 19$ para la Windows Phone Store y 99$ para la Windows Store.

Además, contábamos con dos portales para cada Store. Hasta ahora…

¿Qué cambia exactamente?

Las Stores se unifican!.
A partir de ahora como desarrolladores tendremos que realizar un
único pago pudiendo publicar para ambas plataformas. El coste se queda
de la siguiente forma:

  • Usuario individual: 19$ por las dos.
  • Empresa: 99$ por las dos.

Nos ahorramos dinero como desarrollador además de tener mayor facilidad al publicar Aplicaciones.

¿Y si…?

  • ¿Y si ya tenía cuenta de desarrollador de la Windows Store?

Ya tienes también cuenta de la Windows Phone Store.

  • ¿Y si ya tenía cuenta de desarrollador de la Windows Phone Store?

Ya tienes cuenta de la Windows Store.

  • ¿Y si tenía cuenta de ambas?

Pues Microsoft quiere premiar tu compromiso y te regalará un Token para poder renovar gratuitamente cuando caduque.

Más Información

Evento comunidades técnicas. Sesiones de Windows Phone 8, Windows 8 y Azure

Introducción

Los chicos de Microsoft están de gira durante el mes de Octubre y
Noviembre con un evento que se celebrará en varias ciudades y destinada a
varios roles (devs, sistemas, emprendedores, etc.), el TechDay Tour 2013. En Sevilla tendra lugar el próximo 5 de Noviembre
con una agenda repleta de contenidos de 9:30h a 18:00h que os
recomiendo nos os perdáis. Entre otros ponentes, tendremos la presencia
de Luis Guerrero, DPE Technical Evangelist en Microsoft España, a quien no se le ocurre otra idea que… aumentar aun mas el número de charlas.

¿Cómo?

Ha decidido promover un pequeño evento entre las comunidades para
extender y ver otros puntos no vistos en el TechDay y claro… nos
apuntamos encantados!

El Evento

El evento tendrá lugar después del TechDay de 18:00h a 20:00h. Como ya hemos comentado será un evento de comunidades, CartujaDotNet y UXNug, en donde tendremos 3 charlas técnicas abordando temas sobre Windows 8 y Windows Phone, Azure, SignalR y Xamarin.

¿Te apuntas?

El Lugar

Tendrá lugar en el Cloud Pointing de Sevilla situado en el Parque Empresarial Nuevo Torneo. Tenéis la información exacta del lugar a continuación:

c Biología, 12, Edificio Vilamar 2, 3ª Planta
Parque Empresarial Nuevo Torneo
41015 Sevilla

Lo importante, las Sesiones

  • Patrones de desarrollo de Software en Windows Phone y Windows 8

Las aplicaciones cada día son más
complejas en funcionalidad, así que utilizar patrones de software nos
ayuda a solucionar nuestros problemas de la manera más adecuada. En
Windows Phone 8 y Windows 8 se pueden utilizar algunos patrones para
agilizar el desarrollo de aplicaciones muy grandes o con funcionalidad
muy compleja.

Ponente: Luis Guerrero (@guerrerotook), DPE Technical Evangelist en Microsoft España.

  • Introducción al desarrollo de apps móviles real time haciendo uso de signalR

La evolución en el mundo de las
Aplicaciones es constante y rápido y los usuarios cada vez requieren
funcionalidades más exigentes. Muchas de las Applicaciones destacadas en
la tienda hacen un correcto uso de respuesta inmediata, famosos chats,
famosos juegos donde ambos oponentes dibujan en tiempo real, etc.
¿Quieres aprender a realizar este tipo de Aplicaciones?. Si quieres
aprender como realizar en Windows Phone 8 y Windows 8  Aplicaciones que
funcionen en tiempo real utilizando SignalR, no te pierdas esta sesión!

Ponente: Javier Suárez Ruiz (@jsuarezruiz),
Entusiasta de la tecnología con años de experiencia en aplicaciones
móviles. Colabora habitualmente con la comunidad, coordinador del grupo
de usuarios CartujaDotNet.

  • Xamarin mas Azure

Los clientes y los usuarios nos piden que
nuestras Apps estén en distintos sistemas operativos.Mostraremos como
crear código backend multiplataforma y deslocalizado usando Xamarin 2.0 y
Azure. Tus Apps disponibles para Android, iOS y Mac partiendo desde el
código Windows reutilizando el 80%. ¡Así no echarás horas extras!

Ponente: Pablo Escribano (@PaulEcrivain),
Desarrollador de Aplicaciones en .Net y Mono/Xamarin con más de 10 años
es experiencia. Defensor del Software Libre. Coordinador de MonoHispano
y UXNUG. Fundador de CartujaDotNet.

Más Información

[Windows Phone] Novedades de Windows Phone 8 Update 3

Introducción

Recientemente Microsoft presento el programa Preview for developers, una opción sumamente interesante que permite a desarrolladores registrados en la Windows Phone Store o en Windows Phone App Studio acceder a versiones beta de las actualizaciones del sistema operativo. Ya se encuentra disponible la actualización Update 3 (también conocida previamente como GDR3).

NOTAS:

  • La actualización permite a desarrolladores preparar sus Aplicaciones
    para el lanzamiento oficial vía operadoras al resto de usuarios.
  • La versión mínima requerida para actualizar al Update 3 es la 8.0.10322.71 (GDR2).
  • No hay vuelta atrás, podrás instalar nuevas actualizaciones pero no volver a versiones previas.
  • No se pierde ningun tipo de información o Aplicación.

Novedades del sistema

La actualización Windows Phone 8 Update 3, hasta ahora conocida como
GDR3, viene cargada de múltiples novedades entre las que destaca a nivel
de usuario la posibilidad de contar con resoluciones Full HD, pantallas
de 5 y 6 pulgadas, el poder tener dispositivos con procesadores quad
core, mayores opciones de personalización y mejoras en conexiones.

Entrando un poco más en detalles:

Más “grande”

Se suprime el límite de tamaño en resolución establecido permitiendo
la llegada en el futuro de teléfonos con pantallas de 5 o 6 pulgadas con
resolución de 1080p (1080 × 1920). Esto además hace posible poder contar con hasta 6 Tiles en pantalla frente a los 4 máximos actuales.

Más potencia

La actualización permite también utilizar los procesadores de cuatro
núcleos de Qualcomm. Esto permitirá conseguir una experiencia fluida
ante cualquier tipo de exigencia.

Más accesible

Se realiza un esfuerzo por facilitar el uso del dispositivo a
personas invidentes. Se permite la gestión de llamadas, correos,
contactos, uso de Skype o Lync, etc.

Modo conducción

Llega un nuevo modo llamado “modo conducción”. Esta nueva
característica intenta evitar disfracciones cuando estamos ante el
volante deshabilitando notificaciones y bloqueando llamadas.Hay
múltiples opciones de configuración que nos permite realizar acciones
como enviar respuestas automáticas entre varias opciones.

Más opciones de personalización

La actualización permite asignar tonos diferentes a diferentes Apps como mensajes, correos, recordatorios, alarmas, etc.

Podemos bloquear la rotación de la pantalla a nuestro antojo.

Más control

Podemos controlar que Apps se ejecutan en Background y ahora además podemos cerrarlas.

Se permite convertir el teléfono en un punto de acceso compartiendo
la conexión a internet de una manera mucho más sencilla sin requerir
contraseñas (vía Bletooth). También tenemos la posibilidad de recuperar
un Backup vía WiFi desde el asistente inicial.

Novedades para desarrolladores

Llegamos a las novedades más “divertidas”, las disponibles para desarrolladores:

  • De entrada, no hay nuevo SDK. Accederemos a nuevas funcionalidades gracias al uso de reflection y contaremos con nuevas imágenes del emulador para poder probar en 1080p.
  • Soporte para dispositivos con pantalla de 1080p: La preocupación en este aspecto es obvia, ¿cómo hago que mi Aplicación soporte 1080p?.

Entre las resoluciones 720p y 1080p no podemos encontrar diferencias utilizando la propiedad App.Current.Host.Content.ScaleFactor o Application.Current.Host.Content.ActualHeight ya que en ambas devuelven los mismos resultados, 150 y 853 respectivamente.

¿Cómo diferenciar entonces entre un dispositivo 720p y otro 1080p?

Microsoft nos facilita una nueva clase DeviceExtendedProperties que nos facilita información relacionada con la resolución.

Gracias a la propiedad ScaleFactor podemos distinguir entre dispositivos WVGA, WXGA y 720p:

private static bool IsWvga { get { return App.Current.Host.Content.ScaleFactor == 100; } }
private static bool IsWxga { get { return App.Current.Host.Content.ScaleFactor == 160; } }
private static bool Is720p { get { return App.Current.Host.Content.ScaleFactor == 150; } }
Y gracias a la nueva clase DeviceExtendedProperties podemos diferenciar los dispositivos 1080p:
private static bool Is1080p { get { return (Size)DeviceExtendedProperties.GetValue("PhysicalScreenResolution") == 1080; } }
  • El segundo cambio quizás mas significativo (por lo esperado) es la posibilidad de poder utilizar sonidos personalizados para las notificaciones Toast. El sonido a utilizar debe ser un fichero local en formato WAV, WMA o MP3 y de una duración no superior a 10 segundos.

Recordar que accederemos usando reflection, nos crearemos una clase auxiliar para ello:

private static void SetProperty(object instance, string name, object value)
{
     var setMethod = instance.GetType().GetProperty(name).GetSetMethod();
     setMethod.Invoke(instance, new object[] { value });
}
Y utilizaremos la clase auxiliar para simplificar la asignación del sonido en la notificación:
private static void SetProperty(object instance, string name, object value)
{
     SetProperty(toast, "Sound", new Uri("MyToastSound.mp3", UriKind.RelativeOrAbsolute));
}
  • Más memoria. Los nuevos dispositivos llegan ya con
    2GB de RAM lo que ha permitido aumentar el tamaño máximo de uso por
    parte de las Apps hasta los 570MB. Teniendo en cuenta el aumento de
    tamaño en recursos era un aumento necesario. Para los dispositivos
    actuales con 1GB de RAM también se obtiene una leve ganancia en los
    agentes de audio en background que podrán utilizar 25MB en lugar de los
    20MB disponibles hasta ahora.
  • Contamos también con nuevos esquemas URI:
    • Rotación de pantalla: ms-settings-screenrotation:
    • Ahorro de batería: ms-settings-power:
  • Detectar el ahorro de batería. Por reflection podremos acceder a una nueva propiedad de la clase PowerManagement llamada PowerSavingModeEnabled.
  • Podéis detectar si un dispositivo cuenta con la actualización Update 3 facilmente:
private static Version Update3 = new Version(8, 0, 10492);
public static bool IsUpdate3
{
    get { return Environment.OSVersion.Version >= Update3; }
}

Suena todo muy bien, ¿cierto?. En próximos artículos veremos como
acceder a algunas de estas nuevas propiedades o como gestionar la nueva
resolución, ¿os apuntáis?

Keep Pushing!

Más información

[Evento] App Trade Centre 2013. Taller Windows Phone App Studio.

Introducción

El próximo miércoles 23 de octubre comienza en Valencia el App Trade Centre 2013,
evento de dos días en el que nos daremos cita desarrolladores,
profesionales TIC, agencias de marketing, directivos de grandes empresas
y prensa especializada.

ATC2013

El primer centro de negocios de las Apps en España

El evento

Estará cargado de exposiciones, ponencias y talleres de diversa
índole y tecnología relacionadas con el mundo de las Apps. Microsoft y
Nokia no podían perderse este gran evento y contaremos con una
interesante charla a cargo de Alejandro Campos, Technical Evangelist de Microsoft, sobre Windows Phone el día 23 en
la que se trataran, entre otras cosas, temas tan interesantes como la
oportunidad que la plataforma supone para desarrolladores y empresas, o
de cómo sacar el mayor partido a las apps en Windows Phone.

Por si fuese poco, ese mismo día, 16:00 tendremos un Taller de Windows Phone App Studio.

El Taller

Tendremos un taller de dos horas de duración en el
que contaréis conmigo y con la ayuda de Alejandro Campos para crear
Aplicaciones Windows Phone utilizando la nueva herramienta de Microsoft,
Windows Phone App Studio para ello. En el Taller introduciremos la
herramienta, crearemos la Aplicación del ATC 2013 en directo para
profundizar en el uso de la misma para a continuación dejar volar
vuestra imaginación para crear fantásticas Aplicaciones con la
herramienta. A final del evento y gracias a tokens para la Store, podréis publicar vuestras Aplicaciones y además…

sortearemos 3 Nokia Lumia entre los asistentes al taller!

Requisitos

Tráete un ordenador con Internet Explorer 10 o superior, y si quieres
extender el código tú mismo (opcional), necesitarás Visual Studio 2012 o
Visual Studio 2013 (puede ser la versión Express que se instala con el Windows Phone SDK), muchas ganas de aprender y si queréis una buena idea. Como véis no se requiere nada excesivo asi que no tenéis excusas!

¡Nos vemos en el ATC 2013!

Nota: Comprueba en la agenda del evento la hora de nuestra sesión y taller, por si hubiera cambios de última hora.

Más información

[Windows Phone] Crear un Company Hub (2/2)

Introducción

En el artículo anterior,
repasamos las novedades a nivel empresarial disponibles con la llegada
de Windows Phone 8. Contamos con mejoras a nivel de servicios,
seguridad, encriptación y la distribución de Aplicaciones. Podemos
realizar una distribución no administrada que permite distribuir
aplicaciones de manera muy simple mediante un simple enlace o con un
archivo adjunto en un correo electrónico. También vimos un nuevo
concepto disponible con Windows Phone 8 llamado Company Hub que permite crear un Hub personalizado donde mostrar y permitir instalar las aplicaciones disponibles de la empresa.

Creando un Company Hub

Nuestro Company Hub constara de dos partes:

  • Servidor.
    Nuestro objetivo es un servidor que devuelve la meta información de las
    aplicaciones junto a los Xaps de las mismas a la Aplicación Windows
    Phone. Las posibilidades son múltiples, podemos utilizar blobs de Azure
    para gestionar la meta información, servicio WCF, etc. En nuestro
    ejemplo crearemos una aplicación WCF muy sencilla.
  • Cliente.
    Aplicación Windows Phone 8 que se nutre de la información del servidor
    además de apoyarse en las APIs previamente mencionadas para permitir
    gestionar las Aplicaciones (instalar, lanzar, etc.).

Comenzamos
nuestro Company Hub por la parte del servidor, ya que sin ella, no
podríamos avanzar.Creamos el proyecto para la aplicación WCF.
Seleccionamos la plantilla “WCF Service Application”:

Añadimos carpetas para incluir los recursos de las aplicaciones, Xaps, etc:

Debemos añadir los Xaps de nuestro Company Hub a la carpeta Xaps
pero… esperad!, no podemos copiar el resultado de la compilación de cada
Aplicación tal cual, debemos preparar las Aplicaciones.

¿Cómo?

Debemos precompilar y firmar las Aplicaciones con nuestro certificado
empresarial. Para hacerlo utilizaremos una herramienta llamada BuildMDILXap
que nos realiza ambas acciones. La herramienta la tenemos disponible
con la instalación del SDK de Windows Phone en la siguiente carpeta:

%ProgramFiles(x86)%Microsoft SDKsWindows Phonev8.0ToolsMDILXAPCompile

Abrimos PowerShell:

C:WindowsSystem32WindowsPowerShellv1.0

Nos dirigimos a la ruta anteriormente indicada donde tenemos disponible la herramienta MDILXAPCompile:

cd ‘C:Program Files (x86)Microsoft SDKsWindows Phonev8.0ToolsMDILXAPCompile’

Ejecutamos la siguiente línea:

.BuildMDILXap.ps1 –xapfilename 'C:App.xap' –pfxfilename 'C:certificado.p12' –password p@ssw0rd

Donde:

  • -xapfilename: Ruta compelta al xap que deseamos precompilar y firmar.
  • -pfxfilename: Ruta al certificado Symantec que utilizaremos para firmar la Aplicación.
  • -password: La contraseña del archivo PFX.

Por último, añadimos el archivo XML que contiene toda la meta información que necesitamos para gestionar las Aplicaciones:

<?xml version="1.0" encoding="utf-8" ?>
     <CompanyApp>
          <ProductId>{957dc000-642f-45bc-a710-87ea0d33fee3}</ProductId>
          <Title>App01</Title>
          <Description>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquam convallis elit, ac aliquam neque vulputate eget. Sed consequat non nibh quis pharetra. </Description>
          <Version>2.0.0.0</Version>
     </CompanyApp>
     <CompanyApp>
          <ProductId>{73096706-377f-4423-b7e0-914b3724dce2}</ProductId>
          <Title>App02</Title>
          <Description>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquam convallis elit, ac aliquam neque vulputate eget. Sed consequat non nibh quis pharetra. </Description>
          <Version>1.0.0.0</Version>
     </CompanyApp>
</ArrayOfCompanyApp>

Necesitamos devolver la colección de Aplicaciones. Por lo tanto
necesitamos definir la información de cada Aplicación. Creamos la clase
CompanyApp:

[Serializable]
[DataContract]
public class CompanyApp
{
     [DataMember]
     public Guid ProductId { get; set; }
 
     [DataMember]
     public string Title { get; set; }
 
     [DataMember]
     public string Description { get; set; }
 
     [DataMember]
     public string Author { get; set; }
 
     [DataMember]
     public string Icon { get; set; }
 
     [DataMember]
     public string XapPath { get; set; }
 
     [DataMember]
     public bool Downloading { get; set; }
 
     [DataMember]
     public uint Progress { get; set; }
 
     [DataMember]
     public string ProgressString { get; set; }
 
     [DataMember]
     public Status Status { get; set; }
 
     [DataMember]
     public string Version { get; set; }
}

Por último, nuestro servicio, leera el archivo XML, lo parseará y devolverá el listado de objetos CompanyApp:

public List<CompanyApp> GetCompanyApps()
{
     var appPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
 
     CompanyApp[] packages;
 
     using (var sr = new StreamReader(appPath + "/CompanyApps.xml"))
     {
          var dcs = new XmlSerializer(typeof(CompanyApp[]), new[] { typeof(CompanyApp) });
          packages = dcs.Deserialize(sr.BaseStream) as CompanyApp[];
     }
 
     return packages.ToList();
}

Nada más por parte del servidor. Nos centramos ya en la Aplicación Windows Phone. Creamos un nuevo proyecto:

Crearemos una Aplicación inicial de tipo Panorama donde mostraremos dos secciones:
  • Un listado de las aplicaciones disponibles que podremos instalar.
  • Un listado de las aplicaciones instaladas que podremos lanzar.

Por lo tanto la estructura de la misma será:

<phone:Panorama Title="company hub">
     <!--New Apps-->
     <phone:PanoramaItem Header="Nuevas">
          <ctl:LongListSelector/>
     </phone:PanoramaItem>
     <!--Installed Apps-->
     <phone:PanoramaItem Header="Instaladas">
          <ctl:LongListSelector/>
     </phone:PanoramaItem>
</phone:Panorama>

NOTA: Recordar que estamos ante un ejemplo práctico y
que podemos incluir en el Hub de la empresa mucha más información como
las aplicaciones que cuentan con actualización, un listado de noticias
de la empresa e incluso podemos añadir notificaciones push para avisar
con novedades.

Vamos a añadir la referencia al servicio WCF. Hacemos clic derecho
sobre las referencias del proyecto y seleccionamos “Añadir referencia de
servicio”.

Utilizaremos el patrón MVVM como estructura de
nuestra Aplicación. En la Vista-Modelo necesitaremos dos propiedades
donde almacenar las colecciones de Aplicaciones nuevas e instaladas:

private ObservableCollection<CompanyApp> _newApps;
private ObservableCollection<CompanyApp> _installedApps;

Creamos las propiedades:

public ObservableCollection<CompanyApp> NewApps
{
     get { return _newApps; }
     set { SetProperty(ref _newApps, value); }
}
 
public ObservableCollection<CompanyApp> InstalledApps
{
     get { return _installedApps; }
     set { SetProperty(ref _installedApps, value); }
}

Necesitamos un método que acceda al servicio WCF y llame al método del servicio que devuelve el listado de Aplicaciones:

private async Task<List<CompanyApp>> GetAppListAsync()
{
     var service = new CompanyHubServerClient();
     var tcs = new TaskCompletionSource<List<CompanyApp>>();
 
     EventHandler<GetCompanyAppsCompletedEventArgs> handler = null;
     handler = (s, ex) =>
     {
          service.GetCompanyAppsCompleted -= handler;
 
          if (ex.Error != null)
               tcs.SetException(ex.Error);
          else
               tcs.SetResult(ex.Result.ToList());
     };
 
     service.GetCompanyAppsCompleted += handler;
     service.GetCompanyAppsAsync();
 
     return await tcs.Task;
}

Utilizaremos ese método para obtener el listado de Aplicaciones
disponibles en el servidor. Por otro lado, utilizaremos el método FindPackagesForCurrentPublisher
para obtener el listado de Aplicaciones del mismo publicador (nosotros
como empresa) instaladas. Compararemos ambos listados para determinar
que Aplicación es nueva y cual esta ya instalada:

private async Task LoadDataAsync()
{
     // Obtenemos el listado de Apps del servidor
     _packages = await GetAppListAsync();
 
     // Obtenemos el listado de Apps instaladas
     var installed = InstallationManager.FindPackagesForCurrentPublisher();
 
     foreach (var pkg in _packages)
     {
          var qry = installed.Where(p => p.Id.ProductId.ToLower().Contains(pkg.ProductId.ToString().ToLower()));
 
          if (qry.Any())
               pkg.Status = Status.Installed;
          else
               pkg.Status = Status.New;
     }
 
     NewApps = new ObservableCollection<CompanyApp>(_packages.Where(p => p.Status == Status.New).ToList());
     InstalledApps = new ObservableCollection<CompanyApp>(_packages.Where(p => p.Status == Status.Installed).ToList());
}

Llamaremos al método desde el constructor del Vista-Modelo:

new Action(async () =>
{
     await LoadDataAsync();
}).Invoke();

Sólo nos falta enlazar los controles de nuestra Vista con las
propiedades de Aplicaciones del Vista-Modelo. Comenzamos creando el
DataTemplate de cada Apliación en la lista:

<DataTemplate x:Key="listCompanyAppTemplate">
     <StackPanel Margin="0,-6,0,12" Orientation="Horizontal">
          <Image  Source="{Binding Icon}" Width="100"/>
          <TextBlock Text="{Binding Title}" TextWrapping="Wrap" VerticalAlignment="Center"
                     Style="{StaticResource PhoneTextExtraLargeStyle}"
                     FontSize="{StaticResource PhoneFontSizeExtraLarge}"/>
     </StackPanel>
</DataTemplate>

Enlazamos el control LongListSelector con la propiedad utilizando su propiedad ItemsSource:

<ctl:LongListSelector Margin="0,0,-22,0" ItemsSource="{Binding NewApps}"
                      ItemTemplate="{StaticResource listCompanyAppTemplate}"
                      SelectedItem="{Binding SelectedApp, Mode=TwoWay}"/>

Todo listo!. Pulsamos F5 y ejecutamos la aplicación en el emulador. Tras
ejecutarse la aplicación y esperar unos leves segundos (tiempo que
tardará el programa en llamar al servicio) y…

Error!. Si vemos los detalles del error:

The remote server returned an error: NotFound.

Ya sabemos porque. El emulador de Windows Phone 8 es una máquina
virtual en Hyper-V y la red de la misma es distinta a la de la máquina
de desarrollo. Vamos a modificar el archivo de configuración de IIS
Express que lo podéis encontrar en la ruta:

%USERPROFILE%<your user name>DocumentsIISExpressconfig

El nombre del fichero es applicationhost.config. Lo
abrimos y buscamos la sección <sites>. Buscamos el sitio que tenga
el nombre de nuestro servicio y nos fijamos en el apartado
<bindings>.

Tenemos un binding ya establecido a localhost que no podemos
eliminar. Por lo tanto, añadimos un segundo binding igual al ya creado
reemplazando localhost por la IP de la máquina de desarrollo.

Vamos a añadir también en el Firewall de Windows una excepción para
IIS Express en el puerto que estámos utilizando. Guardamos los cambios.
Cerramos Visual Studio y lo volvemos a ejecutar con privilegios de
Administrador (es necesario para registrar nuestra aplicación con un
servicio no alojado en localhost). Ejecutamos la aplicación y voilá!

¿Podemos mejorar la Aplicación?

Sin duda, ya hemos comentado que podemos añadir funcionalidad extra a
nuestra Aplicación como noticias, notificaciones, alertas, etc. Sin
embargo, hay una pequeña modificación que aporta un extra importante en
la gestión de Aplicaciones, las actualizaciones.

Creamos una nueva colección en nuestro Vista-Modelo:

private ObservableCollection<CompanyApp> _updateApps;

Con su correspondiente propiedad:

public ObservableCollection<CompanyApp> UpdateApps
{
     get { return _updateApps; }
     set { SetProperty(ref _updateApps, value); }
}

¿Qué nos hace falta?. Sencillamente, una forma de detectar cuando una
Aplicación tiene una versión superior. Crearemos un Helper que nos
permita detectar cuando una Aplicación cuenta con una versión superior:

public static bool IsAnUpdate(string newVersion, string oldVersion)
{
     var newVer = System.Version.Parse(newVersion);
     var oldVer = System.Version.Parse(oldVersion);
 
     return newVer.CompareTo(oldVer) > 0;
}

Cuando recorremos el listado de Aplicaciones utilizamos nuestro Helper
para determinar si una Aplicación es nueva o una actualización:

pkg.Status = CompanyAppHelper.IsAnUpdate(
     pkg.Version, devicePkgVersion) ?
     Status.Update : Status.Installed;

Añadimos en nuestra interfaz un tercer PanoramaItem para mostrar el listado de actualizaciones:

<!--Update Apps-->
<phone:PanoramaItem Header="Actualizaciones">
     <ctl:LongListSelector Margin="0,0,-22,0" ItemsSource="{Binding UpdateApps}"
     ItemTemplate="{StaticResource listCompanyAppTemplate}"
     SelectedItem="{Binding SelectedApp, Mode=TwoWay}"/>
</phone:PanoramaItem>

Todo listo!. Si ejecutamos ahora veremos el tercer PanoramaItem con
las actualizaciones por lo que ya tenemos nuestro Company Hub
permitiendonos realizar una gestión completa de las Aplicaciones.

¿De verdad? Pero… si nisiquiera podemos instalar Aplicaciones…

Esto,.. tenéis razón, vamos a remediarlo. Empezaremos añadiendo una
nueva Vista que mostrará los detalles de una Aplicación seleccionada
donde permitiremos instalar o lanzar la Aplicación además de por
supuesto mostrar los detalles de la misma.

La lógica de esta segunda vista deberá ir en un nuevo vista modelo
donde lo principal será la Aplicación seleccionada. Añadiremos por lo
tanto una variable de tipo CompanyApp en el vista modelo:

private CompanyApp _currentApp;

Con su correspondiente propiedad pública:

public CompanyApp CurrentApp
{
     get { return _currentApp; }
     set
     {
          SetProperty(ref _currentApp, value);
     }
}

En la vista mostraremos los detalles principales de la Aplicación, en título, la descripción y la versión:

<StackPanel Orientation="Vertical" Margin="20,0,0,0">
     <TextBlock Text="VERSION" Style="{StaticResource PhoneTextSubtleStyle}" FontSize="{StaticResource PhoneFontSizeMediumLarge}" Margin="0,20,0,0"/>
     <TextBlock Text="{Binding CurrentApp.Version}" TextWrapping="Wrap"
          Style="{StaticResource PhoneTextLargeStyle}" FontSize="{StaticResource PhoneFontSizeLarge}"/>
     <TextBlock Text="DESCRIPTION" Style="{StaticResource PhoneTextSubtleStyle}" FontSize="{StaticResource PhoneFontSizeMediumLarge}" Margin="0,20,0,0"/>
     <TextBlock Text="{Binding CurrentApp.Description}" TextWrapping="Wrap"
          Style="{StaticResource PhoneTextLargeStyle}" FontSize="{StaticResource PhoneFontSizeLarge}"/>
</StackPanel>

Podríamos hacer la vista mucho más compleja y similar a la Store con un
Panorama con múltiples secciones, imágenes de la Aplicación e incluso
Aplicaciones relacionadas. Para nuestro caso lo dejaremos en algo más
simple. Lo que si debemos permitir es al menos, instalar y lanzar
Aplicaciones. Para ello vamos a añadir un par de botones :

<Button Content="Install"/>
<Button Content="Launch"/>

Debemos añadir los comandos correspondientes para cada botón:

private ICommand _installCommand;
private ICommand _launchCommand;

Enlazamos la interfaz con cada comando:

<Button Content="Install" Command="{Binding InstallCommand}"/>
<Button Content="Launch" Command="{Binding LaunchCommand}"/>

Nos centramos de entrada en la lógica del comando que utilizaremos para
instalar Aplicaciones.  Verificamos que el fichero de la Aplicación
existe y en caso afirmativo llamamos al método AddPackageAsync que procederá con la instalación de la Aplicación:

if (!string.IsNullOrEmpty(CurrentApp.XapPath))
{
     var result = await InstallationManager.AddPackageAsync(CurrentApp.Title, new Uri(CurrentApp.XapPath));
     if (result.InstallState == Windows.Management.Deployment.PackageInstallState.Installed)
          _dialogService.Show(CurrentApp.Title + " ha sido instalada.");
}

En el segundo comando, que nos permite lanzar una Aplicación, primero
obtendremos el listado de Aplicaciones instaladas para posteriormente
intentar lanzar la Aplicación deseada con el método Launch:

var devicePkgs = InstallationManager.FindPackagesForCurrentPublisher();
var devicePkg = devicePkgs.FirstOrDefault(p => p.Id.ProductId.Contains(CurrentApp.ProductId.ToString().ToUpper()));
 
if (devicePkg != null)
     devicePkg.Launch(string.Empty);

Puedes descargar el ejemplo del Company Hub a continuación:

Conclusiones

Las opciones disponibles para poder distribuir aplicaciones a nivel
empresarial crecen y es algo sumamente positivo. A los sistemas MDM u
otras alternativas como publicar en la Store la Aplicación protegiendola
con credenciales se suma la opción vista en este artículo donde cabe
destacar la sencillez con la que podemos distribuir las aplicaciones,
basta con un simple email o un enlace, además de ser una opción bastante
asequible para la empresa. Recordando los pasos vistos:

  • Crear una cuenta de desarrollo para Windows phone a nivel de empresa.
  • Obtener el certificado de Symantec.
  • Generar el archivo AET.
  • Firmar las Aplicaciones que queremos distribuir.
  • Opcionalmente, crear un Company Hub para facilitar a empleados la gestión de Aplicaciones.

Más Información

[Windows Phone] Marketing in a Box. Promociona tus Apps!

Introducción

Cuando desarrollamos una Aplicación la mayor
parte del tiempo estimado a la misma se queda en el análisis y
desarrollo. Incluso tras publicarla damos por terminado nuestro trabajo
cuando realmente no ha hecho más que comenzar. En este momento debemos
realizar un conjunto importante de acciones entre las que podemos
destacar la promoción de la Aplicación:

  • Página web de la Aplicación.
  • Videos promocionales.
  • Utiilizar las redes sociales.
  • Envía tus Aplicaciones a webs donde puedan hacer reviews.
  • Facilitar a tus usuarios el contacto, que publiquen reviews de la Aplicación y por supuesto responder con actualizaciones.
  • Etc.

La
mayoría de puntos aunque lógicos no se suelen hacer, ¿porque?. En
muchas ocasiones es por un cómputo de circunstancias como la falta de
tiempo o de conocimientos por ejemplo como para realizar la edición de
un video profesional para promocionar la Aplicación.

¿Y si contásemos con una herramienta sencilla que nos facilitara el proceso?.

Marketing in a Box

Marketing
in a Box es una herramienta online gratuita que permite crear con suma
facilidad una web, un video promocional, página Facebook e incluso
banners.

La herramienta la podéis encontrar en la siguiente dirección:

http://developer.nokia.com/Distribute/Promoting_your_app/Home

NOTA: Se requiere estar registrado dentro del área de desarrolladores de Nokia.

Probamos la herramienta

Vamos
a analizar todas las posibilidades de la herramienta probándola
directamente. Tras hacer Login en el área de desarrolladores de Nokia
comenzamos a trabajar con la herramienta. Todo lo que necesitamos para
crear nuestro video promocional, página web, banners, etc. es tan solo
la URL de la Aplicación en la Store y completar un simple formulario.

Para
hacer pruebas tomaremos de base por ejemplo una de las Aplicaciones
imprescindibles de Nokia en la Store como es HERE Maps. La URL de la
Store española es:

http://www.windowsphone.com/es-es/store/app/here-maps/efa4b4a7-7499-46ce-aa95-3e4ab3b39313

Comenzamos.
Lo primero que debemos hacer es definir las bases de nuestro proyecto
de Marketing, nombre, URL de la Store,  que deseamos crear entre video
promocional, web, página Facebook y/o banners, que dispositivo
utilizaremos (podemos elegir entre un Nokia Lumia, 820, 900 o 920) y el
idioma a elegir entre los que se encuentra el español.

Tras comenzar rellenando la información básica de nuestra Aplicación
comenzaremos un simple asistente donde iremos configurando cada uno de
los elementos seleccionados (video, web, etc.).

En el primer paso del asistente la herramienta toma directamente la
categoría, icono e imágenes de la Aplicación listas para utilizar en la
creación de nuestro video, web, etc:

En el siguiente paso configuraremos el video promocional de nuestra
Aplicación. La herramienta ya ha tomado las imágenes de la Store y las
utilizará para el video permitiéndonos elegir entre una selección de
adjetivos o el tipo de música:

Siguiendo con el asistente el siguiente paso nos permite configurar la
página web y la página Facebook de la Aplicación. Podemos configurar el
contenido de hasta tres párrafos (máximo 900 carácteres por párrafo) y
los enlaces a redes sociales:

En el último paso del asistente podemos configurar los Banners
publicitarios de la Aplicación. Podemos elegir el teléfono a utilizar,
los textos, etc:

Llegado al final de asistente se generarán todos los recursos.

Podéis autopublicar el video en YouTube, ver una previsualización de
las páginas y descargar en formato zip tantos la página como los
banners.

NOTA: El video promocional tardará entre 20-30 minutos en generarse.

Fácil,
¿verdad?. Recordar que vuestro trabajo no finaliza con la publicación
de la Aplicación en la Store y además ya no tenéis excusas para llegar
un poco más alla!

Más información

Material y resumen del evento Windows Phone Week Spain

Introducción

El pasado 5 de Octubre tuvo lugar el Windows Phone Week en España. El Windows Phone Week es evento mundial donde cada MVP de la plataforma organizaba un evento de
un día entero de duración en la primera semana de Octubre con el
objetivo de dar a conocer la plataforma desde un punto de vista técnico.

En España, mi compañero Josué Yeray (MVP de Windows Phone) se lanza con la organización del evento, apoyándose en Rafa Serna Alejandro Campos, Roberto Luis Bisbe y un servidor. ¿Queréis saber que dio de si el evento?

El Evento

El evento tenía una agenda repleta de charlas y el
comienzo del evento estaba previsto pronto, a las 9:00h de la mañana de
un sábado. Realmente impresionante la afluencia de personas que se
acercaron al evento, la sala de Madrid On Rails estaba practicamente al
completo durante gran parte del evento:

Sala llena!
Sala llena!

Al
comienzo retamos a los asistentes a venir disfrazados, el mejor disfraz
se llevaría un fantástico Nokia Lumia 820 con base de carga
inhalámbrico. Esperábamos arrancar con mucha diversión con esta
simpática propuesta teniendo que elegir al ganador, aunque finalmente lo
tuvimos realmente fácil, ¿que porque?

Angry Birds
Angry Birds

Este “valiente” fue el único asistente que llego disfrazado asi que la elección fue sencilla. Enhorabuena!.

Entrando
ya en materia, Josué Yeray dio comienzo al evento con una introducción
donde se presentaban a los ponentes, se recordaba la agenda,se recordaba
que contaríamos con un catering, etc:

Introducción al evento
Introducción al evento

La agenda era la siguiente:

  • 9:00 Keynote
  • 9:10 Desarrollando con MVVM
  • 10:20 Rendimiento en aplicaciones
  • 11:30 Desde Windows Phone 7 a Windows Phone 8
  • 12:40 Descubriendo Windows Phone App Studio
  • 14:40 Azure mobile services, desde las trincheras
  • 15:50 Efectos alucinantes con NOKIA IMAGING SDK
  • 17:00 NFC a tope!
  • 18:10 Distribución empresarial en Windows Phone
  • 19:20 Mejora tu App y sácale partido
  • 20:30 Clausura

La
primera sesión fue un cúmulo de buenas prácticas realizada por Josué
Yeray introduciendo el patrón MVVM, analizando las partes que lo
componen y los beneficios:

MVVM!
MVVM!

Tras
esta primera charla (y los correspondientes 10 minutos de descanso
entre ellas), llegó Alejandro Campos para hablar sobre rendimiento. Se
abordaron buenas prácticas, muchos consejos y se vieron algunas
herramientas que pueden detectar ese cuello de botella en consumo que
puede tener nuestra Aplicación.

La tercera charla vino por parte
de Roberto Luis Bisbé y trataba de como migrar aplicaciones Windows
Phone 7 a Windows Phone 8. Se abordaron problemas como los cambios de
memoria, de resolución, que ocurre con XNA entre otros puntos
interesantes:

De WP7 a WP8!
De WP7 a WP8!

A
continuación, era el turno de la última charla antes del parón para
comer, donde me tocaba en esta ocasión a mi hablar sobre Windows Phone
App Studio, la nueva herramienta de Microsoft para crear Aplicaciones
Windows Phone 8. Sin embargo, el proyector requería una conexión VGA que
mi portátil no tenía, asi que mientras entraba en modo pánico interior y
se buscaba una solución, decidimos dar paso a la siguiente charla, una
temáticamente sumamente interesante como es Azure Mobile Services de la
mano de Rafael Serna:

Azure Mobile Services
Azure Mobile Services

Tras
la charla tuvimos una hora para reponer fuerzas gracias a un estupendo
catering gracias a Microsoft. Tiempo fantástico para resolver dudas,
escuchar ideas, desvirtualizar a gente. Sin duda, a nivel personal, si
el evento ya era una gozada en si, poder desvirtualizar a personas a las
que sigues y con las que te has intercambiando ideas, tutoriales y
demás información es un verdadero placer:

Merecido descanso
Merecido descanso

Tras
reponer fuerzas, continuo Rafa hablando de… Azure Mobile Services.
¿No se había hablado ya?. Si, si, pero la charla anterior gusto tanto,
que entre los ponentes y los asistentes decidimos suprimir la charla de
NFC para tener ración doble de Azure Mobile Services.

Tras Rafa,
me toco a mi hablar de Windows Phone App Studio. Para quienes tengan
curiosidad por saber como solventamos el problema de conexiones y el
portátil, la solución fue usar el portátil de Josué para conectar al
proyector accediendo por escritorio remoto al mio. A pesar de lo que
podáis pensar, dio resultado. En la charla de Windows Phone App Studio,
introducimos la herramienta, creamos una Aplicación sobre el evento,
descargamos el código fuente y lo analizamos para finalmente acabar
extendiendolo un poco:

Windows Phone App Studio
Windows Phone App Studio

Quedaban
tres charlas aun y los ponentes nos preguntabamos si era excesivo
continuar (vistas algunas caras de cansancio) o si debíamos acortar un
poco el evento. Dimos la elección a los asistentes, si querían dejarlo
ya, continuar hasta el final (había “valientes” que si) o acortar las
sesiones. Finalmente, decidieron ver todo lo que quedaba pero acortando
las sesiones y suprimiendo los 10 minutos de descanso.

Tras la
desición, regreso Josué Yeray a escena para hablar de Nokia Imagin SDK
dejando claro el mundo de posibilidades, opciones y filtros que
aportaban el SDK de Nokia.

Tras Josué, me toco a mi de nuevo esta
vez hablando de la distribución empresarial. Vimos como adquirir un
certificado Symantec para realizar la distribución, como crear el AET,
como firmar Apps y finalmente vimos como crear un Company Hub
permitiendo realizar una gestión adecuada de Aplicaciones, descubrir
nuevas, ver las instaladas, poder instalar, etc.

Cerrando el
evento, teníamos una gran charla de Alejandro Campos donde se exponían
una enorme cantidad de consejos para lograr destacar la Aplicación
creada sobre las demas:

Buenos consejos
Buenos consejos

Terminadas las charlas técnicas faltaba algo, algo importante, que era… ah, si, regalos!

Aquí,
Rafa rescató una genial idea, el preguntón. Basicamente, entre todos
habíamos preparado un concurso de preguntas relacionadas con todo lo
visto en las sucesivas charlas. Los asistentes se pondrían de pie y ante
cada pregunta podrían elegir entre dos opciones representadas por tener
las manos alzadas o tras la espalda. Aquellos que iban fallando
preguntas, se iban retirando. Suena divertido, ¿verdad?. Lo fue. Aunque
debo decir que estamos todos enormemente contentos con el público
asistente, estuvieron todas las sesiones muy atentos. Costo muchísimo
quedarnos con los finalistas.

El listado de regalos fue:

Tras la entrega de regalos llegamos al final de evento, casi 12 horas de Windows Phone,
fantástico!. Las sensaciones no pueden ser más positivas, se abordaron
multitud de temas que el público supo apreciar con suma atención. Solo puedo terminar agradeciendo de entrada a Matteo, Joost y Rodolpho por comenzar la movida, por supuesto a Josué Yeray por gestionar el evento en España, a los chicos de Madrid On Rails por la sala, a todos mis compañeros por sus ponencias y
labores de gestión y por supuesto a todos los asistentes ya que sin
ellos no hubiese sido posible. No se vosotros, pero yo lanzo la piedra, ¿repetimos el año que viene?

Gracias a todos!
Gracias a todos!

Extra

Ya
hemos repasado que dio de si el evento, pero como todo evento, aparte
de las charlas, los regalos y demás, siempre hay un “algo” extra. Y la
verdad es que en esta ocasión hubo muchos extras!

  • Cuento con un gran nuevo compañero de trabajo:
Icinetizado
Icinetizado
  • Contamos
    con una gran visita sorpresa al evento, Desiree Lockwood, Senior
    product marketing manager de Windows Phone que vino desde USA para
    asistir al evento:
Desiree
Desiree
  • Alejandro
    Campos entre otros llevaba una amplia colección de la familia Lumia, y
    muchos asistentes pudieron probar de primera mano algunos de los últimos
    modelos de la gama:
Probando teléfonos
Probando teléfonos
  • Además,
    había personas que buscaban desarrollador Windows phone y lo
    encontraron; muchas personas que vinieron de lejos para llegar al
    evento, Jerez, Bilbao o Sevilla por ejemplo; algunos encontraron
    solución a un problema en su Aplicación, muchos (entre los que me
    incluyo) logramos desvirtualizar a mucha gente que siempre es una
    sensación fantástica y mucho más.

Material

El evento
comenzó con una pequeña keynote de introducción donde se repasó la
agenda, se presentaron ponentes, se anunciaron los regalos, etc. La
tenéis disponible a continuación:

Por otro lado, tube el placer de participar en el evento con dos charlas:

1º Descubriendo Windows Phone App Studio

¿Conocéis Windows Phone App Studio?,
¿aún no? En esta sesión vimos todas las posibilidades de esta nueva
herramienta destinada a la creación de Aplicaciones para Windows Phone
8:

Realizamos
en directo la Aplicación del evento con la agenda,el listado de
ponentes, listado de sponsors, sección de contacto y más. Podéis
descargar la misma a continuación:


2º Distribución empresarial en Windows Phone

En
esta sesión aprendimos todo lo necesario para distribuir Aplicaciones
Windows Phone en la empresa sin necesidad de pasar por la Store:

En
esta charla aprendimos como generar el archivo AET (Application
Enrollment Token), como firmar Aplicaciones y como crear un Company Hub.
A continuación, podéis descargar el Company Hub de ejemplo realizado:


Más información

Página web del evento

[Windows Phone] Crear un Company Hub (1/2)

Introducción

Antes de la llegada de Windows Phone 8, con
Windows Phone 7 en el mercado, como desarrolladores teníamos solo dos
opciones para distribuir aplicaciones empresariales destinadas para los
dispositivos de empleados:

  • Publicar la Aplicación en la Store
    protegiendo el acceso con usuario y contraseña. La Aplicación queda
    expuesta a ser descargada por cualquier usuario de la tienda aunque
    finalmente no accedan a su funcionalidad.
  • Usar un software de
    gestión de dispositivos (MDM) para la gstión y distribución de las
    Aplicaciones. Microsoft ofrece dos MDMs, Windows Intune y System Server
    2012. Sistema que encaja en muchas empresas aunque quizás el esfuerzo en
    coste y gestión no llega a permitir esta posibilidad para otras.

Windows Phone 8 incluye muchas novedades pensadas directamente para el sector empresarial.

Novedades de Windows Phone 8 para el sector empresarial

Con
Windows Phone 8, Microsoft ha realizado un esfuerzo para convencer a
las empresas de utilizar la plataforma en sus soluciones empresariales.

  • Seguridad.
    La seguridad es un punto vital sumamente importante a la hora de
    realizar aplicaciones empresariales para dispositivos móviles. En las
    aplicaciones de escritorio se suele tener el escudo de un entorno muy
    controlado como es el dominio. Para satisfacer las necesidades de
    seguridad requeridas a nivel empresarial:

    • BitLocker. Cifrado del almacenamiento.
    • Arranque
      seguro. Si algun virus o malware intenta modificar el núcleo del
      sistema, modificando la firma del mismo provocará que al ser detectado
      se detenga el arranque del mismo (UEFI Secure Boot).
    • Sandbox.
      Las aplicaciones se ejecutan todas en un entorno cerrado y controlado
      que evita que desde una aplicación no se pueda acceder al área de
      memoria asignada a otra.
  • Lync. Con la integración de Lync en Windows Phone se permite a los empleados entrar en conversaciones desde el teléfono.
  • VoIP.
    Windows Phone 8 permite a los desarrolladores crear aplicaciones que
    utilicen la conexión de datos para realizar llamadas por VoIP.
  • Office. Desde el comienzo del sistema Windows Phone puede contar la integración de Office en el sistema.
  • Portable Class Library.
    En Windows Phone 8 el núcleo ha sido actualizado. En lugar de utilizar
    Windows CE se utiliza Windows NT, es decir, el mismo núcleo que utiliza
    Windows 8. Esto supone una ventaja a la hora de promover el port de
    aplicaciones Windows 8 a Windows Phone con facilidad:

    • Portable Class Libraries
    • Windows Runtime API
    • Condiciones de compilación
    • Enlazado de ficheros, etc.
  • Distribución. Podemos realizar una distribución no administrada simplificando sumamente el proceso.

Distribución empresarial

Entre
las novedades pensadas para el sector empresarial debemos destacar las
novedades en la distribución. Podemos realizar una distribución no
administrada que permite distribuir aplicaciones de manera muy simple
mediante un simple enlace o con un archivo adjunto en un correo
electrónico.

Sin duda, esta nueva forma de distribución es
fantástica y abre muchas posibilidades aunque puede llegar a ser confusa
para el usuario. El usuario esta habituado a instalar y gestionar
aplicaciones desde la Store, no gestionando ficheros que recibe por
correo.

¿Y si pudiésemos crear nuestra propia “Store”?

Podemos!. Es un nuevo concepto disponible con Windows Phone 8 llamada Company Hub. Permite crear un Hub personalizado don mostrar y permitir instalar las aplicaciones disponibles de la empresa.

Manos a la obra…

Vamos a crear un Company Hub!. Pero… esperad!, hay una serie de requisitos que debemos tener antes de lanzarnos manos a la obra.

  • Debemos tener una cuenta de desarrollo de empresa en el Windows Phone Dev Center.
  • Debemos obtener un certificado de distribución empresarial.

https://products.websecurity.symantec.com/orders/enrollment/microsoftCert.do

  • Una vez comprado el certificado e instalado en la máquina necesitamos
    exportarlo en formato PFX (incluye la clave privada). Este certificado
    lo utilizaremos para generar la inscripción de aplicación (AET) y para
    firmar las aplicaciones. El archivo AET se debe instalar en el teléfono
    antes de que se pueda instalar una aplicación empresarial. Con la
    instalación del AET, el teléfono se incribe automáticamente en la cuenta
    de la empresa previamente establecida.

  • Generamos el archivo AET. Abrimos la Línea de Comandos de Visual Studio 2012. Utilizaremos la herramienta AetGenerator para crear el AET:

    "C:Program Files (x86)Microsoft SDKsWindows Phonev8.0ToolsAETGeneratorAetGenerator.exe" certificado contraseña
    • Certificado: Obligatorio. Archivo PFX.
    • Contraseña: Obligatoria. Debe ser la clave utilizada para leer el archivo PFX.

NOTA: El generador crea tres versiones diferentes
del AET, una versión cruda que contiene la AET en formato XML (.xml),
una versión codificada en Base64 pensada para ser utilizada conun MDM
como Windows Intune o System Center 2012  y por último, un archivo en
formato XML que puede ser instalado directamente en el teléfono a través
de un archivo adjunto del correo electrónico o mediante Internet
Explorer (.aetx). Puedes obtener más información al respecto desde el
siguiente enlace.

NOTA:
Es importante tener en cuenta el periodo de validez del archivo AET. En
efecto, como os podéis imaginar el archivo AET tiene fecha de
caducidad, que por defecto es un año. Una vez superado el periodo, las
aplicaciones o el company hub que utiliza el AET no podrán ejecutarse.
Por lo tanto, se debe llevar una gestión del archivo, renovando el mismo
antes de la fecha de expiración.

Tras completar todos los
requisitos necesarios (cuenta de desarrollador, obtener el certificado
empresarial y generar el archivo de inscripción, AET) estamos listos!

El
objetivo del Company Hub no es otro que facilitar a los empleados el
descubrir e instalar aplicaciones por lo que como requisito para
desarrollar el Company Hub necesitamos… aplicaciones!

Para
nuestro Company Hub de pruebas podríamos utilizar algunos de los
ejemplos de este mismo blog aunque por facilitar las cosas crearemos
varias aplicaciones en blanco creadas desde una plantilla Visual Studio,
todas con el mismo ID de editor, las requerimos en nuestro Company Hub
pero no necesitamos que cumplan ninguna funcionalidad especial en
nuestro caso asi que con cambiar el título cumple. En nuestro Company
Hub necesitaremos el ID de editor de las aplicaciones.
En toda Aplicación Windows Phone tenemos el archivo de manifiesto
WMAppManifest.xml ubicado en la carpeta Propiedades de la solución. Al
abrir el archivo desde Visual Studio vemos un editor visual con cuatro
pestañas, una de las cuales es la pestaña de empaquetado (Packaging).

La
pestaña de empaquetado facilita información sobre el autor, la gestión
de versiones y los idiomas soportados. Para nuestros intereses nos
interesan tres datos fundamentales:

  • El ID de editor
  • El GUID para identificar la Aplicación
  • La versión

El
GUID de la Aplicación se utiliza en el Company Hub para identificar
cada Aplicación, la versión se utiliza para determinar cuando hay
actualizaciones de la Aplicación y por último, y lo más importante, el
ID de editor debe coincidir con el ID de editor utilizado en el Company
Hub.

El SDK y el Company Hub

El SDK de Windows Phone 8
contiene un conjunto de APIs destinados a gestionar el conjunto de
aplicaciones de un Company Hub. Concretamente:

  • La clase Package.
    La tenemos disponible dentro del namespace Windows.ApplicationModel.
    Esta clase nos permite acceder a la información del archivo de
    manifiesto de un paquete como la versión o su identificador.
  • La clase IntallationManager.
    La tenemos disponible dentro del namespace
    Windows.Phone.Management.Deployment. Nos permite instalar aplicaciones,
    obtener el listado de aplicaciones instaladas, obtener el progreso de un
    proceso de instalación, etc.

Usaremos en nuestro Company Hub los siguientes métodos agrupados en las clases anteriores:

Creando un Company Hub

Todos
los requisitos preparados. Comenzamos a crear nuestro Company Hub. Como
siempre, crearemos un ejemplo práctico paso a paso. Nuestro Company Hub
constara de dos partes:

  • Servidor. Nuestro
    objetivo es un servidor que devuelve la meta información de las
    aplicaciones junto a los Xaps de las mismas a la Aplicación Windows
    Phone. Las posibilidades son múltiples, podemos utilizar blobs de Azure
    para gestionar la meta información, servicio WCF, etc. En nuestro
    ejemplo crearemos una aplicación WCF muy sencilla.
  • Cliente.
    Aplicación Windows Phone 8 que se nutre de la información del servidor
    además de apoyarse en las APIs previamente mencionadas para permitir
    gestionar las Aplicaciones (instalar, lanzar, etc.).

Manos a
la obra!. Ya tenemos todos los requisitos necesarios y podemos comenzar con el Company Hub en si aunque me temo que eso será en la segunda parte del artículo
que tendréis disponible en breve, no os lo perdáis!

Más información

[EVENTO] Windows Phone Week Spain

Introducción

Recientemente se reunieron el conjunto de MVPs
de Windows Phone a charlar sobre ciertos temas y claro… no puedes
reunir un grupo asi sin que la “lien parda”. De esta reunión sale nada
más y nada menos que…  un evento mundial sobre Windows Phone!

En España, nuestro compañero Josué Yeray (MVP de Windows Phone) se lanza de lleno a la piscina para organizar el evento, cuenta el asunto a Rafa Serna Alejandro Campos y un servidor, y surge lo siguiente…

El evento

Windows Phone Week es un evento mundial donde cada MVP de la plataforma organiza un evento de un día entero de duración en la primera semana de Octubre, en España será el próximo 5 de Octubre (sábado para que podáis asistir sin problemas), con el objetivo de dar a conocer la plataforma desde un punto de vista técnico.

Además, por si aun no hemos logrado captar tu atención, tendremos regalos
como un teléfono, licencias de desarrollador y muchas otras sorpresas
que tenemos preparadas, ¿vas a dejar escapar esta oportunidad?

Regístrate!

La agenda

El evento durará todo el día contando con un total de 8 charlas técnicas
relacionadas con la plataforma. Hablaremos de Windows Phone 8, de
Windows Phone App Studio, de NFC,  rendimiento, de Nokia Imaging SDK, de
buenas prácticas, mobile services, distribución empresarial… todo ello
con pausas entre charlas de hasta 10 minutos para poder un poco de
networking, desvirtualizar gente, conocer gente nueva y sin duda pasar
un día agradable.

La agenda es la siguiente:

  • 9:00 AM   Keynote. Introducción al evento y registro.
  • 9:10 AM   Desarrollo con MVVM  con Yeray Julián Ferreiro
  • 10:20 AM Rendimiento en aplicaciones Windows Phone  con Alejandro Campos Magencio
  • 11:30 AM Descubriendo Windows Phone App Studio  con Javier Suarez Ruiz
  • 12:40 PM Azure Mobile Services, desde las trincheras con Rafael Serna Medina
  • 14:40 PM   Efectos alucinantes con Nokia Imaging SDK  con Yeray Julián Ferreiro
  • 15:50 PM   NFC a tope!!! con Rafael Serna Medina
  • 17:00 PM   Distribución empresarial en Windows Phone con Javier Suarez Ruiz
  • 18:10 PM   Mejora tu app y sacale partido con Alejandro Campos Magencio
  • 19:20 PM Clausura y entrega de regalos.

Al medio día os invitaremos a comer, con catering gracias a Microsoft Ibérica asi que nos preocupéis por nada, solo necesitamos vuestra presencia y vuestra ilusión.

Lugar

El evento tendrá lugar en Madrid.
Aun no podemos confirmar el lugar exacto ya que seguimos esforzándonos
para determinar un lugar que permita el aforo necesario junto a los
accesos y requisitos deseados.

Más información

[Evento CartujaDotNet] De Windows Phone App Studio a la Store!

El evento

¿Conoces Windows Phone App Studio?,
¿aún no? En esta sesión conoceremos todas las posibilidades de esta
nueva herramienta destinada a la creación de Aplicaciones para Windows
Phone 8. Partiremos de una Aplicación generada desde la herramienta,
descargaremos el código para analizarlo. Una vez analizado lo
extenderemos con nueva funcionalidad, prepararemos la Aplicación para
multiples idiomas y añadiremos publicidad para terminar dejandolo todo
listo para publicar en la Store.

¿Te apuntas?

Fecha

El evento tendrá lugar el próximo Jueves, 12 de Septiembre de 19:30h a 21:30h (2 horas de duración).

Lugar

Tendrá lugar en el Cloud Pointing de Sevilla situado en el Parque Empresarial Nuevo Torneo. Tenéis la información exacta del lugar a continuación:

c Biología, 12, Edificio Vilamar 2, 3ª Planta
Parque Empresarial Nuevo Torneo
41015 Sevilla

Ponente

Javier Suárez, entusiasta de la tecnología con años de experiencia en aplicaciones de escritorio y móviles. Arquitecto de Software en Icinetic (@jsuarezruiz).

Regalos

Manteniendo la tradición comenzada ya con eventos anteriores tendremos regalos entre los asistentes:

  • Todos los asistentes tendrán un código de invitación para poder acceder a Windows Phone App Studio.

Más información