Comment fonctionne la «vérification des licences de marché» de Google Play?

23

Il y a environ un mois, j'ai acheté un jeu appelé Whale Trail lors d'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 à défaut de le faire (car il n'y avait pas de connexion Internet dans le métro), j'ai arrêté le jeu. Quand je suis rentré à la maison, j'ai regardé l'onglet des autorisations du jeu et j'ai vu ceci:

Contrôle de licence de marché

Peut vérifier si vous avez une licence pour cette application auprès de Market

Il semble que ce soit une fonctionnalité intégrée à Google Play. Donc, ma question est, comment fonctionne cette "vérification de licence"? À quelle fréquence les applications utilisant ce téléphone "à la maison" vérifient-elles que je ne suis pas un sale pirate volant les applications de ces développeurs?

Yi Jiang
la source
2
Je ne suis pas expert en la matière, donc je ne vais pas répondre, mais les informations sont ici . Le plus rapide et le plus sale: l'application est achetée et le fichier .apk vous est concédé sous licence, il parcourt le réseau pour vérifier la licence. Il est possible que le réseau ne soit pas disponible à ce moment-là et que le développeur n'ait rien mis en cache ni géré cela.
Doozer Blake
@DoozerBlake Donc la réponse est - "Aussi souvent que le développeur le souhaite"? Je pense que c'est acceptable comme réponse
Yi Jiang

Réponses:

18

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

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

Donc oui, fondamentalement, chaque fois que le développeur le souhaite. 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 plutôt le client Google Play via IPC distant pour lancer une demande de licence. Dans la demande de licence:

  • Votre application fournit: son nom de package, un nonce qui est ensuite utilisé pour valider toute réponse du serveur et un rappel sur lequel la réponse peut être retournée de manière asynchrone.

  • Le client Google Play collecte les informations nécessaires sur l'utilisateur et l'appareil, telles que le nom d'utilisateur du compte Google principal de l'appareil, IMSI et d'autres informations. Il envoie ensuite la demande de vérification de 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 à 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.

Alors:

  1. Les informations sur l'application, l'appareil et l'utilisateur sont transmises aux serveurs de Google.
  2. Google vérifie ensuite votre nom par rapport à la liste des personnes qu'il connaît avoir payé pour l'application sur Google Play. (Il pourrait également vérifier le nom de l'application par rapport à une liste d'applications qu'il sait que vous avez téléchargées depuis Google Play)
  3. S'il peut voir que vous avez téléchargé (et payé) l'application de Google Play, il vous renvoie que vous avez une licence, sinon il indique à l'application que vous n'en avez pas.

Évidemment, tout se fait en ligne, donc si vous êtes hors ligne, cela ne fonctionnera pas. Si j'écrivais l'application, j'aurais un compteur pour permettre à la personne de l'utiliser hors ligne 3 fois ou plus avant de devoir aller en ligne pour obtenir le contrôle de licence afin d'arrêter le genre de chose qui vous arrive où vous ne pouvez pas jouer hors ligne. Bien sûr, si quelqu'un fouille dans le fichier où le compteur est stocké, il peut changer la valeur à 3 essais à chaque fois qu'il l'utilise et ne jamais avoir à payer, mais cela dépasse probablement les compétences techniques de la plupart des utilisateurs.

Cacahuète
la source
ce qui se passe dans le scénario suivant, une application payante qui n'a pas implémenté la bibliothèque de vérification des licences dans sa 1ère version mais implémenté la bibliothèque de vérification des licences dans sa 2ème version. Les acheteurs de la 1ère version seront-ils considérés comme des utilisateurs authentifiés lors de la mise à jour vers la 2ème version?
Mehul Joisar