23 votes

Comment fonctionne la "vérification de la licence du marché" de Google Play ?

Il y a environ un mois, j'ai acheté un jeu appelé Le sentier des baleines pendant une vente sur Google Play. Aujourd'hui, lorsque j'ai essayé de jouer au jeu dans le métro, il m'a demandé de vérifier la licence du jeu et, faute de pouvoir le faire (puisqu'il n'y avait pas de connexion Internet dans le métro), il a arrêté le jeu. Lorsque je suis rentré chez moi, j'ai jeté un coup d'œil à l'onglet des autorisations du jeu et j'ai vu ceci :

Contrôle de la licence du marché

Vous pouvez vérifier si vous avez une licence pour cette application à partir de Market

Il semble qu'il s'agisse d'une fonctionnalité intégrée à Google Play. Ma question est donc la suivante : comment fonctionne cette "vérification de licence" ? À quelle fréquence les applications qui utilisent cette "fonctionnalité" téléphonent-elles à la maison pour vérifier qu'effectivement je ne suis pas un sale pirate qui vole les applications de ces développeurs ?

18voto

Fridaypants Points 872

Vous pouvez choisir quand et à quelle fréquence vous voulez que votre application vérifie sa licence et vous avez un contrôle total sur la façon dont elle traite la réponse, vérifie les données signées de la réponse et applique les contrôles d'accès.

Desde http://developer.Android.com/guide/market/licensing/overview.html

Donc oui, en gros, quand le développeur le veut. J'imagine que le moment le plus courant pour vérifier est à la première ouverture de l'application.

Votre application n'interroge pas directement le serveur de licences, mais appelle le client Google Play par IPC distant pour lancer une demande de licence. Dans la demande de licence :

  • Votre application fournit : son nom de paquet, un nonce qui est ensuite utilisé pour valider toute réponse du serveur, et un callback sur lequel la réponse qui permet de renvoyer la réponse de manière asynchrone.

  • Le client Google Play recueille les informations nécessaires sur les éléments suivants l'utilisateur et l'appareil, telles que le compte Google principal de l'appareil, son le nom d'utilisateur, l'IMSI et d'autres informations. Il envoie ensuite la demande de vérification de la licence au serveur au nom de votre application.

  • Le serveur Google Play évalue la demande en utilisant toutes les informations disponibles, en essayant d'établir l'identité de l'utilisateur avec un niveau de confiance suffisant. Le serveur vérifie ensuite l'identité de l'utilisateur par rapport aux enregistrements d'achat de votre application et renvoie une réponse de licence, que le client Google Play renvoie à votre application via le rappel IPC.

Donc :

  1. Les informations concernant l'application, l'appareil et l'utilisateur sont transmises aux serveurs de Google.
  2. Google vérifie ensuite votre nom dans la liste des personnes qui, à sa connaissance, ont payé l'application sur Google Play. (Il pourrait également comparer le nom de l'application à une liste d'applications qu'il sait que vous avez téléchargées sur Google Play.)
  3. S'il voit que vous avez téléchargé (et payé) l'application sur Google Play, il renvoie un message indiquant que vous avez une licence, sinon il indique à l'application que vous n'en avez pas.

Évidemment, tout cela se fait en ligne, donc si vous êtes hors ligne, cela ne fonctionnera pas. Si j'écrivais l'application, je mettrais un compteur pour permettre à la personne de l'utiliser hors ligne 3 fois environ avant de devoir aller en ligne pour vérifier la licence afin d'éviter que le genre de chose qui vous arrive ne vous empêche de jouer hors ligne. Bien sûr, si quelqu'un creuse dans le fichier où le compteur est stocké, il pourrait changer la valeur à 3 essais chaque fois qu'il l'utilise et ne jamais avoir à payer, mais c'est probablement au-delà des compétences techniques de la plupart des utilisateurs.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X