Installer et configurer le SDK iOS
Le SDK Adapty comprend deux modules clés pour une intégration fluide dans votre application mobile :
- Core Adapty : ce SDK essentiel est requis pour qu’Adapty fonctionne correctement dans votre application.
- AdaptyUI : ce module optionnel est nécessaire si vous utilisez le Adapty Paywall Builder, un outil no-code convivial pour créer facilement des paywalls multiplateformes.
Vous voulez voir un exemple concret d’intégration du SDK Adapty dans une application mobile ? Consultez nos applications exemples, qui illustrent la configuration complète, notamment l’affichage des paywalls, les achats et d’autres fonctionnalités de base.
Pour une présentation complète de l’implémentation, vous pouvez également regarder les vidéos :
Prérequis
Le SDK Adapty pour iOS nécessite iOS 15.0 ou version ultérieure.
Adapty SDK 3.15.7+ est requis lors de la compilation avec Xcode 26.4 ou version ultérieure.
L’installation du SDK correspond à l’étape 5 de la configuration d’Adapty. Avant que les achats fonctionnent dans votre app, vous devez également connecter votre app aux stores, puis créer des produits, un paywall et un placement dans l’Adapty Dashboard. Le guide de démarrage rapide décrit toutes les étapes requises.
Installer le SDK Adapty
Le SDK Adapty s’installe via Swift Package Manager. Dans Xcode, allez dans File -> Add Package Dependency…. Notez que les étapes pour ajouter des dépendances de package peuvent varier selon les versions d’Xcode ; consultez la documentation Xcode si nécessaire.
- Saisissez l’URL du dépôt :
https://github.com/adaptyteam/AdaptySDK-iOS.git - Sélectionnez la version (la dernière version stable est recommandée) et cliquez sur Add Package.
- Dans la fenêtre Choose Package Products, sélectionnez les modules dont vous avez besoin :
- Adapty (module principal)
- AdaptyUI (facultatif - uniquement si vous prévoyez d’utiliser Paywall Builder)
Remarque :
- Pour activer le Mode Enfants dans SDK 3.x, sélectionnez Adapty_KidsMode à la place de Adapty. Dans SDK 4.0 et versions ultérieures, sélectionnez les modules habituels — le Mode Enfants est activé via le trait de package
KidsMode. - Ne sélectionnez pas d’autres packages dans la liste — vous n’en aurez pas besoin.
- Cliquez sur Add Package pour terminer l’installation.
- Vérifiez l’installation : dans le navigateur de projet, vous devriez voir « Adapty » (et « AdaptyUI » si sélectionné) sous Package Dependencies.
Activer le module Adapty du SDK
Activez le SDK dans le code de votre application.
Le SDK n’a besoin d’être activé qu’une seule fois dans votre application.
Pour obtenir votre Public SDK Key :
- Accédez à l’Adapty Dashboard et naviguez vers App settings → General.
- Dans la section Api keys, copiez la Public SDK Key (et NON la Secret Key).
- Remplacez
"YOUR_PUBLIC_SDK_KEY"dans le code.
Ou obtenez-la de façon programmatique via l’Adapty CLI :
npm install -g adapty
adapty auth login
adapty apps list
Ou, directement :
npx adapty auth login
adapty apps list
- Assurez-vous d’utiliser la Public SDK key pour l’initialisation d’Adapty — la Secret key ne doit être utilisée que pour l’API côté serveur.
- Les SDK keys sont propres à chaque application, donc si vous avez plusieurs applications, veillez à choisir la bonne.
Attendez que activate soit résolu avant d’appeler toute autre méthode du SDK Adapty. Consultez l’ordre des appels dans le SDK iOS pour la séquence complète.
Configurez maintenant les paywalls dans votre application :
- Si vous utilisez Adapty Paywall Builder, commencez par activer le module AdaptyUI ci-dessous, puis suivez le démarrage rapide avec Paywall Builder.
- Si vous créez votre propre interface de paywall, consultez le démarrage rapide pour les paywalls personnalisés.
Activer le module AdaptyUI du SDK Adapty
Si vous prévoyez d’utiliser le Paywall Builder et avez installé le module AdaptyUI, vous devez également activer AdaptyUI.
Dans votre code, vous devez activer le module principal Adapty avant d’activer AdaptyUI.
En option, lors de l’activation d’AdaptyUI, vous pouvez remplacer les paramètres de mise en cache par défaut pour les paywalls.
Configuration optionnelle
Journalisation
Configurer le système de journalisation
Adapty enregistre les erreurs et autres informations importantes pour vous aider à comprendre ce qui se passe. Les niveaux suivants sont disponibles :
| Level | Description |
|---|---|
error | Seules les erreurs seront journalisées |
warn | Les erreurs et les messages du SDK qui ne causent pas d’erreurs critiques, mais qui méritent attention, seront journalisés |
info | Les erreurs, avertissements et divers messages d’information seront journalisés |
verbose | Toute information supplémentaire pouvant être utile lors du débogage, comme les appels de fonctions, les requêtes API, etc. sera journalisée |
let configurationBuilder = AdaptyConfiguration
.builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
.with(logLevel: .verbose) // recommended for development
Rediriger les messages du système de journalisation
Si vous avez besoin d’envoyer les messages de log d’Adapty vers votre propre système ou de les sauvegarder dans un fichier, utilisez la méthode setLogHandler et implémentez votre logique de journalisation personnalisée à l’intérieur. Ce gestionnaire reçoit des enregistrements de log contenant le contenu du message et son niveau de sévérité.
Adapty.setLogHandler { record in
writeToLocalFile("Adapty \(record.level): \(record.message)")
}
Politiques de données
Adapty ne stocke pas les données personnelles de vos utilisateurs à moins que vous ne les envoyiez explicitement, mais vous pouvez mettre en place des politiques de sécurité des données supplémentaires pour vous conformer aux directives du store ou du pays concerné.
Désactiver la collecte et le partage de l’IDFA
Lors de l’activation du module Adapty, définissez idfaCollectionDisabled sur true pour désactiver la collecte et le partage de l’IDFA.
Utilisez ce paramètre pour respecter les directives de l’App Store Review Guidelines ou éviter de déclencher l’invite App Tracking Transparency lorsque l’IDFA n’est pas nécessaire pour votre application. La valeur par défaut est false. Pour plus d’informations sur la collecte de l’IDFA, consultez la section Intégration Analytics.
let configurationBuilder =
AdaptyConfiguration
.builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
.with(idfaCollectionDisabled: true)
Désactiver la collecte et le partage de l’adresse IP
Lors de l’activation du module Adapty, définissez ipAddressCollectionDisabled sur true pour désactiver la collecte et le partage de l’adresse IP de l’utilisateur. La valeur par défaut est false.
Utilisez ce paramètre pour renforcer la confidentialité des utilisateurs, respecter les réglementations régionales de protection des données (comme le RGPD ou le CCPA), ou réduire la collecte de données inutiles lorsque les fonctionnalités basées sur l’IP ne sont pas nécessaires pour votre application.
let configurationBuilder =
AdaptyConfiguration
.builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
.with(ipAddressCollectionDisabled: true)
Configuration du cache multimédia pour les paywalls dans AdaptyUI
Notez que la configuration d’AdaptyUI est optionnelle. Vous pouvez activer le module AdaptyUI sans configuration. Cependant, si vous utilisez la configuration, tous les paramètres sont obligatoires.
// Configure AdaptyUI
let adaptyUIConfiguration = AdaptyUI.Configuration(
mediaCacheConfiguration: .init(
memoryStorageTotalCostLimit: 100 * 1024 * 1024,
memoryStorageCountLimit: .max,
diskStorageSizeLimit: 100 * 1024 * 1024
)
)
// Activate AdaptyUI
AdaptyUI.activate(configuration: adaptyUIConfiguration)
Paramètres :
| Paramètre | Présence | Description |
|---|---|---|
| memoryStorageTotalCostLimit | requis | Limite de coût total du stockage en octets. |
| memoryStorageCountLimit | requis | Limite du nombre d’éléments dans le stockage en mémoire. |
| diskStorageSizeLimit | requis | Limite de taille de fichier sur le disque en octets. 0 signifie aucune limite. |
Comportement de finalisation des transactions
Cette fonctionnalité est disponible à partir de la version 3.12.0 du SDK.
Par défaut, Adapty finalise automatiquement les transactions après leur validation. Cependant, si vous avez besoin d’une validation avancée (validation côté serveur, détection de fraude ou logique métier personnalisée), vous pouvez configurer le SDK pour utiliser la finalisation manuelle des transactions.
let configurationBuilder = AdaptyConfiguration
.builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
.with(transactionsFinishBehavior: .manual) // .auto is the default
Pour plus de détails sur la façon de finaliser les transactions, consultez le guide.
Effacer les données lors d’une restauration de sauvegarde
Lorsque clearDataOnBackup est défini sur true, le SDK détecte quand l’application est restaurée depuis une sauvegarde iCloud et supprime toutes les données SDK stockées localement, y compris les informations de profil en cache, les détails des produits et les paywalls. Le SDK s’initialise ensuite dans un état propre. La valeur par défaut est false.
Seul le cache local du SDK est supprimé. L’historique des transactions avec Apple et les données utilisateur sur les serveurs Adapty restent inchangés.
let configurationBuilder = AdaptyConfiguration
.builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
.with(clearDataOnBackup: true) // default – false
Dépannage
Erreur de concurrence Swift 6 avec Tuist
Lors d’une compilation avec Tuist, vous pouvez rencontrer des erreurs de compilation liées à la concurrence stricte de Swift 6. Les symptômes typiques incluent des incompatibilités d’attribut @Sendable dans AdaptyUIBuilderLogic ou des erreurs de Sendability similaires entre modules.
Cela se produit parce que Tuist génère des projets Xcode à partir de packages SPM mais ne conserve pas le paramètre swift-tools-version: 6.0. En conséquence, certaines cibles Adapty (Adapty, AdaptyUI, AdaptyUIBuilder) compilent avec les règles Swift 5 tandis que d’autres utilisent Swift 6, ce qui crée des incompatibilités @Sendable entre modules.
Correction : Mettez à niveau vers Adapty SDK 3.15.5 ou une version ultérieure, ce qui résout le problème indépendamment des versions mixtes du langage Swift.
Solution de contournement : Si vous ne pouvez pas effectuer la mise à niveau, définissez explicitement Swift 6 pour les trois cibles Adapty dans votre configuration Tuist :
targetSettings: [
"Adapty": .init().swiftVersion("6"),
"AdaptyUI": .init().swiftVersion("6"),
"AdaptyUIBuilder": .init().swiftVersion("6"),
]