Agrega funciones específicas de los productos entregados como recompensa

Una manera de desbloquear productos integrados en la aplicación y beneficios para tus usuarios es crear productos entregados como recompensa o elementos que reciben los usuarios después de ver un anuncio de video. Al brindar productos entregados como recompensa, permites que los usuarios obtengan recompensas y beneficios integrados en la aplicación sin tener que hacer compras directas.

En este documento, se explica cómo implementar la función específica de los productos entregados como recompensa. La sección del diagrama de flujo de trabajo de esta página ilustra el proceso.

Identifica los productos entregados como recompensa de tu app

Los productos entregados como recompensa tienen un SkuType de INAPP. Para garantizar que los usuarios puedan ver varios anuncios y obtener varias recompensas, es necesario que se consuman los productos.

Para poder ofrecer un producto entregado como recompensa a un usuario, debes obtener los SkuDetails de ese producto. Para ello, llama a querySkuDetailsAsync() con SkuType.INAPP como tipo de producto.

Cómo declarar anuncios apropiados a la edad

Para ayudar con el cumplimiento de obligaciones legales relacionadas con niños y usuarios menores de edad, entre ellas, la Ley de Protección a la Privacidad Infantil en Internet (COPPA) y el Reglamento General de Protección de Datos (GDPR), tu app debe declarar qué anuncios pueden dirigirse a niños de Estados Unidos o a sus usuarios que aún no tengan la edad de consentimiento aplicable de su país. En el Centro de ayuda de AdMob, se explica cuándo debes etiquetar tus solicitudes de anuncios como contenido dirigido a niños y cuándo debes etiquetarlas como contenido apto para menores de edad. También se explica qué efecto tienen esas etiquetas.

Al crear el cliente de facturación de tu app, considera si las solicitudes de anuncios recompensados deben tratarse como dirigidas a niños o si deben dirigirse a usuarios que no alcanzan la edad de consentimiento. Si es necesario que las solicitudes de anuncios tengan esas restricciones, llama a los métodos setChildDirected() y setUnderAgeOfConsent(), y pasa los valores adecuados a cada método.

En el siguiente fragmento de código, se muestra cómo declarar que los anuncios de video son adecuados para niños o para usuarios que no alcanzan la edad de consentimiento:

Kotlin

val billingClient = BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build()

Java

BillingClient billingClient =
    BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build();

Carga anuncios de video

Antes de mostrarle al usuario la opción para ver un anuncio de video y recibir un producto entregado como recompensa, debes cargar el video. Para hacerlo, crea un objeto RewardLoadParams y asócialo al objeto SkuDetails que representa el producto entregado como recompensa. Luego, llama al método loadRewardedSku() del cliente de facturación y pasa los objetos RewardLoadParams y RewardResponseListener.

El objeto de escucha RewardResponseListener recibe una notificación cuando el video termina de cargarse. Además, recibe una notificación si el video no está disponible o si ocurre otro error, por ejemplo, si se agota el tiempo de espera del servidor.

Para mantener el rendimiento del dispositivo cuando cargas los videos asociados con los productos otorgados como recompensa de tu app, ten en cuenta las siguientes prácticas recomendadas:

  • Como máximo, carga tres SKU de productos entregados como recompensa a la vez.
  • Intenta cargar los videos cuando el usuario entre a tu app. Eso te ayudará a verificar si los videos siguen cargados y están disponibles.
  • Cuando decidas en qué momento cargar los videos, prioriza un equilibrio entre el uso de ancho de banda y la capacidad de respuesta de la app que mejor se adapte a tu caso práctico:

    • Como muy pronto, carga los videos después de llamar a getSkuDetails() para el producto entregado como recompensa asociado. La capacidad de respuesta de tu app sigue siendo alta, pero es posible que desperdicies datos de red al cargar un video que el usuario no verá nunca.
    • Como muy tarde, carga el video cuando el usuario navegue a la página en la que se mostrará el video. En ese caso, es muy raro que la app desperdicie ancho de banda, pero es posible que el usuario tenga que esperar unos momentos para poder hacer clic en el botón que permite ver el video.

En el siguiente fragmento de código, se muestra el proceso para cargar un anuncio de video que se reproduce antes de que el usuario reciba un producto entregado como recompensa:

Kotlin

if (skuDetails.isRewarded()) {
    val params = RewardLoadParams.Builder()
            .setSkuDetails(skuDetails)
            .build()
    mBillingClient.loadRewardedSku(params.build(),
            object : RewardResponseListener {
        override fun onRewardResponse(@BillingResponse responseCode : Int) {
            if (responseCode == BillingResponse.OK) {
                // Enable the reward product, or make
                // any necessary updates to the UI.
            }
        }
    })
}

Java

if (skuDetails.isRewarded()) {
    RewardLoadParams.Builder params = RewardLoadParams.newBuilder();
    params.setSkuDetails(skuDetails);
    mBillingClient.loadRewardedSku(params.build(),
        new RewardResponseListener() {
            @Override
            public void onRewardResponse(int responseCode) {
                if (responseCode == BillingResponse.OK) {
                      // Enable the reward product, or make
                      // any necessary updates to the UI.
                  }
            }
        });
}

Otorga a los usuarios compras entregadas como recompensa

Si la Biblioteca de Facturación Google Play carga correctamente el video asociado con un producto entregado como recompensa, es decir, si el RewardResponseListener recibe un responseCode de BillingResponse.OK, puedes iniciar el flujo de facturación.

Para comenzar a reproducir anuncios correspondientes a un producto entregado como recompensa, llama a launchBillingFlow() como lo haces para el resto de los tipos de productos integrados en la aplicación. Aunque el usuario no esté haciendo una compra directa para recibir un producto entregado como recompensa, igual debes habilitar el flujo de facturación para que pueda obtener y usar el producto.

Consumo de la compra

Para notificar al cliente de facturación que un usuario recibió y consumió un producto entregado como recompensa, controla la compra en el método onPurchasesUpdated() del objeto de escucha del cliente de facturación. Ten en cuenta que los productos entregados como recompensa deben consumirse.

Prueba los productos entregados como recompensa

Para probar la forma en que tu app carga anuncios de video y proporciona a los usuarios los productos entregados como recompensa, aprovecha los verificadores con licencia, quienes, de manera predeterminada, obtienen anuncios de prueba en lugar de anuncios reales. Para obtener información sobre cómo configurar cuentas para los verificadores, consulta Cómo probar la app de Facturación Google Play con usuarios.

Otra de forma realizar esta verificación es con el ID de producto de android.test.reward. Este producto específico tiene un nombre reservado en Facturación Google Play, por lo que no es necesario que lo agregues a tu lista de productos integrados en la aplicación en Play Console.

Advertencia: Cuando pruebes los productos entregados como recompensa de tu app, no uses productos reales; si lo haces, es posible que tu cuenta se marque como una cuenta fraudulenta o de spam.

Sin embargo, cuando finalice la verificación, asegúrate de reemplazar android.test.reward con los ID de producto de los productos entregados como recompensa reales antes de implementar la app de producción para los usuarios finales.

Diagrama del flujo de trabajo de productos entregados como recompensa

El siguiente diagrama de secuencias muestra cómo el usuario, tu app y la Biblioteca de Facturación Google Play funcionan juntos para mostrar un anuncio de video y otorgarle acceso al usuario a un producto entregado como recompensa:

Diagrama de secuencias que muestra el protocolo de productos entregados como recompensa
Figura 1: Pasos para completar la compra de un producto entregado como recompensa mediante Facturación Google Play