RevenueCat vs Adapty
SaaS de gestión de suscripciones para iOS + Android — RevenueCat (líder de mercado) frente a Adapty (enfoque en paywall y A/B testing). Paridad de funciones, precios, integración.
Alquila la infraestructura de suscripciones multi-tienda como SDK + backend
El framework de primera parte de Apple, pero el lado del servidor lo escribes tú
El umbral es claro: si tus ingresos mensuales rastreados (MTR) están por debajo de $2.500, RevenueCat es en la práctica gratuito; ahí no estás comparando ese 1%, sino coste cero — tu propia infraestructura siempre sale más cara al lado. Solo en una app que vende exclusivamente en App Store, con un único producto y sensible en materia de protección de datos, StoreKit 2 puro es defendible. Si vendes en varias tiendas, mantener sincronizados en paralelo los 18 tipos de notificación de RTDN con las notificaciones V2 de App Store sale caro; como regla general aproximada, vuelve a sopesar la decisión cuando el MTR supere los $50.000.
| Categoría | RevenueCat | StoreKit 2 (kendi altyapın) |
|---|---|---|
| Rendimiento | 8/10 | 8/10 |
| Facilidad de aprendizaje | 8/10 | 5/10 |
| Ecosistema | 8/10 | 6/10 |
| Comunidad | 6/10 | 5/10 |
| Mercado laboral | 5/10 | 6/10 |
| A prueba de futuro | 8/10 | 8/10 |
// RevenueCat - Comprobación de entitlement y compra (iOS SDK 5.x)
import RevenueCat
func configureRevenueCat() {
Purchases.logLevel = .debug
Purchases.configure(withAPIKey: "appl_XXXXXXXXXXXX")
}
func unlockProIfEntitled() async {
do {
let customerInfo = try await Purchases.shared.customerInfo()
if customerInfo.entitlements["pro"]?.isActive == true {
print("Entitlement pro activo")
}
} catch {
print("Error de customerInfo: \(error)")
}
}
func purchasePro() async {
do {
let offerings = try await Purchases.shared.offerings()
guard let package = offerings.current?.availablePackages.first else { return }
let result = try await Purchases.shared.purchase(package: package)
if result.customerInfo.entitlements["pro"]?.isActive == true {
print("Compra correcta, pro activo")
}
} catch {
print("Error de compra: \(error)")
}
}// StoreKit 2 - Escucha de transacciones y comprobación de entitlement (tu propia infraestructura)
import StoreKit
func listenForTransactions() -> Task<Void, Error> {
Task.detached {
for await result in Transaction.updates {
switch result {
case .verified(let transaction):
await grantEntitlement(for: transaction)
await transaction.finish()
case .unverified(_, let error):
print("Verificación fallida: \(error)")
}
}
}
}
func checkCurrentEntitlement() async -> Bool {
for await result in Transaction.currentEntitlements {
guard case .verified(let transaction) = result else { continue }
if transaction.productID == "pro_monthly" {
return true
}
}
return false
}
func purchase(product: Product) async throws {
let result = try await product.purchase()
switch result {
case .success(let verification):
guard case .verified(let transaction) = verification else { return }
await grantEntitlement(for: transaction)
await transaction.finish()
case .userCancelled, .pending:
break
@unknown default:
break
}
}
func grantEntitlement(for transaction: Transaction) async {
// Envía el JWS a tu servidor, verifica de forma cruzada con la App Store Server API
}El umbral es claro: si tus ingresos mensuales rastreados (MTR) están por debajo de $2.500, RevenueCat es en la práctica gratuito; ahí no estás comparando ese 1%, sino coste cero — tu propia infraestructura siempre sale más cara al lado. Solo en una app que vende exclusivamente en App Store, con un único producto y sensible en materia de protección de datos, StoreKit 2 puro es defendible. Si vendes en varias tiendas, mantener sincronizados en paralelo los 18 tipos de notificación de RTDN con las notificaciones V2 de App Store sale caro; como regla general aproximada, vuelve a sopesar la decisión cuando el MTR supere los $50.000.
Solicita una consultoría gratuitaSi tus ingresos mensuales rastreados (MTR) están por debajo de $2.500, RevenueCat es en la práctica gratuito y asume la verificación del lado del servidor multi-tienda, los webhooks y la gestión de reembolsos — en ese caso, RevenueCat suele tener sentido. En una app de una sola plataforma, con un único producto simple y que no quiere ceder datos de ingresos a un tercero, StoreKit 2 puro es una opción defendible. En un producto multi-tienda en crecimiento, construir tu propia infraestructura suele salir más caro.