Esta guía está dirigida a los editores que quieran utilizar la mediación de AdMob para mostrar anuncios bonificados que procedan de una red que no se admita directamente en la interfaz de AdMob.
Los eventos personalizados de anuncios bonificados te permiten crear adaptadores de mediación propios para mostrar anuncios bonificados de redes publicitarias de terceros. En esta guía, abordaremos cómo crear un evento personalizado para solicitar anuncios con un SDK de ejemplo que hemos desarrollado. Puedes encontrar el código fuente completo de este SDK en GitHub.
Requisitos previos
Antes de integrar eventos personalizados, debes incorporar el formato de anuncio bonificado. Si necesitas información sobre cómo integrar este formato, consulta la guía Anuncios bonificados.
Crear un evento personalizado
Para definir un evento personalizado, primero debes crearlo en la interfaz de AdMob. Encontrarás instrucciones sobre cómo hacerlo en Añadir un evento personalizado.
Una vez que se ha definido, el adaptador de eventos personalizados apunta a una clase dentro de tu aplicación que implementa el protocolo GADMediationAdapter
para publicar un anuncio bonificado. El evento personalizado también mostrará un parámetro de servidor que se transferirá al adaptador del anuncio bonificado.
En esta captura de pantalla se muestran algunos ejemplos de ajustes de eventos personalizados:
En la captura de pantalla se muestran las siguientes entradas:
- Nombre de clase
- El nombre completo de la clase que implementa el adaptador de eventos personalizados.
- Etiqueta
- El nombre único que define la fuente del anuncio.
- Parámetro
- Argumento de cadena opcional transferido al adaptador de eventos personalizados.
Implementar el evento personalizado
Un evento personalizado es una clase que implementa el protocolo GADMediationAdapter
para publicar anuncios de terceros. En los siguientes pasos se explica cómo implementar un evento personalizado para solicitar y mostrar anuncios bonificados de la red publicitaria de ejemplo.
Implementar GADMediationAdapter
El primer paso para crear un evento personalizado es implementar el protocolo GADMediationAdapter
, tal como lo hace la clase GADMediationAdapterSampleAdNetwork
en este ejemplo:
#import <Foundation/Foundation.h>
@import GoogleMobileAds;
@interface GADMediationAdapterSampleAdNetwork : NSObject <GADMediationAdapter>
@end
Informar de la clase de los extras
Si el evento personalizado admite extras para especificar otros parámetros de las solicitudes de anuncio, el método networkExtrasClass
debe devolver la clase extras
.
Devuelve el valor Nil
si el evento personalizado no admite extras proporcionados por editores.
#import "GADMediationAdapterSampleAdNetwork.h"
@implementation GADMediationAdapterSampleAdNetwork
...
+ (nullable Class<GADAdNetworkExtras>)networkExtrasClass {
return Nil;
}
...
@end
Informar de los números de versión
Todos los eventos personalizados deben proporcionar al SDK de anuncios de Google para móviles su número de versión y el del SDK de terceros con el que interactúan. Las versiones se indican con GADVersionNumber
:
#import "GADMediationAdapterSampleAdNetwork.h"
@implementation GADMediationAdapterSampleAdNetwork
...
+ (GADVersionNumber)adSDKVersion {
NSString *versionString = @"1.0.0";
NSArray *versionComponents = [versionString componentsSeparatedByString:@"."];
GADVersionNumber version = {0};
if (versionComponents.count == 3) {
version.majorVersion = [versionComponents[0] integerValue];
version.minorVersion = [versionComponents[1] integerValue];
version.patchVersion = [versionComponents[2] integerValue];
}
return version;
}
+ (GADVersionNumber)version {
NSString *versionString = @"1.0.0.0";
NSArray *versionComponents = [versionString componentsSeparatedByString:@"."];
GADVersionNumber version = {0};
if (versionComponents.count == 4) {
version.majorVersion = [versionComponents[0] integerValue];
version.minorVersion = [versionComponents[1] integerValue];
// Adapter versions have 2 patch versions. Multiply the first patch by 100.
version.patchVersion = [versionComponents[2] integerValue] * 100
+ [versionComponents[3] integerValue];
}
return version;
}
...
@end
Solicitar un anuncio bonificado
Las solicitudes que hace tu aplicación para cargar anuncios bonificados invocan el método loadRewardedAdForAdConfiguration:completionHandler:
del evento personalizado.
Informa al SDK de anuncios de Google para móviles de las cargas de anuncio que se han realizado con éxito. Para ello, invoca el elemento completionHandler que se ha facilitado con una referencia al objeto que implementa GADMediationRewardedAd
. Esta invocación devuelve un objeto GADMediationRewardedAdEventDelegate
. Los eventos personalizados deben conservar la referencia a este objeto para informar al SDK de anuncios de Google para móviles de los eventos de ciclo de vida de los anuncios. Este proceso se describe detalladamente en la sección Mostrar anuncios.
Para informar de un error de carga, invoca el elemento completionHandler que se ha facilitado con un objeto NSError
.
A continuación se muestra un ejemplo de implementación de loadRewardedAdForAdConfiguration:completionHandler:
:
#import "GADMediationAdapterSampleAdNetwork.h"
@interface GADMediationAdapterSampleAdNetwork () <GADMediationRewardedAd> {
/// Reward-based video ads from Sample SDK.
SampleRewardBasedVideo *_rewardBasedVideoAd;
}
@property(nonatomic, weak, nullable) id<GADMediationRewardedAdEventDelegate> delegate;
@end
@implementation GADMediationAdapterSampleAdNetwork
...
- (void)loadRewardedAdForAdConfiguration:(GADMediationRewardedAdConfiguration *)adConfiguration
completionHandler:(GADRewardedLoadCompletionHandler)completionHandler {
// Look for the "parameter" key to fetch the parameter you defined in the AdMob UI.
NSString *adUnit = adConfiguration.credentials.settings[@"parameter"];
SampleAdRequest *request = [[SampleAdRequest alloc] init];
[SampleAdNetwork loadAdWithRequest:request
completionHandler:^(SampleRewardBasedVideo *ad ,NSError *error) {
if (error) {
completionHandler(nil, error);
return;
}
_rewardBasedVideoAd = ad;
self.delegate = completionHandler(self, nil);
}];
}
...
@end
Mostrar anuncios
Cuando la aplicación pide al SDK de anuncios de Google para móviles que muestre el anuncio bonificado, el SDK llama al método presentFromViewController:
en la instancia de GADMediationRewardedAd
. Implementa este método para mostrar el anuncio bonificado.
- (void)presentFromViewController:(nonnull UIViewController *)viewController {
if ([_rewardBasedVideoAd checkAdAvailability]) {
// The reward based video ad is available, present the ad.
[_rewardBasedVideoAd presentFromRootViewController:viewController];
} else {
NSError *error =
[NSError errorWithDomain:@"GADMediationAdapterSampleAdNetwork"
code:0
userInfo:@{NSLocalizedDescriptionKey : @"Unable to display ad."}];
[self.delegate didFailToPresentWithError:error];
}
}
Informar de los eventos de anuncio
Después de mostrar un anuncio, el evento personalizado debe informar al SDK de anuncios de Google para móviles sobre los eventos de ciclo de vida relacionados con dicho anuncio según corresponda, por medio del objeto GADMediationRewardedAdEventDelegate
que se proporciona cuando el anuncio se carga correctamente.
- (void)rewardBasedVideoAdDidOpen:(SampleRewardBasedVideo *)rewardBasedVideo {
[self.delegate willPresentFullScreenView];
[self.delegate reportImpression];
}
- (void)rewardBasedVideoAdDidStartPlaying:(SampleRewardBasedVideo *)rewardBasedVideo {
[self.delegate didStartVideo];
}
- (void)rewardBasedVideoAdDidStopPlaying:(SampleRewardBasedVideo *)rewardBasedVideo {
[self.delegate didEndVideo];
}
- (void)rewardBasedVideoAdDidClose:(SampleRewardBasedVideo *)rewardBasedVideo {
[self.delegate willDismissFullScreenView];
}
- (void)rewardBasedVideoAdDidReceiveAdClick:(SampleRewardBasedVideo *)rewardBasedVideo {
[self.delegate reportClick];
}
- (void)rewardedAd:(nonnull SampleRewardedAd *)rewardedAd userDidEarnReward:(NSUInteger)reward {
GADAdReward *aReward =
[[GADAdReward alloc] initWithRewardType:@""
rewardAmount:[NSDecimalNumber numberWithUnsignedInt:reward]];
[self.delegate didRewardUserWithReward:aReward];
}
}
Estos son los eventos de anuncio que deben comunicarse al SDK de anuncios de Google para móviles:
Evento de anuncio | Descripción |
---|---|
willPresentFullScreenView
|
Informa al SDK de anuncios de Google para móviles de que el anuncio se mostrará. |
didStartVideo
|
Informa al SDK de anuncios de Google para móviles de que el anuncio bonificado ha empezado a reproducirse. |
reportImpression
|
Informa al SDK de anuncios de Google para móviles de que se ha mostrado una impresión del anuncio. |
didEndVideo
|
Informa al SDK de anuncios de Google para móviles de que el anuncio bonificado ha terminado de reproducirse. |
didRewardUserWithReward
|
Informa al SDK de anuncios de Google para móviles de que el usuario ha obtenido una bonificación. |
reportClick
|
Informa al SDK de anuncios de Google para móviles de que se ha hecho clic en el anuncio. |
willDismissFullScreenView
|
Informa al SDK de anuncios de Google para móviles de que el anuncio se cerrará. |