Compartir sin contratos en Windows 8


Thumbs Up - Like
Ya sabemos que en Windows 8 y 8.1 existe una forma muy buena de compartir contenido: a través del contrato de compartir. En las presentaciones y documentación que hay sobre el tema descubrimos la enorme ventaja que supone el contrato de compartir: sólo lo programas una vez, luego es el usuario que decide con qué aplicación quiere compartir. Es decir, si el usuario tiene Facebook, Twitter, Linkedin, WordPress o lo que sea que utilice para compartir su vida, tendrá probablemente una/varias/todas esas Apps instaladas en su equipo y es la propia aplicación de la red social preferida del usuario que sabe cómo compartir el contenido en esa red.
Gracias a esto, nosotros programamos la función compartir que proporciona lo que nuestra aplicación sabe compartir: una imagen, un enlace web, un texto, un archivo, etc., o todo a la vez, y cuando esa información llega hasta la App que elija el usuario es esa App la encargada de publicar el contenido en la red social de turno.

Compartir en Windows 8

Todo eso se hace con la clase DataTransferManager que nos permitirá compartir nuestro contenido en unas pocas líneas, tal como se reproduce en el ejemplo:

 function setupShare() {
        var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
        dataTransferManager.addEventListener("datarequested", function (e) {
            var request = e.request;
            request.data.properties.title = "Share Demonstration";
            request.data.setText("Hello World!");
        });
    }

Vale, pero aún así yo quiero compartir en una red en concreto desde mi App

Si todavía no te ha convencido el sistema, o no te fías de que el usuario se haya descargado la App, nada te impide utilizar las diferentes APIs de cada plataforma para compartir contenido (o poner Me Gusta, Favoritos, etc.). Normalmente necesitas:

  1. Darte de alta como desarrollador de la plataforma
  2. Obtener una clave de API
  3. Realizar una conexión para obtener un token
  4. Mantener es token hasta que caduque y solicitar uno nuevo cada vez que ocurra esto.
  5. Finalmente llamar a una url que te deja compartir

O puede… ser aún peor, necesitas que el usuario haga un login en la plataforma y te de permiso para hacer un montón de cosas con su cuenta, en su nombre. No hay problema, también Windows 8/8.1 te permite simplificar eso con el WebAuthenticationBroker del que os hablaré otro día.

Y ¿no hay una forma más fácil?

Por suerte, muchas plataformas te permiten lanzar una url que va a su web, el usuario hace el login directamente en la plataforma y luego acepta la publicación, sin necesidad de clave de api ni de más programación por nuestra parte que lanzar una simple url. Aquí van dos ejemplos en C#, aunque en JavaScript no serán muy diferentes:

  • Con Facebook no se puede hacer directamente un like, tendrías que poner un control WebBrowser e incrustar el botón de Like, pero en cambio puedes hacer muy fácilmente un share:
    string url = "https://jmservera.com/2013/10/07/optimizar-el-canvas-de-apps-windows-en-html5javascript/";
    
    string shareUrl = string.Format("https://www.facebook.com/sharer/sharer.php?u={0}",
        System.Net.WebUtility.UrlEncode(url));
    
    await Windows.System.Launcher.LaunchUriAsync(
        new Uri(shareUrl));
    
  • En twitter podrías hacer algo así al pulsar el botón:
    string url = "https://jmservera.com/2013/10/07/optimizar-el-canvas-de-apps-windows-en-html5javascript/";
    string texto = "Cómo optimizar código JS en Canvas";
    
    string shareUrl = string.Format("http://www.twitter.com/intent/tweet?url={0}&text={1}",
        System.Net.WebUtility.UrlEncode(url),
        System.Net.WebUtility.UrlEncode(texto));
    
    await Windows.System.Launcher.LaunchUriAsync(
        new Uri(shareUrl));
    

¿Y si quiero poner un Like?

Facebook te da un código para incrustar en tu página, para que puedas poner un Like de la misma, pero eso no funcionará directamente en una App de la Tienda Windows, ni siquiera en las Apps HTML5/JavaScript. Ya sabréis que las Apps no permiten ejecutar código externo directamente… a no ser que las metamos en un iFrame o en el nuevo WebView, en este ejemplo en versión HTML5:

<x-ms-webview id="webview"
                  height="35" width="300"
                  src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fjmservera.com&amp;width=300&amp;height=35&amp;colorscheme=dark&amp;layout=standard&amp;action=like&amp;show_faces=false&amp;send=false&amp;"
                  style="border:none; overflow:hidden; width:300px; height:35px;background-color:rgb(29,29,29)">
    </x-ms-webview>

Espero que os sirvan.
Happy sharing!

Anuncios

Un Comentario

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