In-App Purchase con RevenueCat + Swift (Parte 3 de 6)1

In-App Purchase con RevenueCat en Swift - ¿Cómo instalarlo?

2

In-App Purchase con RevenueCat en Swift - ¿Cómo configurar los productos?

3

In-App Purchase con RevenueCat en Swift - ¿Cómo mostrar los productos?

4

In-App Purchase con RevenueCat en Swift - ¿Cómo comprar productos?

5

In-App Purchase con RevenueCat en Swift - ¿Cómo comprobar el estado de una suscripción?

6

In-App Purchase con RevenueCat en Swift - ¿Cómo restaurar compras?

In-App Purchase con RevenueCat en Swift - ¿Cómo mostrar los productos?

Una vez hayamos terminado de instalar RevenueCat y configurar los productos, es hora de mostrar los productos en nuestra app.

Inicializar RevenueCat en iOS

Primero tenemos que conseguir el ApiKey de RevenueCat. Para ello nos vamos al dashboard, y en el menú de la izquierda seleccionamos API Keys, hacemos click en new y generamos un nuevo Public app-specific API keys.

Ejemplo de como conseguir el ApiKey

Dependiendo de tu aplicación se puede inicializar usando uno de los siguientes métodos:

Purchases.logLevel = .debug
Purchases.configure(withAPIKey: <revenuecat_api_key>)
  • Purchases.logLevel: habilitamos los logs en debug para poder obtener información detallada sobre lo que está pasando con el SDK de RevenueCat, ayudándonos a solventar posibles errores.

  • Purchases.configure: agregamos nuestra APIKey para poder inicializar el SDK.

Si nuestra app tiene AppDelegate

Ahora inicializamos RevenueCat en el AppDelegate:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
Purchases.logLevel = .debug
Purchases.configure(withAPIKey: <revenuecat_api_key>)
return true
}

Además debes agregar la siguiente línea al principio del archivo, para importar la librería: import RevenueCat.

Si nuestra app no tiene AppDelegate

Tenemos dos opciones:

  1. Desde el @main app creando un constructor para inicializar RevenueCat
import SwiftUI
import RevenueCat
@main
struct MainApp: App {
init() {
Purchases.logLevel = .debug
Purchases.configure(withAPIKey: <revenuecat_api_key>)
}
var body: some Scene {
WindowGroup {
ContainerView()
}
}
}
  1. Creando un AppDelegate

Si estamos usando SwiftUI, podemos crear un AppDelegate usando el property wrapper UIApplicationDelegateAdaptor

import SwiftUI
import RevenueCat
final class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
Purchases.logLevel = .debug
Purchases.configure(withAPIKey: <revenuecat_api_key>)
return true
}
}
@main
struct MainApp: App {
@UIApplicationDelegateAdaptor private var delegate: AppDelegate
var body: some Scene {
WindowGroup {
ContainerView()
}
}
}

Mostrar productos de RevenueCat

Para mostrar los productos, lo primero que hay que hacer es obtenerlos. Hay varias formas:

  1. Obteniendo los Current Offerings:

Las ofertas se obtienen a través del SDK en función de su configuración en el Dashboard de RevenueCat. Gracias al método getOfferings, obtenemos las ofertas, las cuales en la mayoría de los casos son cargadas previamente al iniciar la aplicación, por lo que al llamar a getOfferings no se necesitará realizar una llamada al servidor.

Purchases.shared.getOfferings { (offerings, error) in
if let packages = offerings?.current?.availablePackages {
// Mostrar productos
}
}
  1. Obteniendo los Offerings con un identificador en específico:
Purchases.shared.getOfferings { (offerings, error) in
if let packages = offerings?.offering(identifier: "identificador").availablePackages {
// Mostrar productos
}
}
  1. Indicando la duración del paquete:
Purchases.shared.getOfferings { (offerings, error) in
if let package = offerings?.offering(identifier: "identificador").monthly {
// Mostrar productos
}
}
  1. Indicando el identificador del offering y el del paquete:
