Utilisation du service d'achat iOS In-App Purchase

De RAD Studio
Aller à : navigation, rechercher

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.

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 :

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 :

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 :

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.

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 :

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).

Voir aussi