Introducció

Les compres integrades a l'aplicació (In-App Purchases, IAP) permeten als desenvolupadors monetitzar les seves aplicacions oferint contingut addicional, funcionalitats premium o altres elements digitals directament dins de l'aplicació. En aquest tema, aprendrem com implementar compres integrades a l'aplicació en un projecte Android utilitzant la biblioteca de facturació de Google Play.

Requisits Previs

Abans de començar, assegura't de tenir:

  • Un compte de desenvolupador de Google Play.
  • Una aplicació publicada en Google Play (pot ser en mode de prova).
  • Coneixements bàsics de Kotlin o Java i Android Studio.

Passos per Implementar Compres Integrades

  1. Configuració del Projecte

Afegir la Dependència de Facturació

Primer, afegeix la dependència de la biblioteca de facturació de Google Play al teu fitxer build.gradle de l'aplicació:

dependencies {
    implementation 'com.android.billingclient:billing:4.0.0'
}

  1. Configuració de Productes a Google Play Console

  1. Accedeix a Google Play Console: Inicia sessió al teu compte de desenvolupador de Google Play.
  2. Selecciona la teva Aplicació: Tria l'aplicació en la qual vols implementar les compres integrades.
  3. Configura Productes: A la secció de "Monetització" o "Productes integrats a l'aplicació", afegeix nous productes. Pots crear productes de tipus "Consumible", "No consumible" o "Subscripció".

  1. Implementació del Codi

Inicialització del Client de Facturació

Inicialitza el client de facturació en la teva activitat principal o en un fragment:

val billingClient = BillingClient.newBuilder(this)
    .setListener { billingResult, purchases ->
        // Gestiona els resultats de la compra
    }
    .enablePendingPurchases()
    .build()

Connexió al Servei de Facturació

Connecta't al servei de facturació:

billingClient.startConnection(object : BillingClientStateListener {
    override fun onBillingSetupFinished(billingResult: BillingResult) {
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
            // El client de facturació està preparat
        }
    }

    override fun onBillingServiceDisconnected() {
        // Torna a intentar la connexió
    }
})

Sol·licitud de Productes Disponibles

Sol·licita els productes disponibles per a la compra:

val skuList = listOf("product_id_1", "product_id_2")
val params = SkuDetailsParams.newBuilder()
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP)

billingClient.querySkuDetailsAsync(params.build()) { billingResult, skuDetailsList ->
    if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
        for (skuDetails in skuDetailsList) {
            // Gestiona els detalls del producte
        }
    }
}

Inici de la Compra

Inicia el procés de compra quan l'usuari selecciona un producte:

val flowParams = BillingFlowParams.newBuilder()
    .setSkuDetails(skuDetails)
    .build()

billingClient.launchBillingFlow(this, flowParams)

Gestió de la Resposta de la Compra

Gestiona la resposta de la compra en el PurchasesUpdatedListener:

override fun onPurchasesUpdated(billingResult: BillingResult, purchases: List<Purchase>?) {
    if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && purchases != null) {
        for (purchase in purchases) {
            // Verifica la compra i proporciona el contingut
        }
    } else if (billingResult.responseCode == BillingClient.BillingResponseCode.USER_CANCELED) {
        // L'usuari ha cancel·lat la compra
    } else {
        // Gestiona altres errors
    }
}

  1. Verificació de la Compra

Per garantir la seguretat, verifica les compres al servidor. Això implica enviar els detalls de la compra al teu servidor i verificar-los amb els servidors de Google.

  1. Prova de les Compres Integrades

Prova les compres integrades utilitzant comptes de prova configurats a Google Play Console. Assegura't que totes les compres funcionin correctament abans de publicar l'aplicació.

Exercici Pràctic

Objectiu

Implementar una compra integrada en una aplicació Android que permeti als usuaris comprar un element consumible.

Passos

  1. Configura un producte consumible a Google Play Console.
  2. Afegeix la dependència de facturació al teu projecte.
  3. Inicialitza el client de facturació i connecta't al servei.
  4. Sol·licita els productes disponibles i mostra'ls a l'usuari.
  5. Implementa el procés de compra i gestiona la resposta.

Solució

// 1. Configura un producte consumible a Google Play Console (product_id: "consumable_item")

// 2. Afegeix la dependència de facturació al fitxer build.gradle
dependencies {
    implementation 'com.android.billingclient:billing:4.0.0'
}

// 3. Inicialitza el client de facturació i connecta't al servei
val billingClient = BillingClient.newBuilder(this)
    .setListener { billingResult, purchases ->
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && purchases != null) {
            for (purchase in purchases) {
                // Verifica la compra i proporciona el contingut
            }
        }
    }
    .enablePendingPurchases()
    .build()

billingClient.startConnection(object : BillingClientStateListener {
    override fun onBillingSetupFinished(billingResult: BillingResult) {
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
            // El client de facturació està preparat
        }
    }

    override fun onBillingServiceDisconnected() {
        // Torna a intentar la connexió
    }
})

// 4. Sol·licita els productes disponibles i mostra'ls a l'usuari
val skuList = listOf("consumable_item")
val params = SkuDetailsParams.newBuilder()
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP)

billingClient.querySkuDetailsAsync(params.build()) { billingResult, skuDetailsList ->
    if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
        for (skuDetails in skuDetailsList) {
            // Mostra els detalls del producte a l'usuari
        }
    }
}

// 5. Implementa el procés de compra i gestiona la resposta
val flowParams = BillingFlowParams.newBuilder()
    .setSkuDetails(skuDetails)
    .build()

billingClient.launchBillingFlow(this, flowParams)

Conclusió

Implementar compres integrades a l'aplicació és una manera efectiva de monetitzar les aplicacions Android. En aquest tema, hem après a configurar el projecte, inicialitzar el client de facturació, sol·licitar productes disponibles, iniciar el procés de compra i gestionar la resposta de la compra. Amb aquests coneixements, pots començar a oferir contingut premium i funcionalitats addicionals als teus usuaris.

En el següent tema, explorarem com utilitzar l'aprenentatge automàtic en Android per crear aplicacions més intel·ligents i personalitzades.

© Copyright 2024. Tots els drets reservats