intive Argentina Blog

Android App Licensing

Supongamos que terminamos de desarrollar una aplicación paga. Resultaría lógico publicarla en Google Play. Ahora bien, si la publicáramos sin tener en cuenta qué es una licencia, podría suceder que alguien compre esa app de manera legítima y mediante algún manejo de los archivos de su teléfono celular, obtenga el archivo apk. El comprador podría subir ese archivo a alguna de las tantas páginas que se encargan de distribuir aplicaciones por fuera de Google Play, por lo que cualquiera podría hacerse de la aplicación sin necesidad de pagarla. Por suerte, Google Play nos brinda un mecanismo para evitar que este tipo de situaciones nos sucedan, tanto a nosotros como a nuestros clientes. Con App Licensing, tendremos soluciones para este tipo de problemáticas.

En el caso de aplicaciones pagas, es común verificar que el usuario que está haciendo uso de la aplicación haya realmente pagado por ella. Sin embargo, no suele utilizarse en aplicaciones gratuitas, a menos que nuestra app emplee archivos de expansión.

 

¿Qué necesitamos para empezar?

Para comenzar a utilizar App Licensing, precisamos tres cosas:

  1. Acceso a Licensing verification library (LVL).
  2. Descargar desde el Android SDK Manager el componente Google Play Licensing Library.
  3. Una cuenta de desarrollador de Google Play que permita subir la app en modo de prueba. La precisamos porque todas las opciones de licencias se manejan desde la consola de desarrollador directamente y, además, las pruebas solo se pueden hacer si la app está publicada en modo alpha o beta. No se puede trabajar con drafts.

 

¿Cómo utilizarla?

Para darle uso, debemos seguir los siguientes pasos (son varios, pero no complejos :)):

  • Importar la librería de LVL como un módulo nuevo al proyecto donde se encuentre nuestra aplicación.
  • Agregar permiso al manifest de nuestra aplicación:
  • Asignar licencias a cuentas de prueba desde la consola de desarrollador de Google (se asignan con diferentes permisos a cuentas de Gmail). Esto se hace desde la sección “Configuración” -> “Detalles de la cuenta” -> “Prueba de licencia”.
  • Conseguir la clave pública de la aplicación desde la consola de desarrollador. Esto se hace en la sección “API y servicios”.
  • Crear un SALT para utilizar durante el chequeo de la licencia. Por ejemplo:

  • Definir un LicenseCheckerCallback para saber los resultados de la consulta:

  • Definir una Policy para el manejo de los resultados de la consulta.Las políticas para que se considere una licencia válida o no se deben implementar basándose en lo que requiere el negocio. Aquí es donde se debería tener en cuenta casos particulares en donde aunque Google Play nos responda que no se tiene una licencia, uno puede por ejemplo, otorgar
  • algún tiempo de prueba gratuito al usuario o bien restringir el acceso por completo. Los dos tipos ya creados que tenemos son:
  1. ServerManagedPolicy: Es el más recomendado. Utiliza cached responses para permitir el uso de la app bajo diferentes condiciones de conexión a internet.
  2. StrictPolicy: No usa cached responses, por lo que solo va a devolver un resultado luego de conectarse a los servicios de Google Play.
  • Inicializar el LicenseChecker, que se va a encargar de conectarse con el Google Play Client del dispositivo:

  • Destruir el LicenseChecker cuando el contexto en el cual fue creado es destruído. Si por ejemplo se inicializa en una Activity, se deberá colocar la siguiente línea:

 

Algunas particularidades a tener en cuenta

  • El servicio NO está creado para usarse en aplicaciones que NO son publicadas en Google Play. O sea, es exclusivo.
  • El servicio NO está creado para usarse en aplicaciones que corren en dispositivos sin el Google Play Client.
  • La licencia se revoca si el usuario pide un refund a Google.
  • La licencia NO se revoca si el desarrollador hace un refund (se puede usar con usuarios de prueba en producción).

Para más información, pueden ingresar aquí.

Espero que toda esta explicación les sea de ayuda para el desarrollo de sus aplicaciones pagas.

Gastón Goncalves

Trabaja en intive – FDV desde 2012. Desde febrero de 2015, es desarrollador  Android e integra dicha brigada. Antes, también en la compañía, fue desarrollador de Drools y Java EE. Es alumno de la carrera de Ingeniería en Informática de la Universidad de Buenos Aires. En la UBA, también fue docente ayudante de la materia Algoritmos y Programación II de la Facultad de Ingeniería.

Deja un comentario