Descripción general sobre las licencias

Google Play Licensing es un servicio basado en red que permite a una aplicación consultar un servidor de licencias de Google Play confiable a fin de determinar si la aplicación tiene una licencia para el usuario actual del dispositivo. El servicio de licencias se basa en la capacidad que tiene el servidor de licencias de Google Play para establecer si un usuario dado tiene licencia para usar una aplicación determinada. Google Play considera que un usuario tiene una licencia si es un comprador registrado de la aplicación.

La solicitud comienza cuando tu aplicación realiza una solicitud a un servicio alojado por la aplicación cliente de Google Play. Luego, la aplicación de Google Play envía una solicitud al servidor de licencias y recibe el resultado. La aplicación de Google Play envía el resultado a tu aplicación, lo que puede habilitar o inhabilitar el uso posterior de la aplicación según sea necesario.

Nota: Si una versión de una aplicación se encuentra en las pistas de prueba cerradas o abiertas, todos los usuarios que están autorizados a descargar e instalar esa aplicación se consideran usuarios con licencia de la aplicación. Para obtener más información, consulta Usa las pistas de prueba para obtener valiosos comentarios de los usuarios.

Figura 1: Tu aplicación inicia una verificación de licencia a través de la biblioteca de verificación de licencias y el cliente de Google Play, que maneja la comunicación con el servidor de Google Play.

Nota: Antes se podía probar el funcionamiento de una app subiendo una versión "en borrador" no publicada. Esta función ya no es compatible. En su lugar, debes publicarla en las pistas de prueba cerradas o abiertas. Para obtener más información, consulta Ya no se admiten apps de borrador.

Para identificar adecuadamente al usuario y determinar el estado de la licencia, el servidor de licencias requiere información sobre la aplicación y el usuario: tu aplicación y el cliente de Google Play trabajan juntos para reunir la información y el cliente de Google Play la pasa al servidor.

Para ayudarte a agregar licencias a tu aplicación, el SDK de Android proporciona un conjunto descargable de fuentes de biblioteca que puedes incluir en tu proyecto de aplicación: el paquete Google Market Licensing. La biblioteca de verificación de licencias (LVL) es una biblioteca que puedes agregar a tu aplicación y que administra toda la comunicación relacionada con licencias con el servicio de licencias de Google Play. Con la LVL agregada a tu aplicación, esta puede determinar su estado de licencia para el usuario actual simplemente llamando a un método e implementando una devolución de llamada que recibe la respuesta de estado.

Tu aplicación no consulta directamente al servidor de licencias, sino que llama al cliente de Google Play mediante IPC remoto para iniciar una solicitud de licencia. En la solicitud de licencia, sucede lo siguiente:

  • La aplicación proporciona el nombre del paquete, una instancia que se usa posteriormente para validar cualquier respuesta del servidor y una devolución de llamada sobre la cual se puede mostrar la respuesta de manera asíncrona.
  • El cliente de Google Play recopila la información necesaria sobre el usuario y el dispositivo, como el nombre de usuario principal de la cuenta de Google, el IMSI y otra información. Luego, envía la solicitud de verificación de licencia al servidor en nombre de tu aplicación.
  • El servidor de Google Play evalúa la solicitud con toda la información disponible a fin de intentar establecer la identidad del usuario con un nivel de confianza suficiente. Luego, el servidor comprueba la identidad del usuario con los registros de compra de tu aplicación y muestra una respuesta de licencia que el cliente de Google Play muestra a tu aplicación durante la devolución de llamada de IPC.

Puedes elegir cuándo y con qué frecuencia deseas que tu aplicación verifique su licencia y tienes control total sobre cómo maneja la respuesta, verifica los datos de respuesta firmados y aplica los controles de acceso.

Ten en cuenta que, durante una verificación de licencia, tu aplicación no administra ninguna conexión de red ni utiliza ninguna API relacionada con la licencia en la plataforma Android.

Las respuestas de licencia son seguras

Para garantizar la integridad de cada consulta de licencia, el servidor firma los datos de respuesta de la licencia mediante un par de claves RSA que se comparte exclusivamente entre el servidor de Google Play y tú.

El servicio de licencias genera un único par de claves de licencia para cada aplicación y expone la clave pública en la página Servicios y API de tu aplicación en Play Console. Debes copiar la clave pública de Play Console e insertarla en el código fuente de la aplicación. El servidor retiene la clave privada internamente y la usa para firmar respuestas de licencia para las aplicaciones que publicas con esa cuenta.

Cuando tu aplicación recibe una respuesta firmada, usa la clave pública incorporada para verificar los datos. El uso de la criptografía de clave pública en el servicio de licencias hace posible que la aplicación detecte respuestas que fueron manipuladas o falsificadas.

Biblioteca de verificación de licencias

