Capacidad de compartir para nuestra aplicación Metro

Una de las opciones que incorpora Windows 8, es el chime o pestaña Share, que permite que nuestras aplicaciones puedan enviar contenidos a otras de una manera sencilla. Para ello, tanto la aplicación origen como la destino tiene que tener la capacidad de aceptar elementos (ShareTarget) o de enviarlos (SendTarget).

Aceptando elementos compartidos de otras aplicaciones

Lo primero que haremos para aceptar estos contenidos, es agregar a nuestra solución un nuevo elemento de tipo Share Contract:

Una vez agregado a nuestra aplicación, se editará automáticamente el fichero .appxmanifest (Del cual se ha hablado en el anterior artículo Windows 8 para desarrolladores). Este fichero deberemos editarlo, ya sea manualmente o mediante el asistente, acudiendo a la pestaña Declarations para para especificar qué tipo de fichero queremos aceptar:

En nuestro caso, vamos a aceptar varios tipos de entradas, aunque no hemos terminado, ya que necesitamos que nuestra aplicación sea capaz de procesar qué está recibiendo, para ello acudimos al fichero de code-behind de la página de búsqueda que hemos creado, y en la función Activate(…) agregamos el siguiente código, que le da valores al texto por defecto:

ItemTitle.Text = args.ShareOperation.Data.Properties.Title;
ItemDescription.Text = args.ShareOperation.Data.Properties.Description;

Esto nos permitirá que nuestra aplicación pueda recibir y procesar información desde cualquier otra aplicación. Para probarlo, una vez compilemos y ejecutemos nuestra aplicación, basta con abrir IE10 (versión Metro), acudir a cualquier web, cargar el chime de compartir (llevar el cursor a la posición inferior derecha de la pantalla y seleccionando Share), al hacerlo, veremos una serie de aplicaciones que soportan la capacidad de admitir contenidos, entre ellas la nuestra. Si la seleccionamos, veremos una pantalla muy parecida a esta:

Compartiendo desde nuestra aplicación

La otra cara de la moneda consiste en dar opciones a nuestra aplicación para que podamos compartir texto, imágenes o ficheros. Para ello tendremos que usar la clase DataTransferManager, que permite personalizar la transferencia de datos entre las aplicaciones. Inicializamos el objeto desde el constructor de la página en cuestión.

DataTransferManager datatransferManager = DataTransferManager.GetForCurrentView();
datatransferManger.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(datatransferManager_DataRequested)

Al escribir la segunda línea Visual Studio nos dará la opción de generar la función, y si hacemos click en aceptar podremos agregar lo siguiente a la función que se acaba de generar:

...
args.Request.Data.Properties.Title = "Ejemplo de titulo";
args.Request.Data.Properties.Description = "Ejemplo de Descripcion";
args.Request.Data.SetText("Ejemplo de mucho texto");
...

Finalmente, ejecutamos nuestra aplicación y probamos a compartir con otra (por ejemplo [email protected] que viene incluida con Windows Developer Preview):

Como se puede apreciar, [email protected] accede a la información del texto. De igual manera podemos compartir ficheros, una fuente de una webcam, una imagen, o una url.

En este artículo hemos visto cómo permitir que nuestra aplicación acceda a lo que compartan otras, y cómo permitir que desde nuestros programas se pueda a su vez compartir información o datos concretos con terceros.

Puedes encontrar más información y escenarios más complejos en los siguientes ejemplos de Windows 8

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s