Utilisation du service d'achat iOS In-App Purchase
Remonter à Création d'une app iOS
Les services de paiement in-app vous permettent de vendre du contenu numérique directement depuis vos applications. iOS In-App Purchase (EN) est le service de paiement in-app d'iOS. Cette rubrique explique comment autoriser vos applications à accéder à iOS In-App Purchase en utilisant FireMonkey.
- Remarque : Lisez Développement d'applications mobiles iOS avant de continuer. Les informations suivantes complètent la rubrique principale de la documentation relative au développement iOS.
Sommaire
- 1 Périphériques pris en charge
- 2 Prérequis
- 3 Configuration de votre application pour In-App Purchase dans iTunes Connect
- 4 Ajout de la prise en charge du service iOS In-App Purchase à vos apps mobiles
- 5 Test de vos produits In-App Purchase
- 6 Voir aussi
Périphériques pris en charge
FireMonkey prend en charge iOS In-App Purchase sur tous les périphériques iOS pris en charge.
- Remarque : Le simulateur iOS n'est pas pris en charge.
Prérequis
Avant de pouvoir utiliser le service iOS In-App Purchase, en plus de préparer votre environnement de développement :
- Vous devez être prêt à effectuer une signature de code pour vos applications iOS. Voir Développement d'applications mobiles iOS, Préparation de la signature du code de votre application.
- Lorsque vous créez un ID d'application pour votre application, vous devez utiliser un ID d'application explicite, propre à une seule application ; par exemple :
com.mycompany.myapp
. Vous ne pouvez pas utiliser un ID d'application générique commecom.mycompany.*
.
- Lorsque vous créez un ID d'application pour votre application, vous devez utiliser un ID d'application explicite, propre à une seule application ; par exemple :
- Vous devez avoir un contrat "Paid Applications" en vigueur avec Apple. Pour en signer un, suivez les étapes décrites dans Managing Agreements, Tax, and Banking (EN) (Gestion des contrats, des taxes et des opérations bancaires).
Configuration de votre application pour In-App Purchase dans iTunes Connect
Pour utiliser et tester le service iOS In-App Purchase dans votre application, vous devez d'abord créer une entrée pour votre application dans iTunes Connect.
Une fois que vous avez une entrée pour votre application, ouvrez la page App Summary de votre application (EN) dans le module Manage Your Apps de iTunes Connect, puis cliquez sur Manage In-App Purchases du côté droit de la page App Summary.
Sur la page qui s'ouvre, vous pouvez gérer In-App Purchase pour votre application (EN). Par exemple, vous pouvez créer des produits In-App Purchase (EN) pour les vendre depuis votre application.
TInAppPurchase prend en charge les produits In-App Purchase consommables et non consommables. Pour plus d'informations sur ces types de produits, voir About In-App Purchase Products (EN).
- Remarque : Les types basés sur un abonnement ne sont pas pris en charge pour le moment.
Ajout de la prise en charge du service iOS In-App Purchase à vos apps mobiles
Vous devez ajouter une instance de ce composant à votre application, et établir une connexion au service de paiement in-app ciblé lorsque votre application démarre ou à tout autre moment. Ensuite, vous pouvez utiliser le service. Une fois que vous établissez une connexion à votre service de paiement in-app, vous pouvez :
- Demander des informations concernant les produits de votre application. Votre application doit le faire au moins une fois après que vous ayez établi la connexion à votre service de paiement in-app.
- Acheter des produits.
- Consommer des produits. Traitez les produits consommables dans votre application, et indiquez au service de paiement in-app que votre application les a consommés.
- Restaurer des produits que votre utilisateur a achetés à partir d'un périphérique différent sur le périphérique en cours. Vous devez le faire lorsque votre utilisateur le demande ; par exemple, votre application peut fournir pour cela un bouton "Restaurer".
Etablissement d'une connexion à votre service de paiement in-app
Avant de pouvoir utiliser votre service de paiement in-app, vous devez configurer TInAppPurchase pour se connecter à votre service de paiement in-app et établir une connexion.
Configuration des données de connexion pour votre service de paiement in-app
Pour se connecter au service iOS In-App Purchase sur iOS, TInAppPurchase ne requiert aucune configuration spéciale et doit donc fonctionner dans la mesure où votre application :
- Satisfait les prérequis du service.
- Est configurée pour le service In-App Purchase dans iTunes Connect.
Connexion à votre service de paiement in-app
Pour se connecter au service de paiement in-app cible, appelez SetupInAppPurchase. Cette procédure est asynchrone, et dès qu'elle prend fin, elle déclenche l'événement OnSetupComplete. Si vous souhaitez associer un gestionnaire d'événement à OnSetupComplete, faites-le avant d'appeler SetupInAppPurchase :
InAppPurchase1.OnSetupComplete := InAppPurchase1SetupComplete;
InAppPurchase1.SetupInAppPurchase;
Généralement, vous associez OnSetupComplete à un gestionnaire d'événement pour demander la liste des produits dès que la connexion au service cible est établie. Sinon, vous pouvez appeler IsSetupComplete pour vérifier que vous pouvez utiliser le service à un moment particulier (True
) ou non (False
).
Utilisation de votre service de paiement in-app
Une fois que vous avez établi une connexion à votre service de paiement in-app, vous pouvez effectuer les opérations suivantes :
Obtention d'informations concernant une liste de produits
Votre application doit conserver une liste des identifiants des produits pouvant être achetés à partir d'elle. Conservez cette liste dans la propriété TInAppPurchase.ProductIDs. Vous pouvez appeler QueryProducts à tout moment pour demander des informations concernant les produits ayant ces identifiants, par exemple pour savoir si ces produits ont été achetés ou non.
Si une erreur se produit, TInAppPurchase.OnError est déclenché avec ProductsRequest en tant que FailureKind
.
Si la requête s'exécute correctement, TInAppPurchase.OnProductsRequestResponse est déclenché à la place. Cet événement fournit deux listes de produits :
Products
, une TList d'instances de TProduct qui fournit la liste des produits valides disponibles et achetés.InvalidProductIDs
, une TStrings qui fournit une liste comportant les identifiants des produits non valides.
Pour distinguer les produits achetés par votre utilisateur de ceux simplement disponibles pour l'achat, vous pouvez appeler IsProductPurchased en fournissant l'identifiant d'un produit :
if InAppPurchase1.IsProductPurchased(ProductID) then { Do something. }
- Remarque : Si la liste des produits contient un produit consommable ayant été acheté, c'est le moment de consommer ce produit.
TProduct fournit de nombreuses propriétés que vous pouvez lire pour obtenir des informations concernant chaque produit.
Achat d'un produit
Avant d'autoriser un utilisateur à acheter des produits, appelez CanMakeInAppPurchases pour vérifier s'il est autorisé à effectuer des achats (True
) ou non (False
) :
if not InAppPurchase1.CanMakeInAppPurchases then { Disable or hide the in-app payments GUI elements of your application. }
Pour demander l'achat d'un produit dans la liste des produits disponibles à partir de votre service de paiement in-app, appelez PurchaseProduct avec l'identifiant du produit :
InAppPurchase1.PurchaseProduct(ProductID);
Si une erreur se produit, TInAppPurchase.OnError est déclenché avec Purchase en tant que FailureKind
.
Si l'achat se déroule correctement, TInAppPurchase.OnPurchaseCompleted est déclenché à la place. Cet événement fournit l'identifiant du produit acheté, et son paramètre NewTransaction
est True
si le produit vient d'être acheté ou False
s'il a été restauré. Utilisez ce gestionnaire d'événement pour gérer les produits achetés ; par exemple, si le produit acheté est un produit consommable, consommez-le.
Consommation d'un produit
- Remarque : TInAppPurchase ne fournit aucune méthode pour déterminer si le produit est consommable ou non. Votre application doit pouvoir faire la distinction elle-même. Par exemple, vous pouvez coder en dur une liste d'identifiants de produits consommables et non consommables dans votre application.
Les produits consommables sont des produits qui peuvent être achetés plusieurs fois. Lorsque votre utilisateur achète un produit consommable, vous devez appeler ConsumeProduct pour informer votre service de paiement in-app que ce produit a été consommé :
InAppPurchase1.ConsumeProduct(ProductID);
-
- Remarques :
- Sinon, vous pouvez appeler ConsumeProducts avec une liste d'identifiants de produits.
- iOS In-App Purchase n'a pas besoin d'être informé des produits consommés.
- Remarques :
Après avoir appelé l'une des méthodes pour consommer un produit, l'un des événements suivants est éventuellement déclenché :
- TInAppPurchase.OnConsumeCompleted si le produit est consommé correctement. Gérez cet événement pour traiter cet achat dans votre application. Par exemple, si votre application intègre un compteur de cookies et que votre utilisateur achète un produit à "5 cookies", vous pouvez accroître de 5 le nombre de cookies dans votre application.
- TInAppPurchase.OnConsumeFailed si une erreur générée empêche la consommation du produit. L'argument
ErrorMessage
de cet événement fournit une description détaillée de l'erreur.
Restauration de produits achetés à partir d'un périphérique différent sur le périphérique en cours
Dans Google Play In-app Billing, les produits non consommables d'un utilisateur apparaissent toujours comme achetés quel que soit le périphérique de cet utilisateur. Il n'est pas nécessaire de faire quoi que ce soit pour restaurer ces achats.
Dans iOS In-App Purchase, les produits non consommables d'un utilisateur ne s'affichent pas par défaut comme étant achetés lorsque votre utilisateur bascule vers un autre périphérique. Pour restaurer des produits achetés à partir d'un périphérique différent sur le périphérique en cours, vous devez appeler RestorePurchasedProducts. La restauration d'un produit, qui revient à acheter ce produit sans frais, déclenche TInAppPurchase.OnPurchaseCompleted avec False
comme valeur du paramètre NewTransaction
. Gérez cet événement pour conserver la trace des achats restaurés.
- Remarques :
- Si votre utilisateur tente d'acheter à nouveau un produit déjà acheté précédemment, cet achat ne lui coûte rien.
- La restauration des achats nécessite de saisir les identifiants d'accès à l'App Store de l'utilisateur. Il n'est pas conseillé de restaurer automatiquement les achats. Nous vous recommandons plutôt de laisser les utilisateurs démarrer manuellement une opération de restauration, par exemple avec un bouton "Restaurer".
Téléchargement du contenu d'un produit hébergé sur iTunes
Lorsque vous définissez un produit sur iTunes pour le service iOS In-App Purchase, vous pouvez charger du contenu sur iTunes et l'associer à votre produit, pour que votre application puisse télécharger ce contenu à partir d'iTunes.
Lorsqu'un utilisateur achète ou restaure un produit acheté précédemment, le composant TInAppPurchase démarre automatiquement le téléchargement du contenu téléchargeable du produit. TInAppPurchase.OnDownloadProgress est déclenché au moment où le contenu est téléchargé, de manière à ce que vous puissiez suivre l'évolution et le temps de téléchargement restant estimé. Une fois le téléchargement terminé, TInAppPurchase.OnDownloadCompleted est déclenché ; cet événement fournit le chemin local d'accès au fichier téléchargé pour que vous puissiez l'ouvrir.
- Remarque : Un produit peut avoir plusieurs fichiers téléchargeables qui lui sont associés. Chaque fichier téléchargeable a son propre identifiant, et OnDownloadCompleted fournit à la fois l'identifiant du produit et l'identifiant du contenu téléchargé.
Les instances de TProduct que vous obtenez par le biais du service iOS In-App Purchase lorsque vous demandez une liste de produits fournissent les informations associées au contenu téléchargeable du produit :
- TProduct.Downloadable indique si un produit a du contenu téléchargeable ou non.
- TProduct.DownloadContentLengths est un tableau qui fournit la taille de chaque fichier téléchargeable associé à votre produit.
- TProduct.DownloadContentVersion indique quelle version du contenu téléchargeable d'un produit est disponible pour le téléchargement.
Votre application doit conserver la trace de la version du contenu téléchargeable d'un produit. Lorsque TProduct.DownloadContentVersion a une version différente de celle du premier téléchargement du contenu à partir d'iTunes, il se peut que vous souhaitiez télécharger à nouveau le contenu pour que votre utilisateur ait la dernière version du contenu acheté. Pour mettre à jour un contenu téléchargé, appelez TCustomInAppPurchase.RestorePurchasedProducts. Les événements de téléchargement OnDownloadProgress et OnDownloadCompleted sont déclenchés à nouveau lorsque le contenu le plus récent est téléchargé.
Test de vos produits In-App Purchase
Vous pouvez tester vos produits In-App Purchase sans les frais associés à l'utilisation d'un compte d'utilisateur test iTunes Connect. Voir Testing In-App Purchase Products (EN).