Advertisement
  1. Code
  2. iOS SDK

Achats In-App sur iOS avec Swift 3

by
Read Time:13 minsLanguages:

French (Français) translation by Daszie Chan (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Introduction

L'achat in-app est une très bonne fonctionnalité pour tous les développeurs qui veulent obtenir plus de revenus et offrir des fonctionnalités et du contenu en plus dans leurs applications. Par exemple, pour les jeux, vous pouvez acheter des gemmes ou des pièces de monnaie, et pour les applications de photographie vous pouvez débloquer de nouveaux effets ou d’outils. Et vous pouvez faire tout cela en utilisant une carte de crédit ou une autre méthode de paiement, sans quitter l’application.

Dans ce tutoriel, je vais parler de toutes les étapes nécessaires pour créer un produit IAP consommable et non consommable sur iTunes Connect, et je vais vous montrer le code dont vous avez besoin pour acheter les deux. J’ai fait un exemple de projet Xcode avec une étiquette et deux boutons, donc vous pouvez le télécharger et suivre ce didacticiel avec pour comprendre comment il fonctionne.

Créer un testeur de Sandbox dans iTunes Connect

Je suppose que vous avez déjà créé une app iOS dans la section Mes Apps sur iTunes Connect. La première chose à faire est de créer un testeur Sandbox pour tester l'IAP sur votre périphérique réel (aucun simulateur — ils ne supportent pas les achats In-App).

Entrez les utilisateurs et rôles, allez sur l’onglet testeur Sandbox, cliquez sur le signe (+) signe à côté de Testeur.

Users and roles in iTunes ConnectUsers and roles in iTunes ConnectUsers and roles in iTunes Connect

Remplissez le formulaire pour ajouter un nouveau testeur sandbox. Une fois que vous avez enregistré vos infos, revenez à la section Mon App et cliquez sur l’icône de votre application pour entrer dans les détails et créer les produits de l’IAP.

Créer des produits IAP dans iTunes Connect

Produits consommables

Cliquez sur l’onglet fonctionnalités, et puis le signe (+) à côté d'achats In-App. Vous pouvez créer qu'un seul produit à la fois, commençons donc par un consommable.

Select Consumable In-App PurchaseSelect Consumable In-App PurchaseSelect Consumable In-App Purchase

Un IAP consommable, comme son nom l’indique, est un produit que vous pouvez acheter plusieurs fois. Nous allons l’utiliser pour recueillir des « pièces » dans notre application de démo.

Cliquez sur Créer pour initialiser votre article IAP. Sur l’écran suivant, vous pouvez configurer toutes les informations concernant votre produit :

  • Nom de référence : ce nom sera utilisable sur iTunes Connect et dans les rapports de ventes et tendances. Il ne sera pas affiché sur l’App Store et vous pouvez taper n’importe le nom que vous voulez, mais il ne peut pas contenir plus de 64 caractères.
  • ID du produit : Un identificateur alphanumérique unique qui est extrait par l’app afin de reconnaître votre produit. Habituellement, les développeurs utilisent une syntaxe web-reverse pour les ID de produit. Dans cet exemple, nous avons choisi com.iaptutorial.coins. Plus tard nous allons coller cet ID sous forme de chaîne dans notre code.
  • Prix : Choisissez un niveau de prix dans le menu déroulant. N’oubliez pas que pour vendre votre produit achat in-app sur l’App Store, devez avoir accepté l'accord d’Application payante dans la section accords, impôt & banque.
  • Localisation : Pour ce tutoriel, nous n'avons choisi que l’anglais, mais vous pouvez ajouter plus de langues en cliquant sur le signe (+). Puis tapez un nom d'affichage et une description. Les deux seront visibles sur l’App Store.
  • Capture d’écran : Télécharger une capture d’écran de contrôle. Il ne s’affichera pas dans l’App Store et il doit avoir une taille valide pour la plate-forme de votre app, donc si votre application est universelle, vous pouvez télécharger une capture d’écran de d’iPad.
  • Notes : Des informations supplémentaires sur votre IAP qui peuvent s’avérer utile pour l’examinateur.
Create a new IAP productCreate a new IAP productCreate a new IAP product

Une fois que vous avez terminé, cliquez sur enregistrer et vous obtiendrez cette alerte :

Votre premier achat In-App doit être accompagné d’une nouvelle version de l’app. Sélectionnez-le dans la section achats In-App de l’application et cliquez sur soumettre.

Produits non consommables

Maintenant, cliquez sur le bouton achats In-App sur la liste de gauche, juste au-dessus du bouton de Game Center et ajoutez un nouveau produit IAP. Cette fois, sélectionnez l’option Non-consommable :

Create a Non-Consumable productCreate a Non-Consumable productCreate a Non-Consumable product

Cliquez sur créer et répétez les étapes que nous avons mentionnées ci-dessus. Puisqu’il s’agit d’un produit Non consommable, les utilisateurs seront en mesure de le n'acheter qu’une seule fois, et Apple exige la capacité de restaurer ces achats. Cela se produit dans le cas où vous désinstallez l’application et la réinstallez à nouveau, ou la téléchargez depuis un autre périphérique avec votre identifiant Apple et voullez obtenir vos anciens achats sans les payer deux fois. Plus tard, nous allons ajouter une fonction de restauration d'achat dans notre code.

L’ID de produit que nous avons créé maintenant est com.iaptutorial.premium avec un niveau de prix de USD $2,99. Nous avons l'avons appelé déverrouiller la version Premium.

Une fois que vous avez rempli tous les champs, enregistrez votre produit et revenir à la page d’achats In-App. Maintenant vous devriez avoir une liste de vos deux produits, avec leur nom, le type, leur ID et le statut défini comme prêt à soumettre.

In-app Purchases listIn-app Purchases listIn-app Purchases list

Retournez à la page de votre application en cliquant sur l’App Store et les boutons préparer à la soumission. Faites défiler jusqu'à la section achats In-App, juste en dessous des informations générales de l'app, puis cliquez sur le (+) pour ajouter vos produits IAP.

Add In-App Purchases to your apps info pageAdd In-App Purchases to your apps info pageAdd In-App Purchases to your apps info page

Sélectionnez les tous et cliquez sur terminé.

Select your IAP productsSelect your IAP productsSelect your IAP products

Enfin, cliquez sur enregistrer dans le coin supérieur droit de l’écran et vous aurez fini avec la configuration des produits achat In-App sur iTunes Connect.

Connectez-vous au testeur Sandbox sur un appareil iOS

Avant d’entrer le code, il y a une chose de plus à faire. Allez dans Paramètres > iTunes & App Store sur votre appareil iOS. Si vous êtes déjà connecté avec votre identifiant Apple original, touchez-le et choisissez se déconnecter. Alors, connectez-vous simplement avec les informations d’identification pour le testeur sandbox que vous avez créé. Après s'être connecté, vous pouvez obtenir une alerte comme ceci :

Alert from the deviceAlert from the deviceAlert from the device

Ignorez juste ce message et appuyez sur Annuler. Votre appareil vous demandera vos identifiants de sandbox à nouveau en essayant de faire un achat et reconnaitra votre compte de test alors vous ne serez même pas facturé un centime sur votre carte de crédit pour tout achat que vous effectuez.

Sortez des paramètres, branchez votre appareil à votre Mac via le câble USB et nous allons enfin commencer à coder !

Le Code

Si vous avez téléchargé notre projet de démo, vous verrez que tout le code nécessaire à l’achat In-App a été écrit, ainsi si vous l’exécutez, vous obtiendrez quelque chose comme ceci :

Demo IAP appDemo IAP appDemo IAP app

Si vous souhaitez tester l’application, vous devriez modifier l’identificateur de Bundle à votre propre id. Dans le cas contraire, Xcode ne vous permettra pas d’exécuter l’application sur un périphérique réel et l'app ne reconnaîtra pas les deux produits IAP que vous avez créés.

Chage Bundle ID in the General tab in XCodeChage Bundle ID in the General tab in XCodeChage Bundle ID in the General tab in XCode

Entrez ViewController.swift et vérifier le code. Tout d’abord, nous avons ajouté une instruction d'importation pour StoreKit et les délégués dont nous avons besoin pour suivre les opérations de paiement et demandes de produits.

Ensuite, nous avons déclaré quelques vues qui seront utiles.

coinsLabel et premiumLabel serviront à démontrer les résultats des achats pour les deux produits. consumableLabel et nonConsumableLabel afficheront la description et le prix de chaque produit de l’IAP, ceux que nous avons créé précédemment dans iTunes Connect.

Il est maintenant temps d’ajouter quelques variables :

Les deux premières lignes servent à rappeler notre ID de produit. Il est important que ces chaînes correspondent exactement à celles inscrites dans la section achat In-App d’iTunes Connect.

  • productID est une chaîne que nous allons utiliser plus tard pour détecter quel produit nous allons choisir d’acheter.
  • productsRequest est une instance de SKProductsRequest, nécessaire pour rechercher des produits IAP de votre application sur iTC.
  • iapProducts est un simple tableau de SKProducts. Veuillez noter que le préfixe SK signifie StoreKit, le cadre d’iOS que nous allons utiliser pour gérer les achats.

Les deux dernières lignes chargent deux variables de type Boolean et integer nécessaires pour traquer les achats de pièces de monnaie et de la version premium, respectivement des produits consommablse et non consommables.

Le code suivant dans viewDidLoad() effectue un certain nombre de choses dès que l’application démarre :

Tout d’abord nous enregistrons simplement chaque achat sur la console Xcode. Puis nous affichons le montant total des pièces que nous avons achetées avec coinsLabel. Étant donné que nous utilisons l’application de démo pour la première fois, il va afficher COINS : 0.

L'instruction if définit le texte de premiumLabel selon si le produit non consommable a été acheté. Pour commencer, il affichera Premium version LOCKED ! étant donné que nous n’avons pas encore fait le premier achat.

La dernière ligne de code appelle une méthode, que nous verrons plus tard, qui récupère simplement les produits que nous avons précédemment conservés dans iTC.

Maintenant, nous allons faire de voir ce que font les deux boutons d’achat que nous avons mis dans notre application de démo :

Les deux méthodes appellent une fonction qui va vérifier si le périphérique peut effectuer des achats, et si c’est possible, l’application utilisera les méthodes de délégué StoreKit pour traiter l’achat.

Comme mentionné précédemment, nous avons un troisième bouton pour restaurer notre achat non consommable. Voici son code :

La fonction IBAction est attachée au bouton Restaurer l'achat dans le Storyboard et commence la connexion au système d’achat In-App d’Apple pour restaurer l’achat s'il cela a été déjà fait.

paymentQueueRestoreCompletedTransactionsFinished() est la méthode de délégué du cadre StoreKit qui sauvegardera notre variable nonConsumablePurchaseMade à true après que l’achat ait été restauré avec succès.

Nous avons fini avec les boutons alors nous allons donc voir ce que fait la fonction fetchAvailableProducts() :

Tout d’abord, nous créons une instance de NSSet, qui est en fait un tableau de chaînes. Nous stockerons les 2 ID de produit que nous avons précédemment déclarés ici.

Puis nous commençons un SKProductsRequest issu de ces identificateurs, afin que l’application affiche les infos de ces produits IAP (description et prix), qui seront traités par cette méthode de délégué :

Dans la fonction ci-dessus, il faut tout d’abord vérifier si il n’y a aucun produit enregistré dans iTunes Connect et définir notre tableau iapProducts en conséquence. Alors nous pouvons initialiser les deux SKProducts et imprimer leur description et leur prix sur les étiquettes.

Avant d’arriver à la base du code d'achat In-App, nous avons besoin de quelques fonctions :

La première vérifie si notre dispositif est capable de faire des achats. La seconde fonction est celle que nous utilisons à partir des deux boutons. Elle commence la file d’attente de paiement et transforme notre variable productID dans le productIdentifier sélectionné.

Maintenant, nous sommes enfin arrivés à la dernière méthode de délégué, celle qui gère le résultat du paiement :

Cette fonction a une instruction switch qui vérifie chaque état du paiement. Le premier case est utilisé si l’achat a été fait avec succès et termine l'opération.

À l’intérieur de ce bloc, il faut vérifier quel ID de produit nous avons sélectionné et exécuter les actions nécessaires pour mettre à jour notre app — donc, si nous l’utilisateur acheté 10 pièces supplémentaires, nous allons ajouter 10 à notre variable coins, enregistrer sa valeur avec UserDefaults, afficher la nouvelle quantité de pièces que nous avons gagné et déclencher une alerte à ce sujet.

Veuillez noter que vous pouvez faire cet achat en plusieurs fois sans aucune limite, puisque c’est un IAP consommable, et il n’y a pas besoin d’une fonction de restauration d’achat.

De même, si nous avions acheté le produit non consommable premium, l’application met notre variable nonConsumablePurchaseMade à la valeur true, enregistre, modifie le texte du premiumLabel et déclenche une alerte pour vous avertir que l’achat a été réussi.

Les deux autres cases gèrent les résultats de paiement en cas d’échec et de restauration. L’app déclenche des alertes personnalisées d'elle-même si votre transaction échoue pour une raison quelconque ou si vous avez restauré un achat non consommable.

Voilà ! Maintenant assurez-vous juste que vous êtes connecté avec les informations d’identification du testeur sandbox et exécutez l’application pour la tester. La première fois, vous obtiendrez une alerte comme ceci :

App Store Sign In alertApp Store Sign In alertApp Store Sign In alert

Choisir utiliser un Apple ID existant et entrez le nom d'utilisateur et le mot de passe du testeur Sandbox à nouveau de vous connecter. Cela se produit parce que l’app peut reconnaître seulement un utilisateur réel dans les paramètres iTunes & App Store, pas celui d'un sandbox.

Une fois que vous aurez ouvert une session, vous serez en mesure d’effectuer des achats des deux produits.

10 Coins purchase made10 Coins purchase made10 Coins purchase made
Non-Consumable Premium purchase madeNon-Consumable Premium purchase madeNon-Consumable Premium purchase made

Modèles CodeCanyon

Si vous travaillez avec iOS et que vous voulez entrer plus profondément dans le langage Swift et le développement d'applications, jetez un œil à certains de mes modèles d’app iOS sur CodeCanyon.

Il y a des centaines d’autres modèles d’app iOS sur Envato Market également, prêts à être personnalisés et à accélérer votre flux de travail. Aller les voir ! Vous pourriez épargner des heures de travail sur votre prochaine application.

Conclusion

Dans ce tutoriel, nous avons couvert toutes les étapes nécessaires pour créer des produits achat In-App sur iTunes Connect et comment écrire le code pour les activer dans votre application. J’espère que vous serez en mesure d'utiliser ces connaissances dans votre prochaine application iOS !

Merci pour la lecture, et à la prochaine ! Veuillez consulter nos autres cours et tutoriels sur le développement d’applications iOS avec Swift.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.