Migrer vers le SDK Adapty Flutter v4.1
Le SDK Adapty Flutter 4.1 modifie la façon dont Adapty Attribution est activé, renomme les API d’attribution externe et change le format du fichier de secours. Il ajoute également la prise en charge des achats intégrés promus sur l’App Store, ainsi qu’un moyen de maintenir une vue de flow active après l’avoir fermée.
Les API renommées constituent une rupture franche. Les anciens noms sont supprimés définitivement — il n’existe aucun alias déprécié pour faire la transition. Tout code compilé contre 4.0.x échouera sur 4.1 tant que vous n’aurez pas renommé chaque appel répertorié ci-dessous.
Si vous êtes encore sur la version 3.x, commencez par Migrer vers v4.0, puis suivez ce guide.
Référence rapide
| v4.0 | v4.1 |
|---|---|
| Attribution Adapty activée automatiquement | Attribution Adapty désactivée par défaut ; activez-la avec withAdaptyAttributionEnabled(true) |
Adapty().updateAttribution(attribution, source: source) | Adapty().updateExternalAttribution(attribution, provider: provider) |
AdaptyAttributionSource | AdaptyExternalAttributionProvider, avec une nouvelle valeur custom |
AdaptyProfile.appliedAttributionSources | AdaptyProfile.appliedExternalAttributionProviders |
| Fichier de secours téléchargé pour la v4.0 | Nouveau format de fichier de secours ; téléchargez à nouveau le fichier |
| Achats intégrés promus non pris en charge | Pris en charge ; le SDK les finalise, ou votre application le fait depuis didReceivePromotedPurchaseStream |
dismissFlowView(view) libère toujours la vue | destroy: false garde la vue active pour la présenter à nouveau |
Les API d’achat, de profil et de présentation de flow sont par ailleurs inchangées.
Installation
Mettez à jour adapty_flutter vers la v4.1 dans votre pubspec.yaml :
dependencies:
adapty_flutter: ^4.1.1
Si votre application utilise le Mode enfants, spécifiez adapty_flutter_kids à la place :
dependencies:
adapty_flutter_kids: ^4.1.1
Les prérequis sont inchangés par rapport à la v4.0 : Flutter 3.32.0 (Dart 3.8.0) et iOS 15.0. Consultez Installer le SDK Adapty pour la configuration complète.
4.1 fixe le SDK iOS natif à la version 4.1.3 et le SDK Android natif à la version 4.1.1. La version iOS corrige également les paramètres numériques des événements analytiques de flow : auparavant, chaque 0 et 1 arrivait dans flowViewDidReceiveAnalyticEvent sous la forme false et true.
⚠️ L’attribution Adapty est désactivée par défaut
Si vous mettez à jour vers le SDK 4.1 sans activer explicitement l’option, l’attribution Adapty cesse de fonctionner silencieusement — les installations ne sont plus enregistrées, et aucun avertissement ne s’affiche.
Dans la version 4.0 et les versions antérieures, le SDK enregistrait les installations pour Adapty Attribution automatiquement. À partir de la version 4.1, cette fonctionnalité est désactivée par défaut : le SDK n’enregistre pas les installations, onUpdateInstallationDetailsSuccessStream et onUpdateInstallationDetailsFailStream n’émettent jamais, et getCurrentInstallationStatus retourne AdaptyInstallationStatusNotAvailable.
Si vous utilisez Adapty Attribution, activez-le lors de la configuration du SDK :
await Adapty().activate(
- configuration: AdaptyConfiguration(apiKey: 'YOUR_PUBLIC_SDK_KEY'),
+ configuration: AdaptyConfiguration(apiKey: 'YOUR_PUBLIC_SDK_KEY')
+ ..withAdaptyAttributionEnabled(true),
);
Si vous n’utilisez pas l’attribution Adapty, aucune modification n’est nécessaire.
API d’attribution externe renommées
Les API qui transmettent les données d’attribution depuis un fournisseur externe (Adjust, AppsFlyer, Branch, Tenjin ou un fournisseur personnalisé) ont été renommées pour correspondre aux SDK natifs.
updateAttribution → updateExternalAttribution
La méthode est renommée et son paramètre source est renommé en provider. Le paramètre accepte désormais un AdaptyExternalAttributionProvider au lieu d’une chaîne de caractères, et les données d’attribution restent une map :
- await Adapty().updateAttribution(attribution, source: 'adjust');
+ await Adapty().updateExternalAttribution(attribution, provider: AdaptyExternalAttributionProvider.adjust);
AdaptyAttributionSource → AdaptyExternalAttributionProvider
Le type de fournisseur est renommé. Il reste un wrapper ouvert sur une chaîne — les valeurs prédéfinies sont appleAds, adjust, appsflyer, branch, tenjin, et un nouveau custom pour les fournisseurs qu’Adapty n’intègre pas directement. Vous pouvez en construire un à partir de n’importe quelle autre chaîne, ce qui permet d’utiliser un fournisseur qu’Adapty ajouterait plus tard sans mettre à jour le SDK :
final provider = AdaptyExternalAttributionProvider('my_provider');
AdaptyProfile.appliedAttributionSources → appliedExternalAttributionProviders
La propriété du profil qui liste les fournisseurs d’attribution appliqués au profil est renommée, et le type de ses éléments change en conséquence :
- if (profile.appliedAttributionSources.contains(AdaptyAttributionSource.appleAds)) {
+ if (profile.appliedExternalAttributionProviders.contains(AdaptyExternalAttributionProvider.appleAds)) {
// Apple Ads attribution has been applied
}
Le champ sérialisé du profil conserve le nom applied_attribution_sources, donc un backend qui lit le profil brut n’a pas besoin d’être modifié. Le code qui lit la propriété, lui, doit être mis à jour — voir Afficher un paywall ciblé Apple Ads.
Fichiers de secours
Le format du fichier de secours a changé dans le SDK 4.1. Téléchargez à nouveau le fichier depuis Placements > Fallbacks et intégrez-le à votre application, même si vous en aviez déjà téléchargé un pour la version 4.0.
Cette étape ne génère aucune erreur de build. Si vous la sautez, le SDK rejette le fichier obsolète et chaque placement perd son paywall de secours.
Achats intégrés mis en avant sur l’App Store
Le SDK Flutter 4.0 ne prenait pas en charge les achats intégrés mis en avant sur la page produit de votre App Store : le SDK iOS natif sur lequel il reposait n’offrait pas d’API pour cela. La version 4.1 ajoute cette prise en charge — il s’agit donc d’une nouvelle fonctionnalité et non d’une étape de migration : mettre à jour sans modifier le code ne change rien au comportement de votre application.
Par défaut, le SDK finalise lui-même un achat promu. Écrivez du code uniquement pour le finaliser vous-même, par exemple pour afficher d’abord un écran : abonnez-vous à didReceivePromotedPurchaseStream et passez le produit à makePromotedPurchase. Tant qu’un abonné est actif sur ce stream, le SDK cesse de finaliser les achats promus à votre place.
Conserver une vue de flow active après l’avoir fermée
AdaptyUI().dismissFlowView et AdaptyUIFlowView.dismiss acceptent un paramètre destroy :
await AdaptyUI().dismissFlowView(view, destroy: false);
Par défaut, sa valeur est true, ce qui libère la vue comme avant. Avec destroy: false, la vue reste active : vous pouvez la réafficher et l’utilisateur retrouve l’écran où il s’était arrêté, avec l’état que le flow avait construit.
Une vue conservée de cette façon est maintenue en mémoire jusqu’à ce que vous la fermiez avec destroy: true. Présenter une vue libérée échoue, donc appelez à nouveau createFlowView pour afficher ce flow une nouvelle fois.