Tracking del modo anclado

Los usuarios en Windows Internet Explorer 9 pueden anclar cualquier sitio web en la barra de tareas de Windows 7 como si se tratase de una aplicación de escritorio. Cuando un sitio web es anclado, pueden abrirlo rápidamente y comenzar a realizar acciones inmediatamente. Un sitio anclado es mucho más que un enlace directo, sin embargo. Con un poco más de esfuerzo puedes desarrollar una serie de características más avanzadas que ya vimos en artículos anteriores de este blog.

 

Tracking del modo anclado

Lo primero de todo que hay que comprobar es si tus usuarios están o no en modo anclado. Esta es la más importante porque todas las siguientes métricas (Jump List y Thumbnail Toolbar) dependen de esta. Nuestro consejo es que analices todo lo relacionado con el modo anclado (IE9 site mode) como si se tratase de una campaña. La mayoría de herramientas de analíticas en el mercado (Webtrends, Google Analytics) te dejan especificar una campaña, añadiendo algunos parámetros en tus urls. La manera más fácil para hacer esto y comprobar cuando el usuario ha accedido por el modo anclado es añadiendo estos parámetros en el la url definida en el metatag de inicio. Si estás utilizando Google Analytics, lo que deberías hacer es definir la campaña en los parámetros de la url de inicio. Algo así:

<meta name="msapplication-starturl"content="/index.htm?utm_source=ie9&utm_medium=web&utm_campaign=pinned-ie9"/>

Si no quieres utilizar este método para hacer tracking o usar parámetros en la url, siempre puedes usar JavaScript. Cuando tu sitio web es cargado y sabes si está en modo anclado (usando la llamada de JavaScript window.external.msIsSiteMode()) puedes llamar a la función de JavaScript que quieras para incrementar el número de accesos en este modo.

Si estás usando Google Analytics puedes decidir realizar el análisis como un Virtual Page o un Evento.

  1: function onload() {
  2:     if ('external' in window && 'msIsSiteMode' in window.external && window.external.msIsSiteMode()) {
  3:         // puedes usar tracking por eventos
  4:         _gaq.push(['_trackEvent', 'Web', 'Visit', 'IE9Pinned']);
  5:         // o virtual page tracking. ¡No uses ambos!
  6:         _gaq.push(['_trackPageview', '/the-name-of-your-VIRTUAL-page']);        
  7:     }
  8: }
  9: 

 

Finalmente puedes usar un acortador de Urls que también te da estadísticas de uso (como bit.ly). En este caso tu crearás una url para la portada de tu sitio web o para cualquier url que quieras utilizar como inicial) y ponerla en el metatag de url de inicio:

<meta name="msapplication-starturl" content="http://bit.ly/customurl" />

Deberías siempre contactar con tu especialista de analíticas web (si es que existiese Sad smile) y ver qué método se ajusta mejor a tu plan de análisis y la instrumentación que tienes disponible para realizar dichos análisis.

Si lo que quieres es realizar tracking de cómo está funcionando tu campaña de descubrimiento (ver Discoverability), entonces puedes utilizar cookies y usar eventos para comprobar esta información.

Otro evento importante para controlar es el msIsSiteModeFirstRun. Este se produce sólo la primera vez que el usario instala o arrastra la aplicación en la barra de tareas. Además el evento nos devuelve los siguientes valores según la forma de acceder del usuario:

0 — El sitio anclado no está en un estado de primera ejecución.

1 — Es el primer inicio a partir de una operación de arrastrar y colocar.

2 — Este es el primer inicio a partir de un acceso directo en el menú Inicio.

  1: try {
  2:     if (window.external.msIsSiteMode()) {
  3:         // Detectar si es la primera vez que se accede desde el menú de inicio
  4:         if (window.external.msIsSiteModeFirstRun(false) == 2) {
  5:             alert("No olvides anclar esta aplicación a la barra.");
  6:         }
  7:     }
  8: }
  9: catch (ex) {.
 10: }
 11: 

 

Tracking en JumpList

Los elementos de la Jump List actúan como puntos de acceso a tu sitio web. Esta funcionalidad está disponible hasta cuando tu navegador no está funcionando.

clip_image001

Una Jump List puede contener los destinos y las areas más communes de tu sitio web. Y pueden ser específicos para ciertos usuarios o para todos.

 

¿Cómo puedo hacerlo?

Hay dos secciones en la JumpList:

  • Tareas estáticas que son definidas usando meta tags. Estas propiedades puede aparecerán cuando el sitio sea anclado y estarán contenidas en la categoría “Tareas” o “Tasks” según el idioma del sistema operativo. Esta categoría puede contener hasta 5 elementos. Los elementos de esta lista serán los mismos, independientemente del estado de la aplicación.

