Répondre aux actions des flows - iOS

Si vous créez des flows dans le Flow & Paywall Builder d’Adapty, il est essentiel de configurer correctement les boutons :

  1. Ajoutez un bouton dans le builder et associez-lui soit une action existante, soit un identifiant d’action personnalisé.
  2. Écrivez le code dans votre application pour gérer chaque action que vous avez assignée.

Ce guide explique comment gérer les actions personnalisées et existantes dans votre code.

Warning

Seules la fermeture du flow/paywall et l’ouverture d’URL sont gérées automatiquement. Toutes les autres actions de bouton nécessitent une implémentation appropriée dans le code de l’application.

Note

Le SDK iOS peut répondre aux demandes d’autorisation système, comme les notifications push ou l’accès à la caméra, via un AdaptySystemRequestsHandler. Les flows ne déclenchent pas encore ces demandes, donc vous n’avez pas besoin de les gérer pour l’instant.

Fermer les flows et les paywalls

Pour ajouter un bouton permettant de fermer votre flow ou paywall :

  1. Dans le builder, ajoutez un bouton et assignez-lui l’action Close.
  2. Dans le code de votre application, implémentez un gestionnaire pour l’action close.
Info

Dans le SDK iOS, l’action close déclenche par défaut la fermeture du flow ou du paywall. Vous pouvez toutefois modifier ce comportement dans votre code si nécessaire. Par exemple, la fermeture d’un flow peut déclencher l’ouverture d’un autre.

.flow(
    isPresented: $flowPresented,
    flowConfiguration: flowConfiguration,
    didPerformAction: { action in
        switch action {
        case .close:
            flowPresented = false // dismiss the flow or paywall
        default:
            break
        }
    },
    didFinishPurchase: { product, purchaseResult in /* dismiss, or do nothing to let the flow continue */ },
    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 }
)

Ouvrir des URL depuis les flows et les paywalls

Tip

Si vous souhaitez ajouter un groupe de liens (par ex., les conditions d’utilisation et la restauration des achats), ajoutez un élément Link dans le builder et gérez-le de la même façon que les boutons avec l’action Open URL.

Pour ajouter un bouton qui ouvre un lien depuis votre flow ou paywall (par ex., Terms of use ou Privacy policy) :

  1. Dans le builder, ajoutez un bouton, assignez-lui l’action Open URL et saisissez l’URL que vous souhaitez ouvrir.
  2. Dans le code de votre application, implémentez un gestionnaire pour l’action openURL qui ouvre l’URL reçue dans un navigateur.
Info

Dans le SDK iOS, l’action openURL déclenche l’ouverture de l’URL par défaut. Vous pouvez cependant modifier ce comportement dans votre code si nécessaire.

.flow(
    isPresented: $flowPresented,
    flowConfiguration: flowConfiguration,
    didPerformAction: { action in
        switch action {
        case let .openURL(url):
            UIApplication.shared.open(url, options: [:]) // default behavior
        default:
            break
        }
    },
    didFinishPurchase: { product, purchaseResult in /* dismiss, or do nothing to let the flow continue */ },
    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 }
)

Gérer les actions personnalisées

Pour ajouter un bouton qui gère d’autres actions :

  1. Dans le builder, ajoutez un bouton, attribuez-lui l’action Custom et donnez-lui un identifiant.
  2. Dans le code de votre application, implémentez un gestionnaire pour l’identifiant d’action que vous avez créé.

Par exemple, si vous disposez d’un autre ensemble d’offres d’abonnement ou d’achats uniques, vous pouvez ajouter un bouton qui affichera un autre flow ou paywall :

.flow(
    isPresented: $flowPresented,
    flowConfiguration: flowConfiguration,
    didPerformAction: { action in
        switch action {
        case let .custom(id):
            if id == "openNewPaywall" {
                // Display another flow or paywall
            }
        default:
            break
        }
    },
    didFinishPurchase: { product, purchaseResult in /* dismiss, or do nothing to let the flow continue */ },
    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 }
)

