Après l'installation, exécutez la skill dans votre projet :
/adapty-sdk-integration
Pour activer les achats intégrés, vous devez comprendre trois concepts clés :
Produits – tout ce que les utilisateurs peuvent acheter (abonnements, consommables, accès à vie)
Flows – séquences d’écrans qui présentent des produits aux utilisateurs, créées dans le Flow Builder sans code. Le SDK les récupère via getFlow. Si vous préférez construire l’interface dans votre propre code, utilisez plutôt un paywall — voir Implémenter des paywalls manuellement.
Placements – où et quand afficher les flows dans votre app (par exemple main, onboarding, settings). Vous associez des flows aux placements dans le tableau de bord, puis vous les demandez par ID de placement dans votre code. Cela facilite l’exécution de tests A/B et l’affichage de flows différents selon les utilisateurs.
Adapty vous propose trois façons d’activer les achats dans votre app. Choisissez celle qui correspond à vos besoins :
Vous implémentez l’interface de votre paywall dans le code de votre app, mais récupérez quand même l’objet flow depuis Adapty pour conserver de la flexibilité dans les offres de produits. Voir le guide.
Mode observateur
🔴 Difficile
Vous disposez déjà de votre propre infrastructure de gestion des achats et souhaitez continuer à l’utiliser. Notez que le mode observateur a ses limitations dans Adapty. Voir l’article.
Les étapes ci-dessous montrent comment implémenter un flow créé dans Adapty Flow Builder.
Pour afficher un flow créé dans Adapty Flow Builder, vous n’avez besoin que de :
Récupérer le flow : Obtenez-le depuis Adapty.
L’afficher et laisser Adapty gérer les achats : Affichez la vue dans votre app.
Gérer les actions des boutons : Associez les interactions utilisateur aux réponses de votre app. Par exemple, ouvrez des liens ou fermez le flow lorsque les utilisateurs cliquent sur des boutons.
Vos flows sont associés à des placements configurés dans le tableau de bord. Les placements vous permettent d’exécuter des flows différents pour différentes audiences ou de lancer des tests A/B.
Pour obtenir un flow créé dans Adapty Flow Builder, vous devez :
Récupérer l’objet flow par l’ID du placement via la méthode getFlow et vérifier qu’il dispose d’une configuration de vue.
Obtenir la configuration de vue via la méthode getFlowConfiguration. Elle contient les éléments d’interface et le style nécessaires pour afficher le flow.
func loadFlow() async { let flow = try await Adapty.getFlow(placementId: "YOUR_PLACEMENT_ID") guard flow.hasViewConfiguration else { print("Flow doesn't have a view configuration") return } flowConfiguration = try await AdaptyUI.getFlowConfiguration(forFlow: flow)}
2. Afficher le flow
Maintenant que vous avez la configuration du flow, quelques lignes suffisent pour l’afficher.
En SwiftUI, lors de l’affichage du flow, vous devez également gérer les événements. didFinishPurchase, didFailPurchase, didFinishRestore, didFailRestore et didReceiveError sont obligatoires. Pour les tests, vous pouvez simplement copier le code du snippet ci-dessous pour journaliser ces événements.
Le flow ne se ferme pas automatiquement après un achat réussi. Dans didFinishPurchase, passez votre binding de présentation à false pour le fermer, ou ne faites rien pour laisser le flow continuer vers les écrans suivants.
.flow( isPresented: $flowPresented, flowConfiguration: flowConfiguration, didFinishPurchase: { product, purchaseResult in print("Purchase finished successfully") flowPresented = false // or do nothing to let the flow continue }, didFailPurchase: { product, error in print("Purchase failed: \(error)") }, didFinishRestore: { profile in print("Restore finished successfully") }, didFailRestore: { error in print("Restore failed: \(error)") }, didReceiveError: { error in flowPresented = false print("Flow error: \(error)") })
Implémentez AdaptyFlowControllerDelegate pour gérer les événements. Au minimum, implémentez les quatre méthodes sans implémentation par défaut. Notez que le contrôleur ne se ferme pas tout seul après un achat réussi — fermez-le dans didFinishPurchase, ou ne faites rien pour laisser le flow continuer vers les écrans suivants :
Pour plus de détails sur l’affichage d’un flow, consultez notre guide.
3. Gérer les actions des boutons
Lorsque les utilisateurs cliquent sur des boutons, le SDK iOS gère automatiquement les achats, la restauration, la fermeture du flow et l’ouverture des liens.
Cependant, d’autres boutons ont des identifiants personnalisés ou prédéfinis et nécessitent une gestion dans votre code. Vous pouvez également vouloir remplacer leur comportement par défaut.
Par exemple, voici comment gérer le bouton de fermeture. En UIKit, le SDK ferme le contrôleur automatiquement lorsque .close se déclenche — ne surchargez que si vous souhaitez un comportement personnalisé. En SwiftUI, vous devez passer votre binding isPresented à false vous-même.
Consultez nos guides sur la gestion des actions et des événements des boutons.
.flow( isPresented: $flowPresented, flowConfiguration: flowConfiguration, didPerformAction: { action in switch action { case .close: flowPresented = false // dismiss the flow when the user taps close default: break } }, didFinishPurchase: { product, purchaseResult in flowPresented = false }, didFailPurchase: { product, error in /* handle the error */ }, didFinishRestore: { profile in /* check access level and dismiss */ }, didFailRestore: { error in /* handle the error */ }, didReceiveError: { error in flowPresented = false })
Des questions ou des problèmes ? Consultez notre forum d’assistance où vous trouverez des réponses aux questions fréquentes ou pourrez poser les vôtres. Notre équipe et notre communauté sont là pour vous aider !
Votre flow est prêt à être affiché dans l’app. Testez vos achats en mode sandbox pour vous assurer de pouvoir effectuer un achat de test.