Deberías usar los tags de campaña para comprobar su uso. Otra vez, si estás usando Google Analytics deberías tener algo como esto:

<metaname="msapplication-task"content="name=News;action-uri=/news.htm?utm_source=ie9&utm_medium=jumplist&utm_campaign=pinned-ie9;icon-uri=news.ico"/>

  • Tareas Dinámicas son definidas usando APIs de JavaScript. Estas tareas aparecen dentro de la categoría JumpList que has definido. Esta categoría puede contener hasta 20 elementos, aunque sólo se mostrarán los 10 últimos por defecto en la JumpList.

Si utilizaras estos enlaces para redirigir o abrir una nueva ventana del navegador, entonces deberías tratarlo como enlaces de campaña (igual que como los enlaces estáticos). Cuando añades un elemento usando este método, deberías tener algo como lo siguiente si usas Google Analytics:

window.external.msSiteModeAddJumpListItem("Task1", "/task1.htm?utm_source=ie9&utm_medium=jumplist&utm_campaign=pinned-ie9", "img/task1.ico");

Si estás usandolos para controlar algunas acciones que tienen lugar en la ventana actual sin forzar al usuario a navegar fuera, entonces deberías tratarlos como eventos/acciones. Probablemente ya estés listo para hacer tracking de estos eventos en tu sitio web cuando las acciones se ejecuten. Otra vez, si estás usando Google Analytics deberías tener algo como esto en el manejador del evento:

_gaq.push([‘_trackEvent’, ‘PlayList’, ‘Create’, ‘Jumplist’]);

Donde PlayList es la Categoría. Crea una acción y una etiqueta para identificar la fuente. Otra vez, debes de adaptar estos nombres como mejor se ajuste a tu solución.

 

ThumbBar Button / Thumbnail Toolbar

La thumbnail toolbar es como un control remoto para tu aplicación. Te permite interactuar con un sitio anclado sin tener que abrirlo. Otra buena idea de uso, es utilizarlos para realizar determinadas acciones cuando se le muestra un Overlay Icon (una notificación) al usuario. De esa manera el usuario pasa el ratón por encima de tu aplicación cuando ha mostrado una notificación y en la pre visualización tiene una serie de acciones asociadas a la notificación.

Si recuerdas lo que vivos en el artículo que hablábamos sobre los ThumbBar Buttons, recordarás que están asociadas a un manejador en donde detectaríamos que botón ha sido accionado. Si estás usando Google Analytics deberías realizar en tracking directamente sobre ese Switch donde detectas que botón ha sido pulsado:

_gaq.push([‘_trackEvent’, ‘Audio’, ‘Play’, ‘Thumbbutons’]);

 

 

Espero que os sea de utilidad, y según tengáis resultados asociados a vuestro sitio os rogaría que lo compartierais, para que podamos conocer cómo ha influido en vuestros sitios implementar estas funcionalidades de Internet Explorer 9.

Detectar navegador y S.O. para modo anclado.

Como ya comentamos en el artículo anterior de Discoverability, las nuevas características del modo anclado pueden mejorar mucho la experiencia de nuestros usuarios y sobre todo nos ayudan a tener un contacto más directo con ellos. De esta manera rompemos la dependencia que existe entre el motor de búsqueda y nuestro sitio, con los usuarios que ya son fieles al sitio.

Como ejemplo, el diario norteamericano de noticias online Huffington Post lanzó una serie de datos sobre cómo habían mejorado sus cifras utilizando el modo anclado. En resumen, 11% más de páginas vistas y hasta un 49% más de tiempo de permanencia de sus usuarios. Este último dato se debe a la posibilidad de dejar anclado y abierta la aplicación anclada del Huffington Post y que te notifique con las nuevas noticias que vayan publicando (utilizando Overlay Icons).

En este artículo trataré de complementar el artículo de Discoverability, explicando cómo detectar el sistema operativo y si el navegador soporta el modo anclado de Internet Explorer 9.