Si vous créez des paywalls avec le Paywall Builder d’Adapty, il est essentiel de configurer les boutons correctement :

  1. Dans l’ancien Paywall Builder, ajoutez un bouton et attribuez-lui une action existante ou un identifiant d’action personnalisé.
  2. Écrivez le code dans votre application pour gérer chaque action que vous avez attribuée.

Ce guide explique comment gérer les actions personnalisées et existantes dans votre code.

Warning

Seuls les achats, les restaurations, les fermetures de paywall et l’ouverture d’URL sont gérés automatiquement. Toutes les autres actions de bouton nécessitent une implémentation appropriée dans le code de l’application.

Fermer les paywalls

Pour ajouter un bouton permettant de fermer votre paywall :

  1. Dans le Paywall Builder, ajoutez un bouton et assignez-lui l’action Close.
  2. Dans le code de votre application, implémentez un gestionnaire pour l’action close qui ferme le paywall.
Info

Dans le SDK iOS, l’action close déclenche la fermeture du paywall par défaut. Vous pouvez cependant modifier ce comportement dans votre code si nécessaire. Par exemple, fermer un paywall peut déclencher l’ouverture d’un autre.

func paywallController(_ controller: AdaptyPaywallController,
                       didPerform action: AdaptyUI.Action) {
    switch action {
        case .close:
            controller.dismiss(animated: true) // default behavior
            break
    }
}

Ouvrir des URL depuis les paywalls

Tip

Si vous souhaitez ajouter un groupe de liens (par exemple, les conditions d’utilisation et la restauration des achats), ajoutez un élément Link dans le Paywall Builder et gérez-le de la même façon que les boutons avec l’action Open URL.

Pour ajouter un bouton qui ouvre un lien depuis votre paywall (par exemple, Terms of use ou Privacy policy) :

  1. Dans le Paywall Builder, ajoutez un bouton, assignez-lui l’action Open URL et saisissez l’URL à ouvrir.
  2. Dans le code de votre application, implémentez un gestionnaire pour l’action openUrl qui ouvre l’URL reçue dans un navigateur.
Info

Dans le SDK iOS, l’action openUrl déclenche l’ouverture de l’URL par défaut. Vous pouvez toutefois remplacer ce comportement dans votre code si nécessaire.

func paywallController(_ controller: AdaptyPaywallController,
                       didPerform action: AdaptyUI.Action) {
    switch action {
        case let .openURL(url):
            UIApplication.shared.open(url, options: [:]) // default behavior
        break
    }
}

Se connecter à l’application

Pour ajouter un bouton permettant aux utilisateurs de se connecter à votre application :

  1. Dans le Paywall Builder, ajoutez un bouton et assignez-lui l’action Login.
  2. Dans le code de votre application, implémentez un gestionnaire pour l’action login qui identifie votre utilisateur.
func paywallController(_ controller: AdaptyPaywallController,
                      didPerform action: AdaptyUI.Action) {
   switch action {
       case .login:
           // Show a login screen
           let loginVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginViewController")
           controller.present(loginVC, animated: true)
   }
}

Gérer les actions personnalisées

Pour ajouter un bouton qui gère d’autres actions :

  1. Dans le Paywall Builder, ajoutez un bouton, attribuez-lui l’action Custom et donnez-lui un ID.
  2. Dans le code de votre application, implémentez un gestionnaire pour l’ID d’action que vous avez créé.

Par exemple, si vous avez un autre ensemble d’offres d’abonnement ou d’achats uniques, vous pouvez ajouter un bouton qui affichera un autre paywall :

func paywallController(_ controller: AdaptyPaywallController,
                      didPerform action: AdaptyUI.Action) {
   switch action {
       case let .custom(id):
           if id == "openNewPaywall" {
              // Display another paywall
              }
           }
           break
   }
}