Activer les achats avec Flow & Paywall Builder dans le SDK Capacitor

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 & paywalls – les écrans qui présentent les produits aux utilisateurs, créés dans le Flow & Paywall Builder sans code. Le SDK les récupère via getFlow. Si vous préférez construire l’interface dans votre propre code, consultez Implémenter des paywalls personnalisés.
  • Placements – où et quand afficher les flows & paywalls dans votre app (par exemple main, onboarding, settings). Vous les associez à des placements dans le tableau de bord, puis vous les demandez par ID de placement dans votre code. Cela facilite les tests A/B et l’affichage de variantes différentes selon les utilisateurs.

Adapty vous propose trois façons d’activer les achats dans votre application. Choisissez-en une selon les besoins de votre application :

ImplémentationComplexitéQuand l’utiliser
Adapty Flow & Paywall Builder✅ FacileVous créez un flow ou un paywall complet et prêt à l’achat dans l’éditeur no-code. Adapty effectue le rendu automatiquement et gère toute la logique d’achat complexe, la validation des reçus et la gestion des abonnements en coulisses.
Paywalls personnalisés🟡 MoyenVous implémentez l’interface de votre paywall dans le code de votre application, mais récupérez quand même l’objet flow depuis Adapty pour conserver de la flexibilité dans vos offres de produits. Consultez le guide.
Mode observateur🔴 DifficileVous disposez déjà de votre propre infrastructure de gestion des achats et souhaitez continuer à l’utiliser. Notez que le mode observateur présente des limitations dans Adapty. Consultez l’article.
Important

Les étapes ci-dessous montrent comment implémenter un flow ou un paywall créé dans l’Adapty Flow & Paywall Builder.

Si vous préférez créer l’interface du paywall vous-même, consultez Implémenter des paywalls personnalisés.

Pour afficher un flow ou un paywall créé dans l’Adapty Flow & Paywall Builder, dans le code de votre application, il vous suffit de :

  1. Récupérez le flow ou le paywall : Obtenez-le depuis Adapty.
  2. Affichez-le et Adapty gère les achats pour vous : Intégrez la vue dans votre app.
  3. Gérez les actions des boutons : Associez les interactions utilisateur aux réponses de votre app. Par exemple, ouvrez des liens ou fermez le paywall quand les utilisateurs cliquent sur des boutons.

Avant de commencer

Avant de commencer, effectuez les étapes suivantes :

  1. Connectez votre application à l’App Store et/ou à Google Play dans l’Adapty Dashboard.
  2. Créez vos produits dans Adapty.
  3. Créez un flow ou un paywall et ajoutez-y des produits.
  4. Créez un placement et ajoutez-y votre flow ou paywall.
  5. Installez et activez le SDK Adapty dans le code de votre application. Ce guide utilise les APIs du SDK Adapty Capacitor v4.

1. Récupérer le flow ou le paywall

Vos flows et paywalls sont associés à des placements configurés dans le tableau de bord. Les placements vous permettent d’afficher différents flows ou paywalls selon les audiences, ou de lancer des tests A/B.

Pour récupérer un flow ou un paywall créé dans l’Adapty Flow & Paywall Builder, obtenez l’objet flow via l’ID du placement en utilisant la méthode getFlow. Le flow contient les éléments d’interface et les styles nécessaires à son affichage.


try {
  const flow = await adapty.getFlow({
    placementId: 'YOUR_PLACEMENT_ID',
  });
  // the requested flow
} catch (error) {
  // handle the error
}

2. Afficher le flow ou le paywall

Maintenant que vous avez le flow, il suffit d’ajouter quelques lignes pour l’afficher.

Créez une view avec la méthode createFlowView, définissez ses gestionnaires d’événements, puis appelez view.present(). Chaque view ne peut être utilisée qu’une seule fois. Si vous devez afficher le flow à nouveau, appelez createFlowView une fois de plus pour créer une nouvelle instance de view.


try {
  const view = await createFlowView(flow);

  await view.setEventHandlers({
    onPurchaseCompleted(purchaseResult, product) {
      return purchaseResult.type === 'success'; // close the flow on a successful purchase, keep it open for cancelled or pending purchases
    },
  });

  await view.present();
} catch (error) {
  // handle the error
}
Tip

Pour plus de détails sur l’affichage d’un flow ou d’un paywall, consultez notre guide.

3. Gérer les actions des boutons

Lorsque les utilisateurs cliquent sur des boutons dans le flow ou le paywall, le SDK Capacitor gère automatiquement les achats, la restauration, la fermeture de l’écran et l’ouverture des URLs.

Cependant, d’autres boutons ont des identifiants personnalisés ou prédéfinis et nécessitent la gestion des actions dans votre code. Vous pouvez également souhaiter remplacer leur comportement par défaut.

Par exemple, voici le comportement par défaut du bouton de fermeture. Vous n’avez pas besoin de l’ajouter dans le code, mais vous pouvez voir ici comment procéder si nécessaire.

const unsubscribe = await view.setEventHandlers({
  onCloseButtonPress() {
    return true; // allow the flow to close
  },
});
Tip

Consultez nos guides sur la gestion des actions et des événements de boutons.

Étapes suivantes

Tip

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 ou paywall est prêt à être affiché dans l’application. Testez vos achats pour vous assurer de pouvoir effectuer un achat test depuis le flow.

Ensuite, vous devez vérifier le niveau d’accès des utilisateurs pour vous assurer d’afficher un paywall ou de donner accès aux fonctionnalités payantes aux bons utilisateurs.

Exemple complet

Voici comment toutes les étapes de ce guide peuvent être intégrées ensemble dans votre application.


export async function showFlow() {
  try {
    const flow = await adapty.getFlow({
      placementId: 'YOUR_PLACEMENT_ID',
    });

    const view = await createFlowView(flow);

    await view.setEventHandlers({
      onCloseButtonPress() {
        return true;
      },
      onPurchaseCompleted(purchaseResult, product) {
        return purchaseResult.type === 'success'; // close the flow on a successful purchase, keep it open for cancelled or pending purchases
      },
    });

    await view.present();
  } catch (error) {
    // handle any error that may occur during the process
    console.warn('Error showing flow:', error);
  }
}