Uyumlulaştırma bağdaştırıcısı, Google Mobile Ads SDK'sından mesajları ve istekleri alır ve bu istekleri karşılamak için üçüncü taraf ağ SDK'sı ile iletişim kurar.
Bu kılavuz, Google Mobil Reklam Uyumlulaştırması için ödüllü reklam uyumlulaştırma bağdaştırıcısı oluşturmak isteyen reklam ağları için hazırlanmıştır. Aşağıdaki kod snippet'lerinde gösterim amacıyla bir Örnek SDK kullanılmıştır. Bu örnek SDK için derlenen bir bağdaştırıcının eksiksiz bir uygulamasını iOS Uyumlulaştırma projemizde bulabilirsiniz. Bu kılavuzda, adaptörün nasıl oluşturulacağı açıklanmaktadır.
Bağdaştırıcı sınıfı adını ve sunucu parametrelerini tanımlayın
AdMob uyumlulaştırma platformu aracılığıyla uyumlulaştırılan reklam ağları, bir yayıncıyı tanımlamak için genellikle bir veya daha fazla tanımlayıcıya ihtiyaç duyar. Bu tanımlayıcılar sunucu parametreleri olarak temsil edilir ve AdMob kullanıcı arayüzünde uyumlulaştırma için üçüncü taraf reklam ağı yapılandırılırken tanımlanır.
Bir uyumlulaştırma bağdaştırıcısı geliştirmeden önce, reklam ağınıza erişmek için bağdaştırıcı sınıfı adınızı ve diğer gerekli parametreleri Google'a sağlamanız gerekir.
GADMediationAdapter protokolüyle uyumlu
İlk adım, bağdaştırıcı sınıfınızın GADMediationAdapter
protokolünü uygulamasını sağlamaktır:
#import <Foundation/Foundation.h>
#import <GoogleMobileAds/GoogleMobileAds.h>
#import <SampleAdSDK/SampleAdSDK.h>
@interface GADMediationAdapterSampleAdNetwork : NSObject <GADMediationAdapter>
@end
Bu değişiklik, sınıfınızın aşağıda açıklanan çeşitli yöntemleri uygulamasını sağlar.
Ekstra sınıfı bildir
Üçüncü taraf ağ, yayıncıların bir reklam isteği için isteğe bağlı ek parametreler iletmesine izin vermek isterse networkExtrasClass
yönteminden extras
sınıfı döndürülmelidir. Üçüncü taraf, yayıncı tarafından sağlanan ekstra öğeleri desteklemiyorsa Nil
değerini döndürür.
#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
Rapor sürüm numaraları
Bağdaştırıcı, Google Mobile Ads SDK'sına hem bağdaştırıcının hem de üçüncü taraf SDK'nın sürümünü bildirmelidir. Sürümler GADVersionNumber
kullanılarak raporlanır.
Google'ın açık kaynak ve sürümlü bağdaştırıcıları, 4 haneli bir bağdaştırıcı sürümü şeması kullanır ancak GADVersionNumber
yalnızca 3 haneli değerlere izin verir. Bu sorunu çözmek için son iki basamağı aşağıda gösterildiği gibi yama sürümünde birleştirmeniz önerilir:
#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
Adaptörü başlatma
Bir uygulama Google Mobile Ads SDK'sını başlattığında, AdMob kullanıcı arayüzünde uygulama için yapılandırılmış tüm bağdaştırıcılarda setUpWithConfiguration:completionHandler:
çağrılır.
GADMediationServerConfiguration
bağımsız değişkeni, AdMob kullanıcı arayüzünde uygulama için yapılandırılmış tüm yerleşimler hakkında bilgi sağlar. Bu bilgileri kullanarak reklam ağı SDK'nızı başlatın. Reklam ağı SDK'nız başlatıldıktan sonra GADMediationAdapterSetUpCompletionBlock
bağımsız değişkenini çağırın. Bu blok, tamamlama işleyicisini nil
veya bir NSError
nesnesiyle çağırarak Google Mobile Ads SDK'sına başarılı ya da başarısız bir başlatma bildirebilir.
#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
Ödüllü reklam isteme
Bir uygulama Google Mobile Ads SDK'sı ile ödüllü reklam yüklediğinde, reklam ağınıza uyumlulaştırma şelalesinde ulaşılırsa bağdaştırıcıda loadRewardedAdForAdConfiguration:completionHandler:
çağrılır.
GADRewardedLoadCompletionHandler
, GADMediationRewardedAd
protokolüne uygun bir nesneye referans sağlayarak veya bir nil
referansı ve NSError
nesnesi sağlayarak başarısız bir reklam yüklemesi sağlayarak Google Mobile Ads SDK'sına başarılı bir reklam yüklemesi raporlamanızı sağlar. Yükleme tamamlama işleyicisinin çağrılması, bağdaştırıcınızın sonraki herhangi bir etkinliği Google Mobile Ads SDK'sına bildirmek için reklamın yaşam döngüsü boyunca tutması gereken bir GADMediationRewardedAdEventDelegate
döndürür.
#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
Reklam yükleme etkinliklerini aktarma
Üçüncü taraf SDK geri çağırmalarını dinlemek ve bunları uygun Google Mobile Ads SDK geri çağırmasıyla eşlemek bağdaştırıcının sorumluluğundadır.
loadCompletionHandler
öğesini bir reklam veya hatayla çağırarak üçüncü taraf reklam yükleme etkinliklerinin başarılı veya başarısız olduğunu bildirin. Tamamlama işleyicisi bir reklamla çağrılırsa ve hata yoksa bir reklam etkinliği yetki nesnesi döndürülür. Bağdaştırıcınızın daha sonra sunu etkinliklerini iletebilmesi için bu yetki verilmiş kullanıcıya bir referans verin.
- (void)rewardedAdDidReceiveAd:(nonnull SampleRewardedAd *)rewardedAd {
_rewardedAdDelegate = _loadCompletionHandler(self, nil);
}
- (void)rewardedAdDidFailToLoadWithError:(SampleErrorCode)errorCode {
_loadCompletionHandler(nil, [NSError errorWithDomain:kAdapterErrorDomain
code:GADErrorNoFill
userInfo:nil]);
}
Reklamı göster
Uygulama Google Mobile Ads SDK'sından ödüllü reklamı sunmasını istediğinde SDK, yükleme tamamlama işleyicisine yapılan çağrıda sağlanan GADMediationRewardedAd
örneğinde presentFromViewController:
yöntemini çağırır. Burada ödüllü reklamı sunmanız gerekir:
- (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];
}
Reklam etkinliklerini Mobile Ads SDK'sına bildirme
Bağdaştırıcı, reklamı görüntüledikten sonra başarılı reklam yükleme zamanında döndürülen reklam etkinliği temsilcisini kullanarak reklam sunumu yaşam döngüsü olaylarını raporlamalıdır.
- (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];
}
Google Mobile Ads SDK'sına bildirilmesi gereken reklam etkinlikleri aşağıda açıklanmıştır:
Reklam etkinliği | Açıklama |
---|---|
willPresentFullScreenView | Google Mobile Ads SDK'sına reklamın görüntüleneceğini bildirir. |
didStartVideo | Google Mobile Ads SDK'sına bir ödüllü reklamın oynatılmaya başladığını bildirir. |
reportImpression | Google Mobile Ads SDK'sına reklamda bir gösterim oluştuğunu bildirir. |
didEndVideo | Google Mobile Ads SDK'sına ödüllü reklamın oynatıldığını bildirir. |
didRewardUserWithReward | Google Mobile Ads SDK'sına kullanıcının ödül kazandığını bildirir. |
reportClick | Google Mobile Ads SDK'sına reklamın tıklandığını bildirir. |
willDismissFullScreenView | Google Mobile Ads SDK'sına reklamın kapatılacağını bildirir. |
didDismissFullScreenView | Google Mobile Ads SDK'sına reklamın kapatıldığını bildirir. |