Los anuncios recompensados permiten que los usuarios tengan la opción de interactuar con ellos a cambio para obtener recompensas en la app. En esta guía, se muestra cómo integrar los anuncios recompensados en Apps para iOS y Android que usan el SDK de C++ de anuncios de Google para dispositivos móviles
Lea algunas historias de éxito de clientes: caso de éxito 1, caso de éxito 2.
Requisitos previos
- Completa la sección Comenzar.
- (Solo para Android) Conocimientos de referencias
jobject
de JNI (consulta Sugerencias de JNI de Android).
Probar siempre con anuncios de prueba
Cuando compiles y pruebes tus apps, asegúrate de usar anuncios de prueba en lugar de anuncios activos y en producción. De lo contrario, podría suspenderse tu cuenta.
La forma más sencilla de cargar anuncios de prueba es usar nuestro ID exclusivo de unidad de anuncios de prueba para anuncios recompensados, que varían según la plataforma del dispositivo:
- Android:
ca-app-pub-3940256099942544/5224354917
- iOS:
ca-app-pub-3940256099942544/1712485313
Se configuraron de forma especial para mostrar anuncios de prueba para cada solicitud. puedes usarla en tus propias apps mientras codificas, pruebas y depuras. Solo asegúrate de reemplazarlo con tu propio ID de unidad de anuncios antes de publicar tu .
Para obtener más información sobre cómo funcionan los anuncios de prueba del SDK de anuncios para dispositivos móviles, consulta Anuncios de Prueba.
Implementación
Los pasos principales para integrar anuncios recompensados son los siguientes:
- Carga un anuncio.
- Regístrate para recibir devoluciones de llamada.
- Muestra el anuncio y administra el evento de recompensa.
Configura un RewardedAd
Los anuncios recompensados se muestran en objetos RewardedAd
, así que el primer paso
para integrar anuncios recompensados en tu app es crear e inicializar una instancia
de RewardedAd
.
Agrega el siguiente encabezado al código de C++ de la app:
#include "firebase/gma/rewarded_ad.h"
Declara un objeto
RewardedAd
y crea una instancia de este:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
Inicializa la instancia de
RewardedAd
con tu transmisión de vista superior a unAdParent
. La vista superior es una referenciajobject
de JNI a un objeto AndroidActivity
o un puntero a unUIView
de iOS.// my_ad_parent is a jobject reference to an Android Activity or // a pointer to an iOS UIView. firebase::gma::AdParent ad_parent = static_cast<firebase::gma::AdParent>(my_ad_parent); firebase::Future<void> result = rewarded_ad->Initialize(ad_parent);
Como alternativa a mantener el futuro como una variable, puedes periódicamente verificarás el estado de la operación de inicialización invocando
InitializeLastResult()
en el objetoRewardedAd
Esto podría ser útil para realizar un seguimiento del proceso de inicialización en tu bucle de juego global.// Monitor the status of the future in your game loop: firebase::Future<void> result = rewarded_ad->InitializeLastResult(); if (result.status() == firebase::kFutureStatusComplete) { // Initialization completed. if(future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization successful. } else { // An error has occurred. } } else { // Initialization on-going. }
Para obtener más información sobre cómo trabajar con firebase::Future
, consulta
Cómo usar interfaces Future para supervisar el estado de finalización del método
llamadas.
Carga un anuncio
La carga de un anuncio se realiza con el método LoadAd()
en un RewardedAd
.
. El método de carga requiere que hayas inicializado el RewardedAd
y que tienes tu ID de unidad de anuncios y un objeto AdRequest
. R
Se muestra firebase::Future
, que puedes usar para supervisar el estado y el resultado.
de la operación de carga.
El siguiente código muestra cómo cargar un anuncio una vez que se RewardedAd
inicializado correctamente:
firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = rewarded_ad->LoadAd(rewarded_ad_unit_id, ad_request);
Cómo registrarse para recibir devoluciones de llamada
Debes extender la clase FullScreenContentListener
para recibir
Notificaciones de presentación de anuncios recompensados y eventos de ciclo de vida Tu configuración personalizada
La subclase FullScreenContentListener
se puede registrar a través del
RewardedAd::SetFullScreenContentListener()
y recibirá
devoluciones de llamada cuando el anuncio se presenta de forma correcta o no, así como cuando
se descarta.
En el siguiente código, se muestra cómo extender la clase y asignarla al anuncio:
class ExampleFullScreenContentListener : public firebase::gma::FullScreenContentListener { public: ExampleFullScreenContentListener() {} void OnAdClicked() override { // This method is invoked when the user clicks the ad. } void OnAdDismissedFullScreenContent() override { // This method is invoked when the ad dismisses full screen content. } void OnAdFailedToShowFullScreenContent(const AdError& error) override { // This method is invoked when the ad failed to show full screen content. // Details about the error are contained within the AdError parameter. } void OnAdImpression() override { // This method is invoked when an impression is recorded for an ad. } void OnAdShowedFullScreenContent() override { // This method is invoked when the ad showed its full screen content. } }; ExampleFullScreenContentListener* example_full_screen_content_listener = new ExampleFullScreenContentListener(); rewarded_ad->SetFullScreenContentListener(example_full_screen_content_listener);
RewardedAd
es un objeto de un solo uso. Esto significa que, una vez que un anuncio recompensado
se muestra, no se puede volver a mostrar. Una práctica recomendada es cargar otro anuncio recompensado.
en el método OnAdDismissedFullScreenContent()
de tu
FullScreenContentListener
para que el siguiente anuncio recompensado comience a cargarse en cuanto
ya que se descarta la anterior.
Muestra el anuncio y administra el evento de recompensa
Antes de mostrar un anuncio recompensado a los usuarios, debes entregarles opción explícita de ver el contenido de un anuncio recompensado a cambio de una recompensa. Anuncio recompensado los anuncios deben ser siempre una experiencia optativa.
Cuando presentes tu anuncio, debes proporcionar un objeto UserEarnedReward
que maneje
la recompensa para el usuario.
En el siguiente código, se indica cómo mostrar un RewardedAd
:
// A simple listener track UserEarnedReward events.
class ExampleUserEarnedRewardListener :
public firebase::gma::UserEarnedRewardListener {
public:
ExampleUserEarnedRewardListener() { }
void OnUserEarnedReward(const firebase::gma::AdReward& reward) override {
// Reward the user!
}
};
ExampleUserEarnedRewardListener* user_earned_reward_listener =
new ExampleUserEarnedRewardListener();
firebase::Future<void> result = rewarded_ad->Show(user_earned_reward_listener);
Preguntas frecuentes
- ¿Hay un tiempo de espera para la llamada de inicialización?
- Después de 10 segundos, el SDK de C++ de anuncios de Google para dispositivos móviles completa la
Initialize()
muestra elfirebase::Future
incluso si una red de mediación aún no haya completado la inicialización. - ¿Qué sucede si algunas redes de mediación no están listas cuando recibo la devolución de llamada de inicialización?
Se recomienda cargar anuncios después de que se complete la inicialización del SDK. Incluso si una red de mediación no está lista, el SDK de C++ de anuncios de Google para dispositivos móviles seguir pidiendo un anuncio a esa red. Entonces, si una red de mediación termina después del tiempo de espera, puede atender las futuras solicitudes de anuncios sesión.
Puedes seguir consultando el estado de inicialización de todos los adaptadores en todo la sesión de tu app llamando a
GetInitializationStatus()
.- ¿Cómo puedo averiguar por qué una red de mediación específica no está lista?
AdapterStatus.description()
describe por qué un adaptador no está listo para funcionar. solicitudes de anuncios. Consulta el código fuente de nuestra app de guía de inicio rápido de ejemplo en GitHub para ver un ejemplo de cómo registrar el estado del adaptador de mediación.
Recursos adicionales
Ejemplo en GitHub
- Consulta el código fuente de nuestro ejemplo app de inicio rápido en GitHub.