Purchases.shared.getOfferings { (offerings, error) in
if let package = offerings?.offering(identifier: "identificador").package(identifier: "<identificador>") {
// Mostrar productos
}
}

Si tienes algún problema con los productos, puedes visitar esta sección.

Ya podemos acceder a los paquetes, los cuales tienen tres propiedades:

  1. Identifier: Identificador del producto.
  2. Type: El tipo de paquete, que puede ser:
    • UNKNOWN
    • CUSTOM
    • LIFETIME
    • ANNUAL
    • SIX_MONTH
    • THREE_MONTH
    • TWO_MONTH
    • MONTHLY
    • WEEKLY
  3. Product: Objeto que tendrá la información del producto como el precio y la duración.

Accediendo a un producto

Purchases.shared.getOfferings { (offerings, error) in
// Obtenemos el primer paquete disponible
if let package = offerings?.current?.availablePackages.first {
// El precio del producto localizado (si estás en la tienda española imprimirá el precio en €, si estás en USA, imprimirá $).
print(package.localizedPriceString)
// Precio del producto localizado.
print(package.storeProduct.localizedPriceString)
// Título del producto localizado.
print(package.storeProduct.localizedTitle)
// Período de suscripción (diario, semanal, mensual, anual).
print(package.storeProduct.subscriptionPeriod)
}
}

Con la información del producto ya podemos crear nuestra pasarela y mostrarlos.

Posibles causas de que no estemos viendo nuestros productos

  • En caso de que packages esté vacío, la razón más común es que se deba a un problema de configuración en el App Store Connect.
  • Cerciórate que Paid Applications Agreement esté al día o que los productos configurados estén en el estado de Ready To Submit.
  • Puedes revisar nuevamente como configurar los productos.
  • Verifica que en el Dashboard de RevenueCat tienes seleccionada una oferta como current.

Importante tener en cuenta

  • Intenta hacer pasarelas de manera dinámica, tomando en cuenta de que podemos cambiar los productos y ofertas desde el dashboard de RevenueCat.
  • No uses ID de productos estáticos, usa los que vengan de RevenueCat de manera dinámica, así puedes cambiar precios, títulos, cantidad de productos etc. desde el dashboard sin necesidad de subir una nueva aplicación a la tienda.
  • Colocar un link a los términos y condiciones y políticas de privacidad, ya que Apple lo revisará.
  • En caso de que sea una suscripción, colocar un mensaje explicando que ésta se renovará automáticamente, que puede ser cancelada en la configuración de la cuenta y será cargada a su tarjeta de crédito. Sin este mensaje, es muy probable que Apple rechace la app. Este es un ejemplo que he puesto en una de mis apps:

Las suscripciones se cargarán a su tarjeta de crédito a través de la tienda. Su suscripción se renovará automáticamente a menos que se cancele 24 horas antes del final del período actual. Administre sus suscripciones en configuración de la cuenta después de la compra.

In-App Purchase con RevenueCat + Swift (Parte 3 de 6)1

In-App Purchase con RevenueCat en Swift - ¿Cómo instalarlo?

2

In-App Purchase con RevenueCat en Swift - ¿Cómo configurar los productos?

3

In-App Purchase con RevenueCat en Swift - ¿Cómo mostrar los productos?

4

In-App Purchase con RevenueCat en Swift - ¿Cómo comprar productos?

5

In-App Purchase con RevenueCat en Swift - ¿Cómo comprobar el estado de una suscripción?

6

In-App Purchase con RevenueCat en Swift - ¿Cómo restaurar compras?

Comparte este artículo

Subscríbete a nuestro Newsletter

Mantente al día en el mundo de las aplicaciones móviles con nuestro blog especializado.

Artículos semanales

Todas las semanas artículos nuevos sobre el mundo de las aplicaciones móviles.

No spam

No te enviaremos spam, solo contenido de calidad. Puedes darte de baja cuando quieras.

Contenido de calidad

Nada de contenido generado de manera automática usando ChatGPT.

Recomendaciones

Tips indispensables sobre mejores prácticas y metodologías.

© 2024 AsyncLearn