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. En la sección Diagrama de flujo de trabajo de esta página, se ilustra el proceso.

Cómo identificar productos entregados como recompensa de tu app

Los productos entregados como recompensa tienen un SkuType de INAPP. Para garantizar que los usuarios puedan mirar varios anuncios y obtener varias recompensas, los productos deben consumirse.

Antes de ofrecerle un producto entregado como recompensa a un usuario, debes obtener el SkuDetails del producto. Para ello, llama a querySkuDetailsAsync() con SkuType.INAPP como el tipo de producto.

Cómo declarar anuncios adecuados para la edad

Para facilitar el cumplimiento de las obligaciones legales relacionadas con los niños y los usuarios menores de edad, incluidas la Ley de Protección de la Privacidad de Menores en Internet (COPPA) y el Reglamento General de Protección de Datos (RGPD), tu app debe declarar qué anuncios se deben tratar como dirigidos a niños en Estados Unidos y qué anuncios se dirigen a los usuarios que son menores de la edad de consentimiento aplicable en 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 las solicitudes de anuncios deben tener estas 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();

Cómo cargar 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 ello, crea un objeto RewardLoadParams y asócialo con el objeto SkuDetails que representa el producto entregado como recompensa. Luego, llama al método loadRewardedSku() de tu cliente de facturación y pasa el objeto RewardLoadParams y un objeto RewardResponseListener.

El objeto de escucha de 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 cada vez que el usuario ingrese a tu app. Este paso te ayuda a comprobar si los videos todavía están cargados y disponibles.
  • Cuando decidas cuándo cargar los videos, elige el equilibrio entre el uso de ancho de banda y la capacidad de respuesta de la app que mejor se adapte a tu caso de uso:

    • Como temprano, carga los videos después de llamar al 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.
                  }
            }
        });
}

Cómo otorgar a los usuarios compras entregadas como recompensa

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

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

Consumo de la compra

Para notificar a tu cliente de facturación que un usuario recibió y consumió un producto recompensado, controla la compra en el método onPurchasesUpdated() del objeto de escucha de tu cliente de facturación. Ten en cuenta que las compras recompensadas deben consumirse.

Cómo probar 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. Puedes obtener información sobre cómo configurar cuentas para el personal de pruebas en Cómo probar una app de Facturación Google Play con usuarios.

Otro método de prueba es usar el ID del producto android.test.reward. Este producto específico es un nombre reservado de 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.

No obstante, cuando termines de realizar las pruebas, asegúrate de reemplazar android.test.reward con los ID del producto correspondientes a los productos entregados como recompensa reales antes de lanzar la versión de producción de la app para los usuarios finales.

Diagrama del flujo de trabajo de productos entregados como recompensa

El siguiente diagrama de secuencias muestra el modo en que 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 a través de Facturación Google Play