Implementar web paywalls en el SDK de iOS
Antes de empezar, asegúrate de haber configurado tu web paywall en el dashboard y de tener instalada la versión 3.6.1 o posterior del SDK de Adapty.
Abrir web paywalls
Si estás trabajando con un paywall que desarrollaste tú mismo, debes gestionar los web paywalls usando el método del SDK. El método .openWebPaywall:
- Genera una URL única que permite a Adapty vincular un paywall específico mostrado a un usuario concreto con la página web a la que es redirigido.
- Detecta cuando tus usuarios vuelven a la app y luego solicita
.getProfilea intervalos cortos para determinar si los derechos de acceso del perfil se han actualizado.
De este modo, si el pago se ha completado correctamente y los derechos de acceso se han actualizado, la suscripción se activa en la app casi de inmediato.
do {
try await Adapty.openWebPaywall(for: product)
} catch {
print("Failed to open web paywall: \(error)")
}
Existen dos versiones del método openWebPaywall:
openWebPaywall(product), que genera URLs a partir del paywall y también añade los datos del producto a las URLs.openWebPaywall(paywall), que genera URLs a partir del paywall sin añadir los datos del producto. Úsalo cuando tus productos en el paywall de Adapty sean distintos de los del web paywall.
Gestionar errores
| Error | Descripción | Acción recomendada |
|---|---|---|
| AdaptyError.paywallWithoutPurchaseUrl | El paywall no tiene configurada una URL de compra web | Comprueba si el paywall está correctamente configurado en el Adapty Dashboard |
| AdaptyError.productWithoutPurchaseUrl | El producto no tiene una URL de compra web | Verifica la configuración del producto en el Adapty Dashboard |
| AdaptyError.failedOpeningWebPaywallUrl | No se pudo abrir la URL en el navegador | Revisa la configuración del dispositivo o proporciona un método de compra alternativo |
| AdaptyError.failedDecodingWebPaywallUrl | No se pudieron codificar correctamente los parámetros de la URL | Verifica que los parámetros de la URL sean válidos y estén correctamente formateados |
Ejemplo de implementación
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) { /* ... */ }
}
Cuando los usuarios vuelvan a la app, actualiza la interfaz para reflejar los cambios del perfil. AdaptyDelegate recibirá y procesará los eventos de actualización del perfil.
Abrir web paywalls en un navegador in-app
La apertura de web paywalls en un navegador in-app es compatible a partir del SDK de Adapty v. 3.15.
Por defecto, los web paywalls se abren en el navegador externo.
Para ofrecer una experiencia de usuario más fluida, puedes abrir los web paywalls en un navegador in-app. Esto muestra la página de compra web dentro de tu aplicación, permitiendo a los usuarios completar las transacciones sin cambiar de app.
Para activarlo, establece el parámetro in en .inAppBrowser:
do {
try await Adapty.openWebPaywall(for: product, in: .inAppBrowser) // default – .externalBrowser
} catch {
print("Failed to open web paywall: \(error)")
}