Para detectar el sistema operativo podemos usar una detección de navegador utilizando el siguiente código JavaScript, comento sobre el propio código.

  1: this.supportLevel = { none: 0, upgradeable: 1, limited: 2, full: 3 };
  2: this.getOSPinSupportLevel = function () {
  3:   try {
  4:     var userAgent = navigator.userAgent;
  5:     
  6:     // Comprobamos si es Windows 7
  7:     if (userAgent.indexOf("Windows NT 6.1") !== -1)
  8:                 return this.supportLevel.full;
  9: 
 10:     // Comprobamos si es Windows Vista SP2
 11:     else if (userAgent.indexOf("Windows NT 6.0") !== -1)
 12:                 return this.supportLevel.limited;
 13: 
 14:     // Comprobamos si es Windows Vista
 15:     else if (userAgent.indexOf("Windows NT") !== -1)
 16:                 return this.supportLevel.upgradeable;
 17: 
 18:     // Ninguno de los anteriores, Windows XP, MacOS, etc.
 19:     else
 20:                 return this.supportLevel.none;
 21:   } catch (exc) {
 22:     // En caso de un posible error
 23:             return this.supportLevel.none;
 24:   }
 25: }
 26: 
 27: 

Para detectar el navegador lo primero que necesitamos es conocer si el navegador se puede anclar.

this.browserCanPin = (‘external’ in window && ‘msIsSiteMode’ in window.external);

Y también es necesario conocer si el usuario está viendo el sitio anclado.

this.viewingFromPin = (‘external’ in window && ‘msIsSiteMode’ in window.external && window.external.msIsSiteMode());

Utilizando estos métodos ya podemos crear la función de JavaScript para saber si es Internet Explorer 9.

  1: this.abilityLevel = {none: 0, limited: 1, full: 2};
  2:    this.getBrowserPinAbilityLevel = function () {
  3:      try {
  4: 
  5:         var appVersion = navigator.appVersion;
  6:         // Es IE9
  7:         if (this.browserCanPin) {
  8:             // Es IE9 en Windows 7   
  9:             if (appVersion.indexOf("Windows NT 6.0") !== -1)
 10:                     return this.abilityLevel.limited;
 11:             // Es IE9 en Windows Vista
 12:             else
 13:                     return this.abilityLevel.full;
 14:             }
 15:             // No es IE9
 16:             else
 17:                 return this.abilityLevel.none;
 18:       } catch (exc) {
 19:             return this.abilityLevel.none;
 20:       }
 21:   }
 22: 

Para hacerlo menos complejo y facilitar el uso de los métodos anteriores, hemos creado una serie de propiedades resumen.

 

  1: this.hasFullPinAbilityBrowser = (this.getBrowserPinAbilityLevel() === this.abilityLevel.full);
  2: this.hasLimitedPinAbilityBrowser = (this.getBrowserPinAbilityLevel() === this.abilityLevel.limited);
  3: this.hasNoPinAbilityBrowser = (this.getBrowserPinAbilityLevel() === this.abilityLevel.none);
  4: 
  5: this.hasFullPinSupportOS = (this.getOSPinSupportLevel() === this.supportLevel.full);
  6: this.hasLimitedPinSupportOS = (this.getOSPinSupportLevel() === this.supportLevel.limited);
  7: this.hasUpgradeablePinSupportOS = (this.getOSPinSupportLevel() === this.supportLevel.upgradeable);
  8: this.hasNoPinSupportOS = (this.getOSPinSupportLevel() == this.supportLevel.none);
  9: 

 

Para ver un ejemplo de uso de cómo podemos usarlo para hacer las comprobaciones, os dejo el siguiente ejemplo.

  1: if(pinnedSiteDetection.browserCanPin){
  2:     // Estamos en IE9
  3:     if(pinnedSiteDetection.hasFullPinSupportOS){
  4:         // Estamos en Windows 7
  5:         // Comprobamos si está anclada
  6:         if(pinnedSiteDetection.getDaysSincePinAccess() > -1){
  7:            // IE9 Anclado
  8:         }else{
  9:            // IE9 No anclado
 10:         }
 11:     }else{
 12:         // Estamos en Windows Vista
 13:     }   
 14: } else if(pinnedSiteDetection.hasFullPinSupportOS){
 15: // Estamos en W7 pero no en IE9  
 16: }else if(pinnedSiteDetection.hasNoPinSupportOS){
 17: // Estamos en Windows XP u otros.
 18: }else if(pinnedSiteDetection.hasLimitedPinSupportOS){
 19: // Estamos en Windows VIsta
 20: }
 21: 

Todo este código para detector el navegador y el sistema operativo, lo hemos empaquetado en una librería de JQuery que podéis utilizar, y que además utiliza el Storage de HTML5 para almacenar el tiempo que lleva anclada la aplicación. Todos estos datos son muy útiles a la hora de realizar analíticas sobre el efecto que provoca que nuestros usuarios anclen nuestro sitio web.

Ejemplo en http://redsandbox.net/concepts/discoverability2/

Librería JavaScript en http://redsandbox.net/concepts/discoverability2/scripts/ie9.discoverability.js

 

Espero que os sea de utilidad.