Implémenter les web paywalls dans le SDK iOS
Avant de commencer, assurez-vous d’avoir configuré votre web paywall dans le tableau de bord et d’avoir installé la version 3.6.1 ou ultérieure du SDK Adapty.
Paywalls web ouverts
Si vous travaillez avec un paywall que vous avez développé vous-même, vous devez gérer les paywalls web à l’aide de la méthode SDK. La méthode .openWebPaywall :
- Génère une URL unique permettant à Adapty de relier un paywall spécifique affiché à un utilisateur donné à la page web vers laquelle il est redirigé.
- Détecte le retour de vos utilisateurs dans l’application, puis appelle
.getProfileà intervalles courts pour déterminer si les droits d’accès du profil ont été mis à jour.
Ainsi, si le paiement a réussi et que les droits d’accès ont été mis à jour, l’abonnement s’active dans l’application presque immédiatement.
do {
try await Adapty.openWebPaywall(for: product)
} catch {
print("Failed to open web paywall: \(error)")
}
Il existe deux versions de la méthode openWebPaywall :
openWebPaywall(product)qui génère des URLs à partir du paywall et y ajoute les données du produit.openWebPaywall(paywall)qui génère des URLs à partir du paywall sans ajouter les données du produit. Dans le SDK v4, cette méthode accepte unAdaptyFlowPaywall— une variante paywall du flow récupéré. Vérifiez queflow.paywallsn’est pas vide avant d’y accéder par index, par exempleflow.paywalls[0].
Gérer les erreurs
| Erreur | Description | Action recommandée |
|---|---|---|
| AdaptyError.paywallWithoutPurchaseUrl | Le paywall ne possède pas d’URL d’achat web configurée | Vérifiez que le paywall a bien été configuré dans l’Adapty Dashboard |
| AdaptyError.productWithoutPurchaseUrl | Le produit ne possède pas d’URL d’achat web | Vérifiez la configuration du produit dans l’Adapty Dashboard |
| AdaptyError.failedOpeningWebPaywallUrl | Impossible d’ouvrir l’URL dans le navigateur | Vérifiez les paramètres de l’appareil ou proposez une autre méthode d’achat |
| AdaptyError.failedDecodingWebPaywallUrl | Échec de l’encodage des paramètres dans l’URL | Vérifiez que les paramètres d’URL sont valides et correctement formatés |
Exemple d’implémentation
class SubscriptionViewController: UIViewController {
var paywall: AdaptyPaywall?
@IBAction func purchaseButtonTapped(_ sender: UIButton) {
guard let paywall = paywall, let product = paywall.products.first else { return }
Task {
await offerWebPurchase(for: product)
}
}
func offerWebPurchase(for paywallProduct: AdaptyPaywallProduct) async {
do {
// Attempt to open web paywall
try await Adapty.openWebPaywall(for: paywallProduct)
} catch let error as AdaptyError {
switch error {
case .paywallWithoutPurchaseUrl, .productWithoutPurchaseUrl:
showAlert(message: "Web purchase is not available for this product.")
case .failedOpeningWebPaywallUrl:
showAlert(message: "Could not open web browser. Please try again.")
default:
showAlert(message: "An error occurred: \(error.localizedDescription)")
}
} catch {
showAlert(message: "An unexpected error occurred.")
}
}
// Helper methods
private func showAlert(message: String) { /* ... */ }
}
Après le retour des utilisateurs dans l’application, actualisez l’interface pour refléter les mises à jour du profil. AdaptyDelegate recevra et traitera les événements de mise à jour du profil.
Ouvrir les paywalls web dans un navigateur intégré
L’ouverture des paywalls web dans un navigateur intégré est prise en charge à partir du SDK Adapty v3.15.
Par défaut, les paywalls web s’ouvrent dans le navigateur externe.
Pour offrir une expérience utilisateur fluide, vous pouvez ouvrir les paywalls web dans un navigateur intégré. La page d’achat web s’affiche alors directement dans votre application, permettant aux utilisateurs de finaliser leurs transactions sans changer d’application.
Pour activer cette option, définissez le paramètre in sur .inAppBrowser :
do {
try await Adapty.openWebPaywall(for: product, in: .inAppBrowser) // default – .externalBrowser
} catch {
print("Failed to open web paywall: \(error)")
}