Ein Vermittlungsadapter empfängt Nachrichten und Anfragen vom Google Mobile Ads SDK und kommuniziert mit dem SDK eines Drittanbieter-Werbenetzwerks, um diese Anfragen zu verarbeiten.
Dieser Leitfaden richtet sich an Werbenetzwerke, die einen Adapter für Anzeigen mit Prämie für die Google-Vermittlung für mobile Anzeigen erstellen möchten. Zu Demonstrationszwecken wird in den Code-Snippets unten ein Beispiel-SDK verwendet. Eine vollständige Implementierung eines Adapters, der für dieses Beispiel-SDK erstellt wurde, finden Sie in unserem iOS-Vermittlungsprojekt. In dieser Anleitung wird erläutert, wie Sie den Adapter erstellen.
Name der Adapterklasse und Serverparameter definieren
Werbenetzwerke, die über die AdMob-Vermittlungsplattform vermittelt werden, benötigen in der Regel eine oder mehrere Kennungen, um einen Publisher zu identifizieren. Diese Kennungen werden als Serverparameter dargestellt und definiert, wenn ein Drittanbieter-Werbenetzwerk für die Vermittlung in der AdMob-UI konfiguriert wird.
Bevor Sie einen Vermittlungsadapter entwickeln, müssen Sie Google den Namen Ihrer Adapterklasse und andere erforderliche Parameter mitteilen, um Zugriff auf Ihr Werbenetzwerk zu erhalten.
Entspricht dem GADMediationAdapter-Protokoll
Als Erstes muss Ihre Adapterklasse das GADMediationAdapter
-Protokoll implementieren:
#import <Foundation/Foundation.h>
#import <GoogleMobileAds/GoogleMobileAds.h>
#import <SampleAdSDK/SampleAdSDK.h>
@interface GADMediationAdapterSampleAdNetwork : NSObject <GADMediationAdapter>
@end
Diese Änderung stellt sicher, dass Ihre Klasse mehrere der unten beschriebenen Methoden implementiert.
Extras-Klasse melden
Wenn das Drittanbieternetzwerk Publishern erlauben möchte, zusätzliche optionale Parameter für eine Anzeigenanfrage zu übergeben, muss die extras
-Klasse von der networkExtrasClass
-Methode zurückgegeben werden. Gibt Nil
zurück, wenn der Drittanbieter die vom Publisher bereitgestellten Extras nicht unterstützt.
#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
Versionsnummern von Berichten
Der Adapter muss sowohl die Version des Adapters als auch die Version des Drittanbieter-SDK an das Google Mobile Ads SDK senden. Versionen werden mit GADVersionNumber
gemeldet.
Die Open-Source- und versionierten Adapter von Google verwenden ein vierstelliges Adapterversionsschema, GADVersionNumber
unterstützt jedoch nur drei Ziffern. Zur Umgehung dieses Problems empfiehlt es sich, die letzten beiden Ziffern wie unten dargestellt in der Patchversion zu kombinieren:
#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
Adapter initialisieren
Wenn eine App das Google Mobile Ads SDK initialisiert, wird setUpWithConfiguration:completionHandler:
für alle Adapter aufgerufen, die in der AdMob-Benutzeroberfläche für die App konfiguriert wurden.
Das Argument GADMediationServerConfiguration
liefert Informationen zu allen Placements, die in der AdMob-Benutzeroberfläche für die App konfiguriert wurden. Verwenden Sie diese Informationen, um Ihr Werbenetzwerk-SDK zu initialisieren. Sobald das Werbenetzwerk-SDK initialisiert ist, rufen Sie das Argument GADMediationAdapterSetUpCompletionBlock
auf. Mit diesem Block können Sie eine erfolgreiche oder fehlgeschlagene Initialisierung an das Google Mobile Ads SDK melden. Dazu rufen Sie den Abschluss-Handler mit nil
oder einem NSError
-Objekt auf.
#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
Anzeige mit Prämie anfordern
Wenn eine App eine Anzeige mit Prämie mit dem Google Mobile Ads SDK lädt, wird loadRewardedAdForAdConfiguration:completionHandler:
über den Adapter aufgerufen, sofern Ihr Werbenetzwerk in der Vermittlungsabfolge erreicht wird.
Mit GADRewardedLoadCompletionHandler
können Sie ein erfolgreiches Laden der Anzeige an das Google Mobile Ads SDK melden, indem Sie einen Verweis auf ein Objekt angeben, das dem GADMediationRewardedAd
-Protokoll entspricht, oder ein Fehler beim Laden der Anzeige, indem Sie eine nil
-Referenz und ein NSError
-Objekt angeben. Durch den Aufruf des Handlers für den Ladeabschluss wird ein GADMediationRewardedAdEventDelegate
zurückgegeben, das der Adapter für den gesamten Lebenszyklus der Anzeige beibehalten sollte, um das Google Mobile Ads SDK über nachfolgende Ereignisse zu informieren.
#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
Ladeereignisse für Anzeigen weiterleiten
Es liegt in der Verantwortung des Adapters, auf Drittanbieter-SDK-Callbacks zu warten und sie dem entsprechenden Google Mobile Ads SDK-Callback zuzuordnen.
Wenn Sie den Erfolg oder Misserfolg von Anzeigenladeereignissen von Drittanbietern melden möchten, rufen Sie loadCompletionHandler
mit einer Anzeige oder einem Fehler auf. Wenn der Abschluss-Handler mit einer Anzeige und ohne Fehler aufgerufen wird, wird ein Delegatobjekt für das Anzeigenereignis zurückgegeben. Verweisen Sie auf diesen Delegat, damit Ihr Adapter später Präsentationsereignisse weiterleiten kann.
- (void)rewardedAdDidReceiveAd:(nonnull SampleRewardedAd *)rewardedAd {
_rewardedAdDelegate = _loadCompletionHandler(self, nil);
}
- (void)rewardedAdDidFailToLoadWithError:(SampleErrorCode)errorCode {
_loadCompletionHandler(nil, [NSError errorWithDomain:kAdapterErrorDomain
code:GADErrorNoFill
userInfo:nil]);
}
Anzeige einblenden
Wenn die App das Google Mobile Ads SDK auffordert, die Anzeige mit Prämie zu präsentieren, ruft das SDK die Methode presentFromViewController:
für die Instanz von GADMediationRewardedAd
auf, die im Aufruf an den Handler für den Ladeabschluss enthalten ist. Hier sollten Sie die Anzeige mit Prämie präsentieren:
- (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];
}
Anzeigenereignisse an das Mobile Ads SDK melden
Nach der Auslieferung der Anzeige sollte über den Adapter der Lebenszyklus der Anzeigenpräsentation mit demselben Delegaten gemeldet werden, der bei erfolgreicher Ladezeit zurückgegeben wird.
- (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];
}
Im Folgenden sind die Anzeigenereignisse aufgeführt, die an das Google Mobile Ads SDK gemeldet werden sollten:
Anzeigenereignis | Beschreibung |
---|---|
willPresentFullScreenView | Informiert das Google Mobile Ads SDK darüber, dass die Anzeige ausgeliefert wird. |
didStartVideo | Informiert das Google Mobile Ads SDK darüber, dass die Wiedergabe einer Anzeige mit Prämie gestartet wurde. |
reportImpression | Informiert das Google Mobile Ads SDK darüber, dass eine Impression bei der Anzeige aufgetreten ist. |
didEndVideo | Informiert das Google Mobile Ads SDK darüber, dass die Anzeige mit Prämie vollständig wiedergegeben wurde. |
didRewardUserWithReward | Informiert das Google Mobile Ads SDK darüber, dass der Nutzer eine Prämie erhalten hat. |
reportClick | Informiert das Google Mobile Ads SDK darüber, dass auf die Anzeige geklickt wurde |
willDismissFullScreenView | Informiert das Google Mobile Ads SDK darüber, dass die Anzeige geschlossen wird. |
didDismissFullScreenView | Informiert das Google Mobile Ads SDK darüber, dass die Anzeige geschlossen wurde |