Creando una red de apps con la Universal Windows Platform

Con la llegada de Windows 10 y de la Universal Windows Platform nos llegan también nuevas maneras de hacer que nuestras apps puedan compartir información entre sí y con otras apps. Veámoslas.

Comunicación entre apps

Hasta ahora nuestras apps de Windows 8.1/Windows Phone 8.1 podían registrarse para atender a un protocolo determinado, y cualquier otra app podía enviarles información con su Uri correspondiente:

image

Nuestras apps también podían registrarse para abrir ficheros de extensiones determinadas, y cualquier otra app podía decirles que abriesen un fichero así:

image

Otra manera en la que nuestras apps podían recibir información de otras apps era mediante el contrato de compartir (Share Contract). Nuestras apps se registraban para recibir un tipo de datos determinado, y cualquier otra app podía iniciar el envío de información con:

image

Estos mecanismos para compartir información entre apps siguen existiendo en Windows 10, pero la Universal Windows Platform nos trae también mejoras en este aspecto. Las repasamos a continuación.

Invocar una app específica mediante Uri

Si tenemos varias apps registradas para atender las peticiones a un protocolo determinado, podemos indicar en la app de origen qué app en concreto queremos que procese la información de la Uri. Para ello utilizaremos el Package Family Name de la app de destino:

image

El Package Family Name podemos encontrarlo por ejemplo en la sección de Packaging del Package.appxmanifest de una app, o conseguirlo mediante esta llamada a la API:

image

Invocar apps mediante Uri con información adicional

A la hora de invocar otra app mediante Uri, ahora podemos adjuntar un conjunto de pares de clave-valor que se transmitirá a la app de destino junto a la Uri. La información que enviemos no podrá exceder los 100 KB. Esto nos permitirá, por ejemplo, compartir un fichero (que puede ser mucho mayor de 100 KB) junto a la Uri de la siguiente manera:

image

Descubrir si hay apps instaladas para procesar una Uri

Si una app quiere enviar información a cualquier otra mediante una Uri pero quiere saber antes si hay alguna app que pueda procesar el protocolo deseado, puede hacerlo así:

image

Y si una app quiere enviar información a otra concreta mediante una Uri pero quiere saber antes si está instalada, puede hacerlo con su Package Family Name:

image

También podemos obtener todas las apps que soportan un protocolo determinado:

image

Descubrir si hay apps instaladas para abrir un tipo de fichero

Lo mismo que acabamos de ver para las Uri podemos hacerlo para tipos de fichero con Launcher.QueryFileSupportAsync y Launcher.FindFileHandlersAsync.

Invocar apps mediante Uri y recibir información de vuelta

Ahora nuestras apps, además de enviar información, pueden recibir información de la app invocada mediante Uri.

La app de origen le envía la Uri a la app de destino y espera por los resultados:

image

La app de destino recibe la Uri, hace su trabajo, y devuelve un resultado:

image

Almacenamiento Compartido

Ahora las apps de un mismo publicador pueden compartir ficheros y configuración mediante el uso de carpetas compartidas (con ciertas restricciones como que la información no puede compartirse entre usuarios). Para ello tenemos que editar el manifiesto de las apps para indicar las carpetas que queremos utilizar, que serán creadas automáticamente:

image

Y para acceder a una de ellas podremos hacerlo con:

image

Podemos también limpiar una de las carpetas en cualquier momento con:

image

App Services

Los App Services son un caso especial de Background Tasks que nos permiten que una app exponga una serie de servicios para que sean utilizados por otras apps. Podemos pensar en App Services como si fueran servicios web en un dispositivo.

En este artículo puedes encontrar más detalles: App Services en la Universal Windows Platform

 

 

Un saludo,

Alejandro Campos Magencio (@alejacma)

Technical Evangelist

PD: Mantente informado de todas las novedades de Microsoft para los desarrolladores españoles a través del Twitter de MSDN, el Facebook de MSDN, el Blog de MSDN y la Newsletter MSDN Flash.