¿Cómo funciona la "Verificación de licencia de mercado" de Google Play?

23

Hace aproximadamente un mes compré un juego llamado Whale Trail durante una venta en Google Play. Hoy, cuando intenté jugar el juego en el metro, me pidió que verificara la licencia del juego y, al no hacerlo (ya que no había conexión a Internet en el metro), cerré el juego. Cuando llegué a casa, eché un vistazo a la pestaña de permisos del juego y vi esto:

Verificación de licencia de mercado

Puede verificar si tiene una licencia para esta aplicación de Market

Parece que esta es una característica integrada en Google Play. Entonces mi pregunta es, ¿cómo funciona esta "verificación de licencia"? ¿Con qué frecuencia las aplicaciones que usan esta "característica" llaman a casa para verificar que, en realidad, no soy un pirata sucio que roba las aplicaciones de estos desarrolladores?

Yi Jiang
fuente
2
No soy un experto en eso, así que no voy a responder, pero la información está aquí . El rápido y sucio: la aplicación se compra y el archivo .apk tiene licencia para usted, se va a través de la red para verificar la licencia. Es posible que la red no estuviera disponible para usted en ese momento y el desarrollador no almacenó en caché nada ni manejó eso.
Doozer Blake
@DoozerBlake Entonces, la respuesta es: "¿Con la frecuencia que elija el desarrollador"? Creo que eso es aceptable como respuesta
Yi Jiang,

Respuestas:

18

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

De http://developer.android.com/guide/market/licensing/overview.html

Entonces sí, básicamente, cuando el desarrollador lo desee. Me imagino que el momento más común para verificar es cuando la aplicación se abre por primera vez.

Su aplicación no consulta directamente al servidor de licencias, sino que llama al cliente de Google Play a través de IPC remoto para iniciar una solicitud de licencia. En la solicitud de licencia:

  • Su aplicación proporciona: su nombre de paquete, un nonce que luego se utiliza para validar cualquier respuesta del servidor y una devolución de llamada sobre la cual la respuesta puede devolverse de forma asincrónica.

  • El cliente de Google Play recopila la información necesaria sobre el usuario y el dispositivo, como el nombre de usuario de la cuenta de Google principal del dispositivo, IMSI y otra información. Luego envía la solicitud de verificación de licencia al servidor en nombre de su aplicación.

  • El servidor de Google Play evalúa la solicitud utilizando toda la información disponible, intentando establecer la identidad del usuario con un nivel de confianza suficiente. Luego, el servidor verifica la identidad del usuario con los registros de compra de su aplicación y devuelve una respuesta de licencia, que el cliente de Google Play devuelve a su aplicación a través de la devolución de llamada IPC.

Asi que:

  1. La información sobre la aplicación, el dispositivo y el usuario se envía a los servidores de Google.
  2. Google luego compara su nombre con la lista de personas que sabe que han pagado por la aplicación en Google Play. (También podría verificar el nombre de la aplicación con una lista de aplicaciones que sabe que ha descargado de Google Play)
  3. Si puede ver que ha descargado (y pagado) la aplicación de Google Play, le devuelve que tiene una licencia, de lo contrario, le dice a la aplicación que no la tiene.

Obviamente, todo esto se hace en línea, por lo que si no está conectado, no funcionará. Si estaba escribiendo la solicitud, tendría un contador para permitir que la persona la use fuera de línea 3 veces más o menos antes de tener que conectarse a Internet para obtener la verificación de la licencia y detener el tipo de cosas que le suceden donde no puede jugar desconectado. Por supuesto, si alguien busca en el archivo donde está almacenado el contador, podría cambiar el valor a 3 intentos cada vez que lo use y nunca tenga que pagar, pero eso probablemente esté más allá de la competencia técnica de la mayoría de los usuarios.

Maní
fuente
lo que sucede en el siguiente escenario, una aplicación paga que no ha implementado la biblioteca de verificación de licencia en su primera versión, pero implementó la biblioteca de verificación de licencia en su segunda versión. ¿Los compradores de la primera versión serán considerados usuarios autenticados cuando actualicen a la segunda versión?
Mehul Joisar