Inicio rápido: compartir contenido (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Las aplicaciones eficaces permiten que los usuarios compartan fácilmente lo que están haciendo con sus amigos y familiares. Las aplicaciones que facilitan a los usuarios el uso compartido de contenido a menudo reciben más atención, lo que alienta a los usuarios a adoptarlas con más frecuencia.

Si quieres aprender a usar estas API, sigue leyendo. Si quieres obtener más información acerca de la manera en que tu aplicación puede recibir contenido compartido, consulta Inicio rápido: recepción de contenido compartido.

Objetivo: Después de leer este documento de inicio rápido, tendrás una buena noción acerca de cómo compartir contenido.

Requisitos previos

  • Debes estar familiarizado con Visual Studio y sus plantillas.
  • Debes tener conocimientos sobre el desarrollo en HTML y JavaScript.

Instrucciones

Elección de formatos de datos

Toda las operaciones de uso compartido de contenido se basan en el objeto DataPackage. Este objeto contiene los datos que el usuario quiere compartir. Los tipos de contenido que un DataPackage puede contener son, entre otros:

  • Texto sin formato
  • Identificadores uniformes de recursos (URI)
  • HTML
  • Texto con formato
  • Mapas de bits
  • Archivos
  • Datos definidos por el desarrollador

Un objeto DataPackage puede contener uno de estos formatos o más, en cualquier combinación. Además, DataPackage puede contener una función delegada, es decir, una función a la que se llama cuando la aplicación receptora solicita datos. Te recomendamos que uses una función delegada cuando los datos que un usuario quiere compartir hacen uso intensivo de los recursos; en esos casos, una función delegada puede ayudar a que tu aplicación comparta los datos de manera más eficaz.

Elección de propiedades

Cuando empaquetas datos para compartirlos, tienes la opción de suministrar diversas propiedades que proporcionan información adicional acerca del contenido que se va a compartir. Aprovechar estas propiedades puede ayudar a las aplicaciones de destino a mejorar la experiencia del usuario. Por ejemplo, proporcionar un título y una descripción que representen lo que el usuario comparte puede ayudar cuando el usuario comparte contenido con más de una aplicación. La adición de una vista en miniatura al compartir una imagen o un vínculo a una página web puede proporcionar una referencia visual para el usuario. Para obtener más información acerca de qué propiedades hay disponibles, consulta nuestra documentación acerca de DataPackage.DataPackagePropertySet.

Configuración del origen de contenido compartido

Para configurar tu aplicación como aplicación de origen de contenido compartido, primero debes obtener la instancia de la clase DataTransferManager que se ha asignado a la ventana actual.

var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();

Esta clase admite un evento DataRequested, que se desencadena cuando el usuario quiere invocar Compartir. En una aplicación de la Tienda Windows, esto se produce automáticamente cuando el usuario invoca el acceso a Compartir. Si estás desarrollando para Windows Phone, no hay un acceso a Compartir integrado, por lo que tendrás que agregar un control para que el usuario pulse y active el controlador.

dataTransferManager.addEventListener("datarequested", function (e) {
    // Code to handle event goes here.
});

El ejemplo mostrado arriba registra un controlador de eventos al que se llama cada vez que se desencadena un evento datarequested. Este controlador recibe un objeto DataRequest, que tu aplicación usa para establecer los datos que el usuario quiere compartir desde tu aplicación de origen de contenido compartido.

Todo el contenido que compartes debe contar con dos propiedades: un título y el contenido. También recomendamos que incluyas una propiedad de descripción para mayor claridad.

El siguiente código se basa en los ejemplos anteriores y muestra cómo compartir texto sin formato con una aplicación de destino.

function registerForShare() {
    var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
    dataTransferManager.addEventListener("datarequested", shareTextHandler);
}

function shareTextHandler(e) {
    var request = e.request;
    request.data.properties.title = "Share Text Example";
    request.data.properties.description = "Demonstrates how to share text.";
    request.data.setText("Hello World!");
}

Uso compartido y funciones delegadas

A veces no es deseable preparar los datos en el mismo momento en que el usuario invoca la operación de uso compartido. Por ejemplo, si tu aplicación admite diversos formatos de datos, no resulta eficaz crear todos los formatos de inmediato. La mejor solución es esperar hasta que la aplicación de destino especifique el formato que quiere y después generar solo los datos solicitados. Para ello, configura el objeto DataPackage para que llene solo los datos necesarios mediante una llamada a una función delegada en el momento de la solicitud.

request.data.setDataProvider(Windows.ApplicationModel.DataTransfer.StandardDataFormats.bitmap, onDeferredImageRequested);

Para obtener más información sobre este tipo de uso compartido, consulta Cómo compartir archivos.

Invocación del panel de uso compartido mediante programación

Una vez que estableces el contenido para compartir, todo está listo. Lo único que el usuario debe hacer es seleccionar la aplicación para recibir el contenido. Para aquellas situaciones en las que el uso del botón de acceso no resulta ideal (por ejemplo, para compartir la puntuación más alta en un juego), también puedes ejecutar el acceso a Compartir mediante programación.

Nota  

El Charms bar no existe en Windows Phone 8.1, de modo que debes incluir la opción de compartir mediante programación. Puede estar disponible en todo momento como parte de la barra de la aplicación o bien estar asociada a un control concreto de una página en particular.

function showShareUI() {
    Windows.ApplicationModel.DataTransfer.DataTransferManager.showShareUI();
}

Control de errores y otros problemas

En la mayoría de los casos, proporcionar contenido es un proceso sencillo. Sin embargo, en algunos casos es posible que tu aplicación no pueda compartir. Para ayudar a controlar estas situaciones en Windows 8.1, el objeto DataRequest admite un método FailWithDisplayText. Usa este método para mostrar un mensaje de texto al usuario si no puede compartir desde una vista determinada o si necesita realizar otros pasos antes de compartir. Por ejemplo, es posible que la aplicación solicite al usuario que seleccione contenido para compartir, pero el usuario no seleccionó nada.

Resumen y siguientes pasos

Seguramente ahora comprendes bien cómo funciona el uso compartido de contenido.

Para obtener más información, u obtener ejemplos más específicos de cómo agregar recursos compartidos a tu aplicación, consulta lo siguiente:

Temas relacionados

Elección de formatos de datos para uso compartido

Directrices y lista de comprobación de uso compartido de contenido

Inicio rápido: recepción de contenido compartido