La semana pasada publicamos el post El futuro de las búsquedas: Google App Indexing acerca de los beneficios del App Indexing en el mercado de las aplicaciones móviles. Recomiendo ampliamente su lectura para entrar en el contexto de la importancia del App Indexing.

En esta oportunidad les presentamos una perspectiva más técnica del tema, específicamente acerca de cómo integrar esta herramienta en Android. Antes de comenzar, asumo que ya han leído la documentación oficial de Firebase App Indexing, si aún no lo han hecho, esta es una buena oportunidad para tener un mejor entendimiento de lo que vamos a hablar a continuación.

APP INDEXING: DEEP LINKS

El App Indexing está construido sobre la implementación de los Deep Links. Los Deep Links permiten que las aplicaciones móviles se puedan abrir en contenidos o secciones específicas después de que el usuario haya hecho click en un enlace cuyo dominio es reconocido por la aplicación.

Para la implementación de los Deep Links sólo debemos realizar 3 pasos: informarle a la aplicación cual(es) Activity se abrirá cuando el usuario haga click, manejar el Deep Link (que viene en forma de Intent) dentro del Activity y por último vincular el sitio web con la aplicación móvil.

Informar a la aplicación acerca del Deep Link (Show me the code!)

En el AndroidManifest agregar lo siguiente:

code1

Esta porción de código logrará que la aplicación sea capaz de abrir ActivityConContenido en el momento en que el usuario haga click en enlaces del tipo http://tudominio.com/contenido/idDelContenido/ y https://tudominio.com/contenido/idDelContenido/.

La opción de android:autoVerify=”true”, junto con la vinculación al sitio web, permite que la aplicación se abra de manera directa sin previamente preguntarle al usuario con qué aplicación le gustaría abrir el enlace. De esta manera se logra asegurar evitar fuga de tráfico en la aplicación. En ActivityConContenido agregar lo siguiente:

Manejar el Deep Link dentro del Activity (Show me the code!)

En ActivityConContenido agregar lo siguiente:

code2

En este caso tomamos el identificador del contenido a mostrar a través del método getLastPathSegment, sin embargo, si el Deep Link fuera más complejo no quedaría otra alternativa que parsearlo manualmente. Una vez tengamos el identificador, somos libres de manejarlo de la manera que consideremos apropiada (por ejemplo, haciendo una llamada a un servicio que nos responda con el detalle del contenido a mostrar).

En particular, no debe pasar desapercibido el método onNewIntent. Además de agrupar ordenadamente el código, este método permite que el Activity sea capaz de manejar el Intent (y a su vez  el Deep Link) aún si ya está iniciado.

Vincular el sitio web con la aplicación móvil

A pesar de que este paso no es indispensable para la implementación de los Deep Links, no deja de ser importante porque sin él, el sistema operativo, en vez de abrir la aplicación directamente, le presentaría al usuario un listado de aplicaciones para abrir el enlace que ha clicado, lo que supondría una fuga de tráfico para la aplicación.

Dado que no es indispensable, y su implementación no involucra código Android sino únicamente manipulación del sitio web, lo dejaremos fuera del alcance de este post. Pueden consultar los detalles en la documentación oficial de Firebase App Indexing.

APP INDEXING: EL API DE APP INDEXING

En el apartado anterior dejamos nuestra aplicación móvil lista para reaccionar adecuadamente al momento en el cual el usuario hace click a un enlace de nuestro dominio. Esa funcionalidad por sí sola es bastante útil en cuanto a retención de usuarios se refiere.

Ahora hablaremos del corazón del App Indexing, que es lo que realmente permite mostrar contenidos internos de la aplicación en los resultados (¡e incluso en los autocompletados!) de las búsquedas que realiza el usuario en el buscador de Google.

Primero lo primero, agregar la dependencia (Show me the code!)

Para hacer uso del API de App Indexing debemos agregar la dependencia correspondiente en el fichero de Gradle de la aplicación:

code3

Segundo lo segundo, definir qué se verá (Show me the code!)

El API nos permite definir qué información queremos que se muestre, en la búsqueda hecha por el usuario, cuando se liste el resultado de algún contenido interno de la aplicación. Para ello definimos un título y una descripción. Naturalmente también debemos definir el URL (que funcionará como Deep Link) que tendrá dicho resultado:

code4

Notar aquí la inicialización del API.

Tercero lo tercero, la llamada al API (Show me the code!)

