Licence d'application – Comment faire
Conditions préalables
- AndroidPIT App Center 1.5 ou version postérieure
- AndroidPIT App Center 1.6 ou version postérieure
- Bibliothèque de licences AndroidPIT
- Android License Verification Library (LVL)
- Eclipse Android Development Tools (ADT)
Utilisez-vous déjà LVL ?
Si vous vous servez déjà de la bibliothèque de vérification de licences d'Android (LVL), utiliser la bibliothèque de licences d'AndroidPIT est très simple.
1.
Téléchargez la bibliothèque de licences AndroidPIT et ajoutez-la à votre projet.
2.
Changez les deux définitions variables suivantes de
private LicenseCheckerCallback mLicenseCheckerCallback;
|
à
private IAndroidPitLicenseCheckerCallback mLicenseCheckerCallback;
|
3.
Changez la création du checker de
mChecker = new LicenseChecker(
|
à
mChecker = new AndroidPitLicenseChecker(
|
4.
Changez la définition de votre listener de (par exemple)
class MyLicenseCheckerCallback implements LicenseCheckerCallback
|
à
class MyLicenseCheckerCallback implements IAndroidPitLicenseCheckerCallback
|
5.
Changez le type du paramètre errorCode dans la méthode applicationError de
public void applicationError(ApplicationErrorCode errorCode)
|
à
public void applicationError(AndroidPitLicenseCheckCode errorCode)
|
et étendez le contrôle d'erreur avec les codes de réponse AndroidPIT (voir ci-dessous).
C'est tout ! L'appel à la méthode checker ainsi que les implémentations de la méthode de rappel allow() et dontAllow() n'ont pas besoin d'être changés.
À la volée
La bibliothèque de licences AndroidPIT est très similaire à l'Android License Verification Library (LVL) de Google. Pour utiliser la bibliothèque de licences AndroidPIT, ajoutez la Android License Verification Library (LVL) et la bibliothèque de licences AndroidPIT à votre projet. Dans la méthode onCreate(), créez une instance du AndroidPitLicenseChecker et fournissez-la avec une instance d'une classe qui implémente l'interface IAndroidPitLicenseCheckerCallback. Vous aurez également besoin d'un numéro de licence, qui vous sera fourni sur votre profil de développeur sur le site AndroidPIT. Un exemple d'une activité pourrait ressembler à ça :
import android.app.Activity;
|
En plus de vérifier si la licence sur AndroidPIT est valide, la bibliothèque permet aussi de vérifier une licence sur l'Android Market. Pour cela, demandez à l'appel du constructeur de l'AndroidPitLicenseChecker de prendre la politique ainsi que la clé publique de Google. Veuillez consulter la documentation de la LVL si vous avez besoin d'aide pour l'installation.
/**
|
En détail
Le système de licence AndroidPIT est basé sur la Android License Verification Library (LVL), créée par Google. Il offre la possibilité de vérifier la validité d'installation d'une application Android acquis dans l'AndroidPIT App Center. Pour cela, il vous suffit de vous connecter au serveur de licences d'AndroidPIT via Internet. Il vous sera également demandé un compte AndroidPIT valide.
L'application vérifie si l'utilisateur final dispose d'une licence valide pour l'application en utilisant l'AndroidPIT Licensing Library à travers l'App Center. Pour faire ceci, l'App Center se connecte avec le serveur de licences et valide l'achat de l'application. La vérification de la validité se passe à travers le serveur de licence à chaque fois que l'applicaiton est démarrée, mais pas plus souvent qu'une fois par jour. Les contrôles provisoires redonnent la dernière valeur retournée par le serveur de licence (la période peut changer sans préavis à tout moment).
Étape par étape
Si vous utilisez Eclipse ADT, ce guide étape par étape a été créé pour vous. Si vous utilisez des outils de développement différents, vous pourrez être amené à faire plus d'étapes.
Téléchargez la bibliothèque de licences AndroidPIT et la Android License Verification Library (LVL) et ajoutez-les à Eclipse en tant que projets. Pour pouvoir utiliser la bibliothèque de licences AndroidPIT, vous devrez être en possession de la version Android API 4, sortie avec Android 1.6. Crééz une nouvelle application Android et ajoutez la bibliothèque de licences AndroidPIT dans les règlages en tant que bibliothèque dépendante du projet d'application. Veuillez vérifier que la bibliothèque crée des liens corrects vers l'Android License Verification Library (LVL).
Mon projet montre des symboles non résolus ou je ne peux pas compiler mon application.
Veuillez vérifier les chemins d'accès à la LVL Google et bibliothèque de licences AndroidPIT dans la boîte de dialogue "Préférences" de votre projet Android. Ils devraient correspondre aux chemins sur votre système de fichiers.
Les paramètres de bibliothèque de licences AndroidPIT devraient ressembler à ceci et devraient correspondre à vos chemins :
Comment puis-je configurer la licence de vérification dans mon code ?
Pour permettre à la bibliothèque de licences de chercher pour une licence valide via l'App Center d'AndroidPIT, veuillez générer une instance de la classe MyLicenseCheckerCallback dans la méthode onCreate()-. Le constructeur s'attend à une instance du contexte, qui est habituellement l'activité elle-même. Le code résultant peut ressembler à ceci :
mLicenseCheckerCallback = new MyLicenseCheckerCallback();
|
Par ailleurs, le constructeur exige des informations sur le nom de paquet de votre application et sur la clef publique encodée base64, que nous vous fournissons sur votre profil de développeur sur AndroidPIT.
Comment puis-je recevoir un message du serveur de licences ?
La licence est vérifiée en appelant checkAccess() sur la vérification de licences AndroidPit. La méthode nécessite un objet de rappel qui implémente l'interface du rappel de la vérification de licences AndroidPit. Vous devez mettre en œuvre cette classe et de la remplir avec le code qui vous convient. La méthode allow() sera appelée depuis la bibliothèque de licences pour vous informer de la réussite de la validation de la licence. Dans tous les autres cas, dontAllow() est appelé. De plus, la méthode applicationError () vous informe des erreurs qui peuvent survenir lors de la vérification de licence. Vous contrôler ces actions, qui répondront à l'une de ces trois méthodes.
class MyLicenseCheckerCallback implements IAndroidPitLicenseCheckerCallback
|
Comment puis-je vérifier une licence dans l'Android Market ?
En plus de la vérification contre notre système de licences, nous fournissons une intégration de la Android License Verification Library (LVL) de Google qui est très facile à utiliser. Pour l'intégrer, il vous suffit d'ajouter au constructeur de notre vérification de licences AndroidPit la politique de votre LVL ainsi que votre clé publique. La vérification aura lieu à l'intérieur du code de la bibliothèque de licences. Si la vérification de licences de Google réussit, vous serez informé directement par l'objet de rappel à travers la méthode allow() que vous avez écrit quelques minutes plus tôt. Les réponses négatives se traduiront en une demande supplémentaire au serveur de licences AndroidPIT. Vous ne recevrez une réponse négative de la bibliothèque de licences uniquement si ces appels échouent.
Cet exemple est basé sur la documentation de l'API de Google.
mChecker = new AndroidPitLicenseChecker(
|
Comment puis-je tester différents messages d'erreur du serveur de licences ?
Sur la page de licence de votre profil développeur chez AndroidPIT, vous pouvez mettre en place un code de réponse qui sera envoyé par le serveur de licences. Ceci est utile pour tester si votre application répond correctement aux messages d'erreur de notre serveur de licences. Pour ce faire, il vous suffit de sélectionner la valeur appropriée dans la liste déroulante. Le serveur de licences répondra par la suite toujours avec le code de réponse sélectionné, dès que vous serez connecté à votre compte développeur depuis votre appareil.
Comment puis-je désactiver le cache du résultat dans l'App Center ?
L'App Center conserve le résultat de la dernière demande pour au moins un jour ou jusqu'à ce que l'appareil réussisse à communiquer avec notre serveur de licences via Internet. Pour désactiver ceci, vous pouvez activer le mode débogage de votre vérificateur de licences, en appellant simplement setDebug(true). Cela désactivera la mise en cache de toutes les demandes envoyées à l'App Center. N'oubliez toutefois pas de désactiver le mode débogage avant de publier votre application.
Que se passe-t-il si l'utilisateur n'est pas connecté à l'App Center ?
Si aucune information d'identification n'a été enregistré par l'App Center, la bibliothèque affichera une boîte de dialogue popup pour demander l'adresse e-mail AndroidPIT et le mot de passe de l'utilisateur.
Comment puis-je m'assurer que les demandes parviendront au serveur de licences ?
La bibliothèque de licences AndroidPIT contient la classe tt>AndroidPitSignedLicenseChecker. Cette classe donne la possibilité de vérifier si la demande a atteint le serveur de licences, qui, le cas échéant, signera sa réponse grâce à la clé privée du développeur. La bibliothèque valide les données reçues avec la signature en utilisant la AndroidPitLicenseingResponseValidator
Un exemple d'utilisation du AndroidPitSignedLicenseChecker peut ressembler à ceci :
AndroidPitSignedLicenseChecker mChecker;
|
Est-ce que je peux utiliser mon propre validateur de licences ? Je veux vérifier la signature moi-même.
Oui, c'est possible. Veuillez implémenter l'interface ILicensingResponseValidatorpuis donnez une instance de la classe d'implentation au AndroidPitSignedLicenseChecker. Cette classe doit implémenter deux méthodes. getSalt() doit renvoyer un nombre entier, qui sera renvoyé au serveur en tant que Salt dans la vérification de licences. Ce Salt doit être stocké pendant la demande pour pouvoir vérifier avec l'aide de l'autre Salt si ce contrôle est souhaité. La méthode tt>checkResponse()devrait valider les données de réponse et retourner un code de type AndroidPitLicenseCheckCode.NOT_LICENSED en cas d'échec. Si la validation réussit, le code de réponse du serveur doit être retourné. Pour voir un exemple d'implémentation, vous pouvez consulter AndroidPitLicensingResponseValidator sur la bibliothèque de licences AndroidPIT.
Mon projet ne peut pas trouver l'énumération de.androidpit.AndroidPitLicenseCheckError.
Cette énumération a été renommée de.androidpit.AndroidPitLicenseCheckCode.
Comment puis-je créer un objet de clef publique basé sur le Base64-String ?
Nous vous fournissons une clé publique sous forme de Base64 string encodé. Afin de vérifier la signature pour les données de réponse, vous devez convertir cette chaîne en un objet de clé publique. Le code suivant vous explique comment.
/**
|
Bibliothèque de licences AndroidPIT
Si vous utilisez l'ancienne bibliothèque de licences d'Android Market (Package com.android.vending.licensing), utilisez cette version de la bibliothèque de licence AndroidPIT
Bibliothèque de licences AndroidPIT Version 1.3
Si vous utilisez la nouvelle bibliothèque Google Play (Package com.google.android.vending.licensing), utilisez la version suivante de la bibliothèque de licences AndroidPIT :
Bibliothèque de licences AndroidPIT Version 2.0
- Mon projet montre des symboles non résolus ou je ne peux pas compiler mon application.
- Comment puis-je configurer la licence de vérification dans mon code ?
- Comment puis-je recevoir un message du serveur de licences ?
- Comment puis-je vérifier une licence dans l'Android Market ?
- Comment puis-je tester différents messages d'erreur du serveur de licences ?
- Comment puis-je désactiver le cache du résultat dans l'App Center ?
- Que se passe-t-il si l'utilisateur n'est pas connecté à l'App Center ?
- Comment puis-je m'assurer que les demandes parviendront au serveur de licences ?
- Est-ce que je peux utiliser mon propre validateur de licences ? Je veux vérifier la signature moi-même.
- Mon projet ne peut pas trouver l'énumération de.androidpit.AndroidPitLicenseCheckError.
- Comment puis-je créer un objet de clef publique basé sur le Base64-String ?