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:
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í:
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:
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:
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:
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:
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í:
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:
También podemos obtener todas las apps que soportan un protocolo determinado:
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:
La app de destino recibe la Uri, hace su trabajo, y devuelve un resultado:
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:
Y para acceder a una de ellas podremos hacerlo con:
Podemos también limpiar una de las carpetas en cualquier momento con:
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.