La llamada al API debe hacerse cuando el usuario accede al contenido específico dentro de la aplicación. Es importante notar que la llamada debe hacerse una y sólo una vez, esto tiene particular relevancia cuando la llamada al API se hace desde algún Fragment, por lo que en estos casos se debe manejar apropiadamente para que no se ejecute varias veces.

En el ejemplo del Activity lo haríamos de la siguiente manera:

code5

En este caso, los métodos onStart y onStop son particularmente útiles, porque nos permiten llamar el API de App Indexing una vez estamos seguros que el contenido se está mostrando y también cuando estamos seguros que el usuario ya ha abandonado el Activity. Notar los bloques de try-catch en ambas llamadas, la documentación oficial no te lo dirá, pero las llamadas al API pueden fallar (y fallan) por lo que es importante capturar estos casos y no atar el desempeño y la calidad de la aplicación a la posibilidad de que estas llamadas generen errores.

APP INDEXING: PROBAR LO HECHO

Una gran característica que provee Firebase App Indexing es la posibilidad de probar la implementación que hemos hecho de manera de asegurarnos que todo va en orden.  Para esto haremos dos cosas por separado; lo primera será probar la implementación propiamente (con esto nos ayudará Android Studio) y la segunda nos permitirá ver como se ve nuestra aplicación indexada en los resultados (y en el autocompletado) del buscador de Google.

Probar la implementación (Show me the code!)

Lo primero que haremos es tratar de abrir la aplicación con alguno de los URL definidos en el AndroidManifest para asegurarnos que nos muestre el contenido apropiado. Para ello, en Android Studio nos vamos a Run -> Edit Configurations. En la sección Launch Options, elegimos la opción URL del menú desplegable. Seguidamente colocamos el URL con que queremos que abra la aplicación. Luego de darle OK lo único quedaria seria hacer click en Run.

Si esta prueba no funcionase como esperamos Android Studio tiene varias herramientas que nos ayudarán a ver donde nos hemos equivocado. Una de estas herramientas son las comprobaciones Lint para vínculos, que te ayuda marcando de forma automática los errores de sintaxis para los filtros de Intent.

Seguidamente, podemos comprobar que las llamadas al API de App Indexing se están realizando de manera correcta. Esto lo haremos mediante el Android Monitor de Android Studio, con lo cual necesitamos habilitar la visualización de los registros del App Indexing. Para esto nos iremos al directorio donde está instalado el SDK de Android y en la terminal hacemos lo siguiente:

code6
code7

Con esto, al abrir el Activity con la llamada al API se mostrarán en el Android Monitor los eventos de las llamadas con la etiqueta FirebaseUserActions.

Revisar los resultados del buscador de Google

Para comprobar los resultados en el buscador de Google, debes subir una versión del APK de la aplicación a Google Play Store. Luego de que lo hayas hecho, visita Google app en el dispositivo e ingresa una consulta que sea relevante para la aplicación (por ejemplo el título definido para la llamada al API en el Activity), debes ver en los resultados de la consulta el ícono de la aplicación, que al hacerle click lleva directamente a las secciones de la misma.

Además de lo anterior, App Indexing pone a disposición otra herramienta llamada “Fetch as Google”, que permite buscar y depurar errores que los sistemas de Google encuentren al rastrear la aplicación.  Para tener más detalles de esta herramienta visitar el siguiente sitio.

Si hemos seguido los pasos aquí descritos, tendremos ahora una aplicación completamente funcional con el App Indexing, lo que nos ayudará a mejorar la retención de usuarios hacia la aplicación.  Dentro de las ventajas que tiene el App Indexing está el del efecto de “bola de nieve” que tiene sobre el tráfico de los usuarios; entre más naveguen por la aplicación, más y mejores serán los resultados dentro del buscador de Google, y en la medida que esos resultados sean más relevantes mayor será la posibilidad de que hagan click y vuelvan a la aplicación.

Como conclusión les recomiendo ampliamente estar siempre atentos a herramientas como el App Indexing; en mi opinión no hay una única fórmula mágica para el éxito (o fracaso) de una aplicación. Más bien el éxito depende de la sumatoria de estrategias y técnicas que van todas orientadas a mejorar la experiencia y usabilidad de aplicaciones. En este sentido, debemos valernos de todas las alternativas a nuestra disposición que nos ayuden a avanzar en esa dirección.

Manuel RodriguezManuel Rodriguez

Leave a Reply

Your email address will not be published. Required fields are marked *