El SDK de Android proporciona un paquete descargable llamado Google Market Licensing, que incluye la biblioteca de verificación de licencias (LVL). La LVL simplifica enormemente el proceso de agregar licencias a tu aplicación y ayuda a garantizar que su implementación sea más segura y sólida. La LVL proporciona clases internas que controlan la mayoría de las operaciones estándar de una consulta de licencia, como comunicarse con el cliente de Google Play para iniciar una solicitud de licencia y verificar y validar las respuestas. También expone interfaces que te permiten conectar fácilmente tu código personalizado para definir la política de licencias y administrar el acceso según lo necesite tu aplicación. Las interfaces clave de LVL son las siguientes:

Policy
Tu implementación determina si se debe permitir el acceso a la aplicación en función de la respuesta de licencia recibida del servidor y de cualquier otro dato disponible (como un servidor de backend asociado a tu aplicación). La implementación puede evaluar los diversos campos de la respuesta de la licencia y aplicar otras restricciones si es necesario. La implementación también te permite administrar el control de las verificaciones de licencia que dan como resultado errores, como los errores de red.
LicenseCheckerCallback
Tu implementación administra el acceso a la aplicación en función del resultado del control de la respuesta de licencia por parte del objeto Policy. Tu implementación puede administrar el acceso de cualquier forma necesaria, incluso mostrando el resultado de la licencia en la IU o indicando al usuario que compre la aplicación (si no tiene licencia actualmente).

Para ayudarte a comenzar con una Policy, la LVL proporciona dos implementaciones completas de que puedes adaptar a tus necesidades o usarlas sin modificar:

ServerManagedPolicy
Una Policy flexible que usa la configuración proporcionada por el servidor de licencias para administrar el almacenamiento en caché y el acceso a la aplicación mientras el dispositivo está sin conexión (por ejemplo, cuando el usuario está en un avión). Para la mayoría de las aplicaciones, se recomienda el uso de ServerManagedPolicy.
StrictPolicy
Una Policy restrictiva que no almacena en caché ningún dato de respuesta y permite que la aplicación acceda solo cuando el servidor muestra una respuesta con licencia.

La LVL está disponible como un paquete descargable del SDK de Android. El paquete incluye la LVL y una aplicación de ejemplo que muestra cómo se debe integrar la biblioteca con tu aplicación y cómo esta debe administrar los datos de respuesta, la interacción de la IU y las condiciones de error.

Las fuentes de la LVL se proporcionan como un proyecto de biblioteca de Android, lo que significa que puedes mantener un único conjunto de fuentes de biblioteca y compartirlas en varias aplicaciones. Mediante el SDK, también está disponible un entorno de prueba completo, por lo que puedes desarrollar y probar la implementación de licencias en tus aplicaciones antes de publicarlas, incluso si no tienes acceso a un dispositivo físico.

Requisitos y limitaciones

Google Play Licensing está diseñado para permitirte aplicar controles de licencia a las aplicaciones que publicas mediante Google Play. El servicio no está diseñado para permitirte controlar el acceso a aplicaciones que no se publican mediante Google Play o que se ejecutan en dispositivos que no ofrecen el cliente de Google Play.

Estos son algunos puntos para tener en cuenta cuando implementas la licencia en tu aplicación:

  • Una aplicación puede usar el servicio solamente si el cliente de Google Play está instalado en tu dispositivo host y el dispositivo ejecuta Android 1.5 (API nivel 3) o superior.
  • Para completar una verificación de licencia, debes poder acceder al servidor de licencias mediante la red. Puedes implementar comportamientos de almacenamiento en caché de licencias para administrar el acceso a tu aplicación cuando no hay conectividad de red.
  • La seguridad de los controles de licencia de tu aplicación depende en última instancia del diseño de tu propia implementación. El servicio proporciona los componentes básicos que te permiten verificar de forma segura las licencias, pero la aplicación y el control reales de la licencia son factores que tú decides. Si sigues las recomendaciones de los siguientes documentos, te asegurarás de que tu implementación sea segura.
  • Agregar licencias a una aplicación no afecta el funcionamiento de esta cuando se ejecuta en un dispositivo que no ofrece Google Play.
  • Puedes implementar controles de licencia en una aplicación gratuita, pero solo si estás utilizando el servicio para proporcionar archivos de expansión APK.

Reemplazo para protección de copias

Google Play Licensing es un mecanismo flexible y seguro para controlar el acceso a tus aplicaciones. Reemplaza efectivamente el mecanismo de protección de copias que se ofrecía anteriormente en Google Play (y ya no es compatible) y te brinda un mayor potencial de distribución para tus aplicaciones.

Las licencias te permiten pasar a un modelo basado en licencias que se puede aplicar en todos los dispositivos que tienen acceso a Google Play. El acceso no está vinculado a las características del dispositivo host, sino a tu aplicación en Google Play (mediante la clave pública de la aplicación) y la política de licencia que definas. Tu aplicación se puede instalar y administrar en cualquier dispositivo y en cualquier almacenamiento, incluida la tarjeta SD.

Aunque ningún mecanismo de licencia puede evitar por completo todo uso no autorizado, el servicio de licencias te permite controlar el acceso a la mayoría de los tipos de uso normal en todos los dispositivos compatibles, bloqueados o desbloqueados.

Para comenzar a agregar licencias de aplicaciones a tu aplicación, continúa con Realiza la configuración para licencias.