Comment ajouter un achat intégré à une application iOS? Quels sont tous les détails et existe-t-il un exemple de code?
Ceci est censé être une sorte de fourre-tout pour savoir comment ajouter des achats intégrés à des applications iOS
Comment ajouter un achat intégré à une application iOS? Quels sont tous les détails et existe-t-il un exemple de code?
Ceci est censé être une sorte de fourre-tout pour savoir comment ajouter des achats intégrés à des applications iOS
Réponses:
Utilisateurs Swift
Les utilisateurs de Swift peuvent consulter Ma réponse Swift pour cette question .
Ou consultez la réponse de Yedidya Reiss , qui traduit ce code Objective-C en Swift.
Utilisateurs Objective-C
Le reste de cette réponse est écrit en Objective-C
App Store Connect
My Apps
puis sur l'application à laquelle vous souhaitez ajouter l'achatFeatures
tête, puis sélectionnezIn-App Purchases
à gauche+
icône au milieunon-consumable
. Si vous deviez envoyer un article physique à l'utilisateur ou lui donner quelque chose qu'il peut acheter plus d'une fois, vous choisiriezconsumable
.tld.websitename.appname.referencename
cela fonctionnera le mieux, donc par exemple, vous pouvez utilisercom.jojodmo.blix.removeads
cleared for sale
, puis choisissez le niveau de prix comme 1 (99 ¢). Le niveau 2 serait de 1,99 $ et le niveau 3 serait de 2,99 $. La liste complète est disponible si vous cliquez surview pricing matrix
Je vous recommande d'utiliser le niveau 1, car c'est généralement le plus que quiconque paiera pour supprimer les annonces.add language
bouton bleu et saisissez les informations. Tout cela sera montré au client, alors ne mettez rien que vous ne voulez pas qu'il voithosting content with Apple
choisir nonscreenshot for review
POUR MAINTENANT , tout ce que nous sautons, nous y reviendrons.L'enregistrement de votre ID produit peut prendre quelques heures
App Store Connect
, alors soyez patient.Mettre en place votre projet
Maintenant que vous avez configuré vos informations d'achat in-app sur App Store Connect, allez dans votre projet Xcode, et allez dans le gestionnaire d'application (icône bleue semblable à une page en haut de l'emplacement de vos méthodes et fichiers d'en-tête) cliquez sur votre application sous les cibles (devrait être la première), puis accédez à Général. En bas, vous devriez voir
linked frameworks and libraries
cliquer sur le petit symbole plus et ajouter le cadreStoreKit.framework
Si vous ne le faites pas, l'achat dans l'application ne fonctionnera PAS !Si vous utilisez Objective-C comme langue pour votre application, vous devez ignorer ces cinq étapes . Sinon, si vous utilisez Swift, vous pouvez suivre Ma réponse Swift pour cette question, ici , ou, si vous préférez utiliser Objective-C pour le code d'achat In-App mais utilisez Swift dans votre application, vous pouvez faire ce qui suit :
Créer un nouveau
.h
fichier ( en- tête) en allant àFile
>New
>File...
( Command ⌘+ N). Ce fichier sera appelé "Votre.h
fichier" dans le reste du tutorielLorsque vous y êtes invité, cliquez sur Créer un en-tête de pontage . Ce sera notre fichier d'en-tête de pontage. Si vous n'y êtes pas invité, passez à l'étape 3. Si vous y êtes invité, ignorez l'étape 3 et passez directement à l'étape 4.
Créez un autre
.h
fichier nomméBridge.h
dans le dossier principal du projet, puis accédez au Gestionnaire d'applications (l'icône bleue semblable à une page), puis sélectionnez votre application dans laTargets
section et cliquez surBuild Settings
. Recherchez l'option indiquant Swift Compiler - Génération de code , puis définissez l' option Objective-C Bridging Header surBridge.h
Dans votre fichier d'en-tête de pontage, ajoutez la ligne
#import "MyObjectiveCHeaderFile.h"
, oùMyObjectiveCHeaderFile
est le nom du fichier d'en-tête que vous avez créé à l'étape un. Ainsi, par exemple, si vous avez nommé votre fichier d'en-tête InAppPurchase.h , vous ajouteriez la ligne#import "InAppPurchase.h"
à votre fichier d'en-tête de pont.Créer une nouvelle méthodes (Objective-C
.m
fichier) en allant àFile
>New
>File...
( Command ⌘+ N). Nommez-le de la même manière que le fichier d'en-tête que vous avez créé à l'étape 1. Par exemple, si vous avez appelé le fichier à l'étape 1 InAppPurchase.h , vous appelleriez ce nouveau fichier InAppPurchase.m . Ce fichier sera appelé «votre.m
fichier» dans le reste du didacticiel.Codage
Maintenant, nous allons entrer dans le codage réel. Ajoutez le code suivant dans votre
.h
fichier:Ensuite, vous devez importer le
StoreKit
framework dans votre.m
fichier, ainsi qu'ajouterSKProductsRequestDelegate
etSKPaymentTransactionObserver
après votre@interface
déclaration:et maintenant ajoutez ce qui suit dans votre
.m
fichier, cette partie devient compliquée, donc je vous suggère de lire les commentaires dans le code:Maintenant, vous voulez ajouter votre code pour ce qui se passera lorsque l'utilisateur terminera la transaction, pour ce tutoriel, nous utilisons la suppression des ajouts, vous devrez ajouter votre propre code pour ce qui se passera lors du chargement de la bannière.
Si vous n'avez pas d'annonces dans votre application, vous pouvez utiliser tout ce que vous voulez. Par exemple, nous pourrions rendre la couleur de l'arrière-plan bleue. Pour ce faire, nous voudrions utiliser:
Maintenant, quelque part dans votre
viewDidLoad
méthode, vous allez vouloir ajouter le code suivant:Maintenant que vous avez ajouté tout le code, allez dans votre fichier
.xib
oustoryboard
et ajoutez deux boutons, l'un disant achat et l'autre disant restauration. Branchez letapsRemoveAds
IBAction
bouton d'achat que vous venez de faire et lerestore
IBAction
bouton de restauration. L'restore
action vérifiera si l'utilisateur a déjà acheté l'achat in-app et lui donnera l'achat in-app gratuitement s'il ne l'a pas déjà.Soumission pour examen
Ensuite, allez dans App Store Connect , puis cliquez sur
Users and Access
puis cliquez sur l'en-Sandbox Testers
tête, puis cliquez sur le+
symbole à gauche où il est indiquéTesters
. Vous pouvez simplement mettre des choses au hasard pour le prénom et le nom de famille, et l'e-mail n'a pas à être réel - vous devez simplement pouvoir vous en souvenir. Entrez un mot de passe (dont vous devrez vous souvenir) et remplissez le reste des informations. Je recommanderais que vous fixiezDate of Birth
une date qui rendrait l'utilisateur 18 ans ou plus.App Store Territory
DOIT être dans le bon pays. Ensuite, déconnectez-vous de votre compte iTunes existant (vous pouvez vous reconnecter après ce didacticiel).Maintenant, exécutez votre application sur votre appareil iOS, si vous essayez de l'exécuter sur le simulateur, l'achat sera toujours une erreur, vous DEVEZ l' exécuter sur votre appareil iOS. Une fois l'application en cours d'exécution, appuyez sur le bouton d'achat. Lorsque vous êtes invité à vous connecter à votre compte iTunes, connectez-vous en tant qu'utilisateur de test que nous venons de créer. Ensuite, quand il vous demande de confirmer l'achat de 99 ¢ ou tout autre niveau de prix, PRENEZ UN INSTANTANÉ D'ÉCRAN, c'est ce que vous allez utiliser pour votre
screenshot for review
sur App Store Connect. Annulez maintenant le paiement.Maintenant, allez à Connect App Store , puis passez à
My Apps
>the app you have the In-app purchase on
>In-App Purchases
. Cliquez ensuite sur votre achat intégré et cliquez sur Modifier sous les détails de l'achat intégré. Une fois que vous avez fait cela, importez la photo que vous venez de prendre sur votre iPhone dans votre ordinateur et téléchargez-la comme capture d'écran pour examen, puis, dans les notes de révision, mettez votre e-mail et votre mot de passe TEST USER . Cela aidera Apple dans le processus d'examen.Après avoir fait cela, revenez sur l'application sur votre appareil iOS, toujours connecté en tant que compte d'utilisateur de test, et cliquez sur le bouton d'achat. Cette fois, confirmez le paiement Ne vous inquiétez pas, cela ne facturera PAS votre compte, testez les comptes utilisateur et obtenez tous les achats in-app gratuitement Après avoir confirmé le paiement, assurez-vous que ce qui se passe lorsque l'utilisateur achète réellement votre produit arrive. Si ce n'est pas le cas, ce sera une erreur avec votre
doRemoveAds
méthode. Encore une fois, je vous recommande de changer l'arrière-plan en bleu pour tester l'achat dans l'application, mais cela ne devrait pas être votre achat réel dans l'application. Si tout fonctionne et que vous êtes prêt à partir! Assurez-vous simplement d'inclure l'achat dans l'application dans votre nouveau fichier binaire lorsque vous le téléchargez sur App Store Connect!Voici quelques erreurs courantes:
Connecté:
No Products Available
Cela pourrait signifier quatre choses:
kRemoveAdsProductIdentifier
dans le code ci-dessus)Si cela ne fonctionne pas la première fois, ne soyez pas frustré! N'abandonnez pas! Il m'a fallu environ 5 heures d'affilée pour que cela fonctionne et environ 10 heures à chercher le bon code! Si vous utilisez exactement le code ci-dessus, cela devrait fonctionner correctement. Ne hésitez pas à commenter si vous avez des questions à tous .
J'espère que cela aidera tous ceux qui souhaitent ajouter un achat intégré à leur application iOS. À votre santé!
la source
Traduisez simplement le code Jojodmo en Swift:
la source
Réponse rapide
Ceci est destiné à compléter ma réponse Objective-C pour les utilisateurs Swift, pour empêcher la réponse Objective-C de devenir trop grande.
Installer
Tout d'abord, configurez l'achat dans l'application sur appstoreconnect.apple.com . Suivez la première partie de ma réponse Objective-C (étapes 1 à 13, sous l'en- tête App Store Connect ) pour obtenir des instructions sur cette opération.
L'enregistrement de votre ID produit dans l'App Store Connect peut prendre quelques heures, alors soyez patient.
Maintenant que vous avez configuré vos informations d'achat dans l'application sur App Store Connect, nous devons ajouter le cadre Apple pour les achats
StoreKit
dans l'application, à l'application.Allez dans votre projet Xcode, et allez dans le gestionnaire d'application (icône bleue semblable à une page en haut de la barre de gauche où se trouvent les fichiers de votre application). Cliquez sur votre application sous les cibles à gauche (cela devrait être la première option), puis allez dans "Capacités" en haut. Dans la liste, vous devriez voir une option "Achat In-App". Activez cette fonctionnalité et Xcode s'ajoutera
StoreKit
à votre projet.Codage
Maintenant, nous allons commencer à coder!
Tout d'abord, créez un nouveau fichier rapide qui gérera tous vos achats intégrés. Je vais l'appeler
IAPManager.swift
.Dans ce fichier, nous allons créer une nouvelle classe, appelée
IAPManager
aSKProductsRequestDelegate
etSKPaymentTransactionObserver
. En haut, assurez-vous d'importerFoundation
etStoreKit
Ensuite, nous allons ajouter une variable pour définir l'identifiant de notre achat dans l'application (vous pouvez également utiliser un
enum
, qui serait plus facile à maintenir si vous avez plusieurs IAP).Ajoutons un initialiseur pour notre classe ensuite:
Maintenant, nous allons ajouter les fonctions requises pour
SKProductsRequestDelegate
etSKPaymentTransactionObserver
travailler:Nous ajouterons la
RemoveAdsManager
classe plus tardAjoutons maintenant quelques fonctions qui peuvent être utilisées pour démarrer un achat ou restaurer des achats:
Ensuite, ajoutons une nouvelle classe d'utilitaires pour gérer nos IAP. Tout ce code pourrait être dans une seule classe, mais en avoir plusieurs le rend un peu plus propre. Je vais créer une nouvelle classe appelée
RemoveAdsManager
, et y mettre quelques fonctionsLes trois premières fonctions,
removeAds
,restoreRemoveAds
etareAdsRemoved
, sont des fonctions que vous appelez à faire certaines actions. Les quatre derniers seront appelés parIAPManager
.Ajoutons du code aux deux premières fonctions
removeAds
etrestoreRemoveAds
:Et enfin, ajoutons du code aux cinq dernières fonctions.
En mettant tout cela ensemble, nous obtenons quelque chose comme ceci:
Enfin, vous devez ajouter un moyen pour l'utilisateur de commencer l'achat et d'appeler
RemoveAdsManager.removeAds()
et de démarrer une restauration et d'appelerRemoveAdsManager.restoreRemoveAds()
, comme un bouton quelque part! Gardez à l'esprit que, conformément aux directives de l'App Store, vous devez fournir un bouton pour restaurer les achats quelque part.Soumission pour examen
La dernière chose à faire est de soumettre votre IAP pour examen sur App Store Connect! Pour obtenir des instructions détaillées sur cette opération, vous pouvez suivre la dernière partie de ma réponse Objective-C , sous l'en- tête Soumission pour révision .
la source
RMStore est une bibliothèque iOS légère pour les achats intégrés . Il enveloppe l'API StoreKit et vous fournit des blocs pratiques pour les demandes asynchrones. L'achat d'un produit est aussi simple que d'appeler une seule méthode.
Pour les utilisateurs avancés, cette bibliothèque fournit également la vérification des reçus, les téléchargements de contenu et la persistance des transactions.
la source
Je sais que je suis assez tard pour publier ceci, mais je partage une expérience similaire lorsque j'ai appris les ficelles du modèle IAP.
L'achat dans l'application est l'un des flux de travail les plus complets d'iOS mis en œuvre par le framework Storekit. La documentation entière est assez claire si vous avez la patience de la lire, mais elle est quelque peu avancée en termes de technicité.
Résumer:
1 - Demandez les produits - utilisez les classes SKProductRequest et SKProductRequestDelegate pour émettre une demande d'ID de produit et les recevoir de votre propre boutique itunesconnect.
Ces SKProducts doivent être utilisés pour remplir l'interface utilisateur de votre magasin que l'utilisateur peut utiliser pour acheter un produit spécifique.
2 - Émettez une demande de paiement - utilisez SKPayment & SKPaymentQueue pour ajouter un paiement à la file d'attente de transactions.
3 - Surveiller la file d'attente des transactions pour la mise à jour du statut - utilisez la méthode updatedTransactions du protocole SKPaymentTransactionObserver pour surveiller le statut:
4 - Restore flow button - utilisez SKPaymentQueue restoreCompletedTransactions pour accomplir cela - l'étape 3 s'occupe du reste, avec les méthodes suivantes de SKPaymentTransactionObserver:
Voici un tutoriel étape par étape (créé par moi à la suite de mes propres tentatives pour le comprendre) qui l'explique. À la fin, il fournit également un exemple de code que vous pouvez utiliser directement.
En voici une autre que j'ai créée pour expliquer certaines choses que seul le texte pourrait décrire de manière plus efficace.
la source