Um adaptador de mediação recebe mensagens e solicitações do SDK dos anúncios para dispositivos móveis do Google e se comunica com um SDK de rede de terceiros para atender a essas solicitações.
Este guia é destinado a redes de publicidade que querem criar um adaptador de mediação de anúncios premiados para a mediação de anúncios para dispositivos móveis do Google. Um SDK de amostra é usado nos snippets de código abaixo para fins de demonstração. Confira uma implementação completa de um adaptador criado para este SDK de amostra no projeto de mediação doiOS (link em inglês). Este guia explica como criar o adaptador.
Definir o nome da classe do adaptador e os parâmetros do servidor
As redes de publicidade mediadas pela plataforma de Mediação da AdMob geralmente exigem um ou mais identificadores para identificar um editor. Eles são representados como parâmetros do servidor e definidos na configuração de uma rede de publicidade de terceiros para mediação na interface da AdMob.
Antes de desenvolver um adaptador de mediação, você precisa fornecer ao Google o nome da classe do adaptador e outros parâmetros necessários para ter acesso à sua rede de anúncios.
Conformidade com o protocolo GADMediationAdapter
A primeira etapa é fazer com que a classe do adaptador implemente o protocolo GADMediationAdapter
:
#import <Foundation/Foundation.h>
#import <GoogleMobileAds/GoogleMobileAds.h>
#import <SampleAdSDK/SampleAdSDK.h>
@interface GADMediationAdapterSampleAdNetwork : NSObject <GADMediationAdapter>
@end
Essa mudança garante que sua classe implemente vários métodos discutidos abaixo.
Denunciar classe extra
Se a rede de terceiros quiser permitir que os editores transmitam
outros parâmetros opcionais para uma solicitação de anúncio, a classe extras
vai precisar ser retornada do
método networkExtrasClass
. Retorne Nil
se o terceiro não oferecer suporte
aos extras fornecidos pelo editor.
#import <GoogleMobileAds/GoogleMobileAds.h>
@interface SampleExtras : NSObject<GADAdNetworkExtras>
/// Use this to indicate if debug mode is on for logging.
@property(nonatomic) BOOL debugLogging;
/// Use this to indicate whether to mute audio for video ads.
@property(nonatomic) BOOL muteAudio;
@end
#import "GADMediationAdapterSampleAdNetwork.h"
@implementation GADMediationAdapterSampleAdNetwork
...
+ (Class<GADAdNetworkExtras>)networkExtrasClass {
return [SampleExtras class];
}
...
@end
Informar números de versão
O adaptador precisa informar ao SDK dos anúncios para dispositivos móveis do Google a versão do adaptador e a do SDK de terceiros. As versões são informadas
usando GADVersionNumber
.
Os adaptadores de código aberto e com versões
do Google
usam um esquema de versão de adaptador de quatro dígitos, mas GADVersionNumber
permite apenas três dígitos. Para contornar esse problema, é recomendável combinar os
dois últimos dígitos na versão do patch, conforme mostrado abaixo:
#import "GADMediationAdapterSampleAdNetwork.h"
@implementation GADMediationAdapterSampleAdNetwork
...
+ (GADVersionNumber)adSDKVersion {
NSString *versionString = SampleSDKVersion;
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 = SampleAdapterVersion;
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
Inicializar o adaptador
Quando um app inicializa o SDK dos anúncios para dispositivos móveis do Google, o setUpWithConfiguration:completionHandler:
é invocado em todos os adaptadores configurados para o app na IU da AdMob.
O argumento GADMediationServerConfiguration
fornece informações sobre todas as posições configuradas para o app na IU da AdMob. Use essas informações para inicializar o SDK da rede de publicidade. Depois que o SDK da rede de publicidade for inicializado, invoque o argumento GADMediationAdapterSetUpCompletionBlock
. Esse bloqueio permite
informar uma inicialização bem-sucedida ou com falha ao SDK dos anúncios para dispositivos móveis do Google,
invocando o gerenciador de conclusão com nil
ou um objeto NSError
.
#import "SampleAdapter.h"
@implementation SampleAdapter
...
+ (void)setUpWithConfiguration:(GADMediationServerConfiguration *)configuration
completionHandler:(GADMediationAdapterSetUpCompletionBlock)completionHandler {
// Since the Sample SDK doesn't need to be initialized, the completion
//handler is called directly here.
completionHandler(nil);
}
...
@end
Solicitar um anúncio premiado
Quando um app carrega um anúncio premiado com o SDK dos anúncios para dispositivos móveis do Google, o loadRewardedAdForAdConfiguration:completionHandler:
é invocado no adaptador caso sua rede de publicidade seja alcançada na hierarquia de mediação.
Com o GADRewardedLoadCompletionHandler
, é possível informar um carregamento de anúncio bem-sucedido ao
SDK dos anúncios para dispositivos móveis do Google fornecendo uma referência a um objeto em conformidade com o
protocolo GADMediationRewardedAd
ou um carregamento de anúncio com falha fornecendo uma referência
nil
e um objeto NSError
. A invocação do gerenciador de conclusão do carregamento retorna um GADMediationRewardedAdEventDelegate
que o adaptador precisa manter para o ciclo de vida do anúncio para notificar o SDK dos anúncios para dispositivos móveis do Google sobre qualquer evento subsequente.
#import "SampleAdapter.h"
@interface SampleAdapter () <GADMediationRewardedAd> {
/// Rewarded ads from Sample SDK.
SampleRewardedAd *_rewardedAd;
/// Handles any callback when the sample rewarded ad finishes loading.
GADMediationRewardedLoadCompletionHandler _loadCompletionHandler;
/// Delegate for receiving rewarded ad notifications.
__weak id<GADMediationRewardedAdEventDelegate> _rewardedAdDelegate;
}
@end
@implementation SampleAdapter
...
- (void)loadRewardedAdForAdConfiguration:(GADMediationRewardedAdConfiguration *)adConfiguration
completionHandler:
(GADMediationRewardedLoadCompletionHandler)completionHandler {
_loadCompletionHandler = completionHandler;
NSString *adUnit = adConfiguration.credentials.settings[SampleSDKAdUnitIDKey];
SampleExtras *extras = adConfiguration.extras;
_rewardedAd = [[SampleRewardedAd alloc] initWithAdUnitID:adUnit];
_rewardedAd.enableDebugLogging = extras.enableDebugLogging;
/// Check the extras to see if the request should be customized.
SampleAdRequest *request = [[SampleAdRequest alloc] init];
request.mute = extras.muteAudio;
/// Set the delegate on the rewarded ad to listen for callbacks from the Sample SDK.
_rewardedAd.delegate = self;
[_rewardedAd fetchAd:request];
}
...
@end
Eventos de carregamento de anúncio de redirecionamento
É responsabilidade do adaptador ouvir callbacks do SDK de terceiros e mapeá-los para o callback apropriado do SDK dos anúncios para dispositivos móveis do Google.
Informe o sucesso ou a falha de eventos de carregamento de anúncio de terceiros invocando o
loadCompletionHandler
com um anúncio ou um erro. Se o gerenciador de conclusão for chamado com um anúncio e nenhum erro, um objeto delegado de evento de anúncio será retornado. Mantenha uma
referência a esse delegado para que o adaptador possa redirecionar eventos de apresentação
mais tarde.
- (void)rewardedAdDidReceiveAd:(nonnull SampleRewardedAd *)rewardedAd {
_rewardedAdDelegate = _loadCompletionHandler(self, nil);
}
- (void)rewardedAdDidFailToLoadWithError:(SampleErrorCode)errorCode {
_loadCompletionHandler(nil, [NSError errorWithDomain:kAdapterErrorDomain
code:GADErrorNoFill
userInfo:nil]);
}
Veicular o anúncio
Quando o app pede ao SDK dos anúncios para dispositivos móveis do Google para apresentar o anúncio premiado, o SDK
chama o método presentFromViewController:
na instância de
GADMediationRewardedAd
fornecida na chamada ao gerenciador de conclusão do carregamento. Aqui, você deve apresentar o anúncio premiado:
- (void)presentFromViewController:(nonnull UIViewController *)viewController {
if (!_rewardedAd.isReady) {
NSError *error =
[NSError errorWithDomain:kAdapterErrorDomain
code:0
userInfo:@{NSLocalizedDescriptionKey : @"Unable to display ad."}];
[_rewardedAdDelegate didFailToPresentWithError:error];
return;
}
[_rewardedAd presentFromRootViewController:viewController];
}
Informar eventos de anúncios ao SDK de anúncios para dispositivos móveis
Depois de exibir o anúncio, o adaptador deve informar os eventos de ciclo de vida da apresentação do anúncio usando o mesmo delegado de evento de anúncio retornado no tempo de carregamento do anúncio.
- (void)rewardedAdDidPresent:(nonnull SampleRewardedAd *)rewardedAd {
[_rewardedAdDelegate willPresentFullScreenView];
[_rewardedAdDelegate didStartVideo];
[_rewardedAdDelegate reportImpression];
}
- (void)rewardedAdDidDismiss:(nonnull SampleRewardedAd *)rewardedAd {
[_rewardedAdDelegate willDismissFullScreenView];
[_rewardedAdDelegate didEndVideo];
[_rewardedAdDelegate didDismissFullScreenView];
}
- (void)rewardedAd:(nonnull SampleRewardedAd *)rewardedAd userDidEarnReward:(NSUInteger)reward {
GADAdReward *aReward =
[[GADAdReward alloc] initWithRewardType:@"GADMediationAdapterSampleAdNetwork"
rewardAmount:[NSDecimalNumber numberWithUnsignedInt:reward]];
[_rewardedAdDelegate didRewardUserWithReward:aReward];
}
Os eventos de anúncios que precisam ser informados ao SDK dos anúncios para dispositivos móveis do Google estão detalhados abaixo:
Evento do anúncio | Descrição |
---|---|
willPresentFullScreenView | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o anúncio será exibido. |
didStartVideo | Notifica o SDK dos anúncios para dispositivos móveis do Google de que um anúncio premiado começou a ser reproduzido. |
reportImpression | Notifica o SDK dos anúncios para dispositivos móveis do Google de que ocorreu uma impressão no anúncio. |
didEndVideo | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o anúncio premiado terminou a reprodução. |
didRewardUserWithReward | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o usuário ganhou um prêmio. |
reportClick | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o anúncio recebeu um clique. |
willDismissFullScreenView | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o anúncio será dispensado. |
didDismissFullScreenView | Notifica o SDK dos anúncios para dispositivos móveis do Google de que o anúncio foi dispensado. |