Récupérer les flows & paywalls - Android
getFlow Après avoir conçu votre flow, vous pouvez l’afficher dans votre application mobile. La première étape consiste à récupérer le flow ou le paywall associé au placement ainsi que sa configuration d’affichage, comme décrit ci-dessous.
Vous souhaitez voir un exemple concret d’intégration du SDK Adapty dans une application mobile ? Découvrez nos applications exemples, qui illustrent la configuration complète, notamment l’affichage des paywalls, la réalisation d’achats et d’autres fonctionnalités de base.
Avant de commencer
Vous avez besoin de :
- Des produits dans l’Adapty Dashboard : Créez vos produits.
- Un flow avec des produits : Créez-le dans le Flow & Paywall Builder et assignez-lui des produits.
- Un placement : Créez un placement et assignez-lui votre flow.
- Le SDK Adapty installé : Consultez le guide d’installation du SDK Android.
Récupérer un flow/paywall
Si vous avez conçu un flow ou un paywall dans le builder, vous n’avez pas à vous soucier de son rendu dans le code de votre application mobile pour l’afficher à l’utilisateur. Un tel flow ou paywall contient à la fois ce qui doit être affiché et la façon dont cela doit l’être. Vous devez néanmoins récupérer son ID via le placement, sa configuration d’affichage, puis le présenter dans votre application mobile.
Pour garantir des performances optimales, il est essentiel de récupérer le flow ou le paywall et sa configuration de vue le plus tôt possible, afin de laisser suffisamment de temps aux images de se télécharger avant de les présenter à l’utilisateur.
Pour préchauffer plusieurs placements à la fois, appelez preloadFlows (Android SDK 4.1+). Cette méthode ne met en cache que le JSON du placement, vous devez donc toujours récupérer la configuration de vue pour obtenir la mise en page et les images.
Pour obtenir un flow ou un paywall, utilisez la méthode getFlow :
No translatable prose — returning fragment byte-for-byte unchanged.
| Paramètre | Présence | Description |
|---|---|---|
| placementId | requis | L’identifiant du Placement souhaité. C’est la valeur que vous avez spécifiée lors de la création d’un placement dans l’Adapty Dashboard. |
| fetchPolicy | par défaut : AdaptyPlacementFetchPolicy.Default |
Cependant, si vous pensez que vos utilisateurs sont confrontés à une connexion internet instable, envisagez Une troisième politique, Notez que le cache reste intact lors du redémarrage de l’application et n’est effacé que lors de la réinstallation de l’application ou via un nettoyage manuel. Le SDK Adapty stocke les flows et les paywalls localement en deux couches : le cache mis à jour régulièrement décrit ci-dessus et les paywalls de secours. Nous utilisons également un CDN pour les récupérer plus rapidement et un serveur de secours indépendant en cas d’indisponibilité du CDN. Ce système est conçu pour garantir que vous obtenez toujours la dernière version tout en assurant la fiabilité même lorsque la connexion internet est limitée. |
| loadTimeout | par défaut : 5 sec | Cette valeur limite le délai d’attente de cette méthode. Si le délai est atteint, les données en cache ou le fallback local seront renvoyés. Notez que dans de rares cas, cette méthode peut expirer légèrement après le délai spécifié dans Pour Android : vous pouvez créer un |
Paramètres de réponse :
| Paramètre | Description |
|---|---|
| Flow | Un objet AdaptyFlow contenant le placement, les identifiants (id, variationId), le nom de la variante (variationName, optionnel, SDK 4.2+), le nom, ses variantes de paywall (paywalls), les Remote Configs, et un indicateur hasViewConfiguration précisant si le flow inclut une configuration de vue. Pour récupérer les produits réels en vue d’un préchargement, d’une interface personnalisée ou de vérifications programmatiques, appelez getPaywallProducts(flow). |
Récupérer la configuration de vue
Après avoir récupéré le flow ou le paywall, vérifiez s’il inclut une configuration de vue via flow.hasViewConfiguration. Ce flag permet de distinguer la façon dont le placement a été conçu dans l’Adapty Dashboard :
true— le placement a été conçu dans le Flow & Paywall Builder (un flow) ou l’ancien Paywall Builder (un paywall). Adapty génère l’interface à votre place. Suivez les étapes ci-dessous pour récupérer la configuration de la vue et afficher le flow ou le paywall.false— le placement est un paywall personnalisé sans interface Builder. Gérez-le comme un paywall Remote Config.
Assurez-vous de publier le flow. Un flow avec des modifications non publiées a le statut Dirty, et son placement continue de servir la dernière version publiée.
Si vous utilisez plusieurs langues, découvrez comment ajouter une localisation dans le Builder et comment utiliser correctement les codes de langue ici.
Une fois chargé, présentez le flow ou le paywall.
Obtenir un flow ou un paywall pour l’audience par défaut afin d’accélérer la récupération
En général, les flows et les paywalls sont récupérés presque instantanément, vous n’avez donc pas à vous soucier d’accélérer ce processus. Cependant, si vous avez de nombreuses audiences et placements et que vos utilisateurs disposent d’une connexion Internet faible, la récupération d’un flow ou d’un paywall peut prendre plus de temps que souhaité. Dans ce cas, vous pouvez afficher un flow ou un paywall par défaut pour garantir une expérience utilisateur fluide plutôt que de ne rien afficher du tout.
Pour y remédier, vous pouvez utiliser la méthode getFlowForDefaultAudience, qui récupère le flow ou le paywall du placement spécifié pour l’audience All Users. Il est cependant essentiel de comprendre que l’approche recommandée est de récupérer le flow ou le paywall via la méthode getFlow, comme détaillé dans la section Récupérer le flow/paywall ci-dessus.
Pourquoi nous recommandons d’utiliser getFlow
La méthode getFlowForDefaultAudience présente quelques inconvénients majeurs :
- Problèmes potentiels de compatibilité ascendante : Si vous devez afficher des flows différents selon les versions de l’application (actuelle et futures), vous pourrez rencontrer des difficultés. Vous devrez soit concevoir des flows compatibles avec la version actuelle (legacy), soit accepter que les utilisateurs de cette version puissent rencontrer des problèmes avec des flows non rendus.
- Perte de ciblage : Tous les utilisateurs verront le même flow conçu pour l’audience All Users, ce qui signifie que vous perdez le ciblage personnalisé (notamment selon les pays, l’attribution marketing ou vos propres attributs personnalisés).
Si vous acceptez ces inconvénients pour bénéficier d’une récupération plus rapide des flows ou des paywalls, utilisez la méthode getFlowForDefaultAudience comme suit. Sinon, restez sur getFlow décrit ci-dessus.
| Paramètre | Présence | Description |
|---|---|---|
| placementId | requis | L’identifiant du Placement. C’est la valeur que vous avez spécifiée lors de la création d’un placement dans votre Adapty Dashboard. |
| fetchPolicy | par défaut : AdaptyPlacementFetchPolicy.Default |
Cependant, si vous pensez que vos utilisateurs ont une connexion internet instable, envisagez Une troisième politique, Notez que le cache reste intact après le redémarrage de l’application et n’est effacé que lors de la réinstallation de l’application ou via un nettoyage manuel. |
Personnaliser les ressources
Pour personnaliser les images et vidéos dans votre flow ou paywall, implémentez des ressources personnalisées.
Les images hero et les vidéos hero ont des identifiants prédéfinis : hero_image et hero_video. Dans un bundle de ressources personnalisées, vous ciblez ces éléments par leurs identifiants et personnalisez leur comportement.
Pour les autres images et vidéos, vous devez définir un identifiant personnalisé dans le tableau de bord Adapty.
Par exemple, vous pouvez :
- Afficher une image ou une vidéo différente à certains utilisateurs.
- Afficher une image de prévisualisation locale pendant le chargement d’une image principale distante.
- Afficher une image de prévisualisation avant de lancer une vidéo.
- Afficher des médias intégrés à l’application, pour que le premier écran s’affiche sans téléchargement. Voir Afficher les médias du premier écran depuis le bundle de l’application.
Voici un exemple montrant comment fournir des assets personnalisés via un simple dictionnaire :
val customAssets = AdaptyCustomAssets.of(
"hero_image" to
AdaptyCustomImageAsset.remote(
url = "https://example.com/image.jpg",
preview = AdaptyCustomImageAsset.file(
FileLocation.fromAsset("images/hero_image_preview.png"),
)
),
"hero_video" to
AdaptyCustomVideoAsset.file(
FileLocation.fromResId(requireContext(), R.raw.custom_video),
preview = AdaptyCustomImageAsset.file(
FileLocation.fromResId(requireContext(), R.drawable.video_preview),
),
),
)
val flowView = AdaptyUI.getFlowView(
activity,
flowConfiguration,
products,
eventListener,
insets,
customAssets,
)Si un asset n’est pas trouvé, le flow utilisera son apparence par défaut.
Pour les vidéos, vous pouvez éventuellement passer une resolution pour réserver l’espace de mise en page et définir le ratio d’aspect (width / height) avant le chargement de la vidéo :
AdaptyCustomVideoAsset.file(
FileLocation.fromResId(requireContext(), R.raw.custom_video),
preview = AdaptyCustomImageAsset.file(
FileLocation.fromResId(requireContext(), R.drawable.video_preview),
),
resolution = AdaptyCustomVideoAsset.Resolution(width = 1080, height = 1920),
)Après avoir conçu la partie visuelle de votre paywall avec l’ancien Paywall Builder dans l’Adapty Dashboard, vous pouvez l’afficher dans votre application mobile. La première étape consiste à récupérer le paywall associé au placement ainsi que sa configuration d’affichage, comme décrit ci-dessous.
Les paywalls créés avec le Paywall Builder du SDK 3.x nécessitent la version 3.0 ou supérieure du SDK Android.
Veuillez noter que cette rubrique concerne les paywalls personnalisés avec le Paywall Builder. Si vous implémentez vos paywalls manuellement, consultez la rubrique Récupérer les paywalls et produits pour les paywalls Remote Config dans votre application mobile.
Vous souhaitez voir un exemple concret d’intégration du SDK Adapty dans une application mobile ? Découvrez nos applications exemples, qui illustrent la configuration complète, notamment l’affichage des paywalls, la réalisation d’achats et d’autres fonctionnalités de base.
Avant de commencer à afficher des paywalls dans votre application mobile (cliquez pour développer)
- Créez vos produits dans l’Adapty Dashboard.
- Créez un paywall et intégrez-y les produits dans l’Adapty Dashboard.
- Créez des placements et intégrez-y votre paywall dans l’Adapty Dashboard.
- Installez le SDK Adapty dans votre application mobile.
Récupérer un paywall conçu avec le Paywall Builder
Si vous avez conçu un paywall avec le Paywall Builder, vous n’avez pas à vous soucier de son rendu dans le code de votre application mobile pour l’afficher à l’utilisateur. Un tel paywall contient à la fois ce qui doit être affiché et la manière dont cela doit l’être. Il vous suffit néanmoins de récupérer son ID via le placement, sa configuration d’affichage, puis de le présenter dans votre application mobile.
Pour garantir des performances optimales, il est essentiel de récupérer le paywall et sa configuration de vue le plus tôt possible, afin de laisser suffisamment de temps aux images pour se télécharger avant de les présenter à l’utilisateur.
Pour obtenir un paywall, utilisez la méthode getPaywall :
Paramètres :
| Paramètre | Présence | Description |
|---|---|---|
| placementId | requis | L’identifiant du Placement souhaité. C’est la valeur que vous avez spécifiée lors de la création d’un placement dans l’Adapty Dashboard. |
| locale | optionnel par défaut : | L’identifiant de la localisation du paywall. Ce paramètre doit être un code de langue composé d’un ou deux sous-tags séparés par le caractère moins (-). Le premier sous-tag correspond à la langue, le second à la région. Exemple : Consultez Localisations et codes de langue pour plus d’informations sur les codes de langue et nos recommandations d’utilisation. |
| fetchPolicy | par défaut : AdaptyPlacementFetchPolicy.Default |
Cependant, si vous pensez que vos utilisateurs souffrent d’une connexion internet instable, envisagez Une troisième politique, Notez que le cache reste intact après le redémarrage de l’application et n’est effacé que lors de la désinstallation de l’application ou via un nettoyage manuel. Le SDK Adapty stocke les paywalls localement en deux couches : le cache mis à jour régulièrement décrit ci-dessus et les paywalls de secours. Nous utilisons également un CDN pour récupérer les paywalls plus rapidement et un serveur de secours indépendant en cas d’indisponibilité du CDN. Ce système est conçu pour garantir que vous disposez toujours de la dernière version de vos paywalls, tout en assurant la fiabilité même en cas de connexion internet limitée. |
| loadTimeout | par défaut : 5 sec | Cette valeur limite le délai d’attente pour cette méthode. Si le délai est atteint, les données mises en cache ou le fallback local seront retournés. Notez que dans de rares cas, cette méthode peut expirer légèrement après le délai spécifié dans Pour Android : vous pouvez créer un |
Paramètres de réponse :
| Paramètre | Description |
|---|---|
| Paywall | Un objet AdaptyPaywall contenant une liste d’identifiants de produits, l’identifiant du paywall, le Remote Config et plusieurs autres propriétés. |
Récupérer la configuration d’affichage d’un paywall créé avec Paywall Builder
Assurez-vous d’activer le bouton Show on device dans le Paywall Builder. Si cette option n’est pas activée, la configuration d’affichage ne pourra pas être récupérée.
Après avoir récupéré le paywall, vérifiez s’il contient un ViewConfiguration, ce qui indique qu’il a été créé avec Paywall Builder. Cela vous guidera sur la façon d’afficher le paywall. Si le ViewConfiguration est présent, traitez-le comme un paywall Paywall Builder ; sinon, gérez-le comme un paywall Remote Config.
Si vous prenez en charge plusieurs langues, ajoutez une localisation à votre paywall. Pour les codes à utiliser, consultez Localisations et codes de langue.
Une fois chargé, affichez le paywall.
Récupérer un paywall pour l’audience par défaut afin d’accélérer le chargement
En général, les paywalls sont récupérés presque instantanément, vous n’avez donc pas à vous soucier d’accélérer ce processus. Cependant, si vous avez de nombreuses audiences et paywalls et que vos utilisateurs ont une connexion internet faible, la récupération d’un paywall peut prendre plus de temps que souhaité. Dans ce cas, vous pouvez afficher un paywall par défaut pour garantir une expérience utilisateur fluide, plutôt que de ne rien afficher du tout.
Pour y remédier, vous pouvez utiliser la méthode getPaywallForDefaultAudience, qui récupère le paywall du placement spécifié pour l’audience All Users. Cependant, il est essentiel de comprendre que l’approche recommandée est de récupérer le paywall via la méthode getPaywall, comme décrit dans la section Récupérer les informations du paywall ci-dessus.
Pourquoi nous recommandons d’utiliser getPaywall
La méthode getPaywallForDefaultAudience présente quelques inconvénients notables :
- Problèmes potentiels de compatibilité descendante : si vous devez afficher des paywalls différents selon les versions de l’application (actuelle et future), vous risquez de rencontrer des difficultés. Vous devrez soit concevoir des paywalls compatibles avec la version actuelle (legacy), soit accepter que les utilisateurs de cette version puissent rencontrer des problèmes avec des paywalls non affichés.
- Perte de ciblage : tous les utilisateurs verront le même paywall conçu pour l’audience All Users, ce qui signifie que vous perdez le ciblage personnalisé (basé notamment sur les pays, l’attribution marketing ou vos propres attributs personnalisés).
Si vous acceptez ces inconvénients pour bénéficier d’une récupération plus rapide des paywalls, utilisez la méthode getPaywallForDefaultAudience comme suit. Sinon, continuez à utiliser getPaywall décrit ci-dessus.
La méthode getPaywallForDefaultAudience est disponible à partir du SDK Android 2.11.3
| Paramètre | Présence | Description |
|---|---|---|
| placementId | requis | L’identifiant du Placement. C’est la valeur que vous avez spécifiée lors de la création d’un placement dans votre Adapty Dashboard. |
| locale | optionnel par défaut : | L’identifiant de la localisation du paywall. Ce paramètre doit être un code de langue composé d’un ou plusieurs sous-tags séparés par le caractère moins (-). Le premier sous-tag correspond à la langue, le second à la région. Exemple : Consultez Localisations et codes de langue pour plus d’informations sur les codes de langue et la façon dont nous recommandons de les utiliser. |
| fetchPolicy | par défaut : AdaptyPlacementFetchPolicy.Default |
Toutefois, si vous pensez que vos utilisateurs sont confrontés à une connexion internet instable, envisagez Une troisième politique, Notez que le cache reste intact après le redémarrage de l’application et n’est effacé qu’en cas de réinstallation ou de nettoyage manuel. |
Personnaliser les ressources
Pour personnaliser les images et vidéos de votre paywall, implémentez des ressources personnalisées.
Les images et vidéos hero ont des identifiants prédéfinis : hero_image et hero_video. Dans un bundle de ressources personnalisées, vous ciblez ces éléments par leurs identifiants et personnalisez leur comportement.
Pour les autres images et vidéos, vous devez définir un identifiant personnalisé dans le tableau de bord Adapty.
Par exemple, vous pouvez :
- Afficher une image ou une vidéo différente à certains utilisateurs.
- Afficher une image d’aperçu locale pendant le chargement d’une image principale distante.
- Afficher une image d’aperçu avant de lancer une vidéo.
Pour utiliser cette fonctionnalité, mettez à jour le SDK Android Adapty vers la version 3.7.0 ou supérieure.
Voici un exemple montrant comment fournir des ressources personnalisées via un simple dictionnaire :
val customAssets = AdaptyCustomAssets.of(
"hero_image" to
AdaptyCustomImageAsset.remote(
url = "https://example.com/image.jpg",
preview = AdaptyCustomImageAsset.file(
FileLocation.fromAsset("images/hero_image_preview.png"),
)
),
"hero_video" to
AdaptyCustomVideoAsset.file(
FileLocation.fromResId(requireContext(), R.raw.custom_video),
preview = AdaptyCustomImageAsset.file(
FileLocation.fromResId(requireContext(), R.drawable.video_preview),
),
),
)
val paywallView = AdaptyUI.getPaywallView(
activity,
viewConfiguration,
products,
eventListener,
insets,
customAssets,
)Si un asset est introuvable, le paywall reviendra à son apparence par défaut.