Bu kılavuz, uyumlulaştırma bağdaştırıcısı oluşturmak isteyen reklam ağları için hazırlanmıştır. Yayıncıysanız yayıncı uyumlulaştırma talimatlarını inceleyin.
Uyumlulaştırma bağdaştırıcısı, reklam ağınız ile Google Mobil Reklamlar Uyumlulaştırması arasındaki iletişim katmanıdır. Bağdaştırıcılar, alakalı reklam etkinliklerini AdMob'a yönlendirirken reklam ağınızdan reklam yayınlar. Bağdaştırıcı, gerekli özellikleri sağladığından emin olmak için GADMAdNetworkAdapter
protokolünü uygulamaktan sorumludur.
Ön koşullar
- Xcode 15.3 veya üstü
- 8.0 veya daha yüksek dağıtım hedefi
- Google Mobile Ads iOS SDK'sını indirme işleminin Uyumlulaştırma Bağdaştırıcıları klasöründen ek başlıklar
Uyumlulaştırma bağdaştırıcısı oluşturmak için reklam ağınızın Google ile sağlam bir iş ilişkisine sahip olması gerekir.
Örnek Reklam Ağı
Bu kılavuzda, Örnek Reklam Ağı için bağdaştırıcının nasıl oluşturulacağı gösterilmektedir. Örnek Reklam Ağı SDK'sı, çoğu reklam ağının sunduğu sınıfları temsil eden sınıfları içerir:
@interface SampleBanner : UILabel
@property(nonatomic, copy) NSString *adUnit;
@property(nonatomic, weak) id<SampleBannerAdDelegate> delegate;
- (void)fetchAd:(SampleAdRequest *)request;
@end
typedef NS_ENUM(NSInteger, SampleErrorCode) {
SampleErrorCodeBadRequest = 0,
SampleErrorCodeUnknown = 1,
SampleErrorCodeNetworkError = 2,
SampleErrorCodeNoInventory = 3,
};
@interface SampleAdRequest : NSObject
@property(nonatomic, assign) BOOL testMode;
@property(nonatomic, copy) NSArray *keywords;
@end
@interface SampleInterstitial : NSObject
@property(nonatomic, copy) NSString *adUnit;
@property(nonatomic, weak) id<SampleInterstitialAdDelegate> delegate;
@property(nonatomic, assign, getter=isInterstitialLoaded) BOOL interstitialLoaded;
- (void)fetchAd:(SampleAdRequest *)request;
- (void)show;
@end
@protocol SampleBannerAdDelegate
- (void)bannerDidLoad:(SampleBanner *)banner;
- (void)banner:(SampleBanner *)banner didFailToLoadAdWithError:(SampleErrorCode)error;
- (void)bannerWillLeaveApplication:(SampleBanner *)banner;
@end
@protocol SampleInterstitialAdDelegate<NSObject>
- (void)interstitialDidLoad:(SampleInterstitial *)interstitial;
- (void)interstitial:(SampleInterstitial *)interstitial
didFailToLoadAdWithError:(SampleErrorCode)error;
- (void)interstitialWillPresentScreen:(SampleInterstitial *)interstitial;
- (void)interstitialWillDismissScreen:(SampleInterstitial *)interstitial;
- (void)interstitialDidDismissScreen:(SampleInterstitial *)interstitial;
- (void)interstitialWillLeaveApplication:(SampleInterstitial *)interstitial;
@end
Bu sınıflar hakkında daha fazla bilgi için tam örnek SDK uygulamasını inceleyin.
Bağlayıcı
Uyumlulaştırma bağdaştırıcıları, GADMAdNetworkConnector
protokolünü uygulayan bir nesne kullanarak Google Mobile Ads SDK'sı ile etkileşim kurar. Bundan sonra, bu nesneyi bağlayıcı
olarak adlandıracağız. Bağlayıcı, reklam istekleri için gerekli bilgileri açığa çıkarır ve reklam etkinlikleri ile kullanıcı etkileşimleri için uyumlulaştırmayı geri çağırma olanağı sunar. Bağlayıcı, başlatma sırasında uyumlulaştırma bağdaştırıcılarına sağlanır. Bağdaştırıcınızı, bağlayıcıyı bir örnek değişkeninde depolayacak şekilde ayarlayın:
- (id)initWithGADMAdNetworkConnector:(id<GADMAdNetworkConnector>)c {
if ((self = [super init])) {
_connector = c;
}
return self;
}
Sunucu parametreleri
Reklam ağınız, bir yayıncıyı tanımlamak için muhtemelen tanımlayıcılara ihtiyaç duyar. Örneğin, Örnek Reklam Ağı için bir reklam birimi gerekir. Bu gerekli sunucu parametreleri, bağdaştırıcıya credentials
yöntemi aracılığıyla sağlanır. Bu yöntem, NSDictionary
tanımlayıcı ve ilgili değerleri döndürür. Aşağıdaki kod satırı, bağlayıcıdan Örnek Reklam Ağı için ad_unit
adlı sunucu parametresini alır:
self.interstitialAd.adUnit = [[self.connector credentials] objectForKey:@"ad_unit"];
Uyumlulaştırma ağı kurulumu
Reklam ağları, ağları için gerekli sunucu parametrelerini AdMob'a bildirmelidir. Böylece AdMob, ağınızı kullanıcı arabiriminde yapılandırabilir.
Kullanıcı arabiriminde uyumlulaştırma için ağınızı etkinleştirirken, AdMob bağdaştırıcınızı örneklendirmek için gerekli değerleri girmenizi gerektirir. Aşağıdaki ekran görüntüsünde, Millennial Media için bir Uygulama Yerleşimi Tanımlayıcısı (APID) ve InMobi için bir Uygulama Kimliği gerekli olduğu gösterilmektedir.
Uyumlulaştırma reklam ağlarını yapılandırma hakkında daha fazla bilgi için bu makaleye göz atın.
Uyumlulaştırma reklam isteğinde bulunma
Banner isteği
Uyumlulaştırma banner istekleri için getBannerWithSize
yöntemi, bağdaştırıcı örneklendikten hemen sonra çağrılır. Bu yöntem hiçbir şey döndürmez. Ağ üzerinden eşzamansız bir reklam getirme işlemi başlatması için bağdaştırıcıya sinyal gönderir. Bağdaştırıcınızın SDK'nıza ilişkin geri çağırmaları dinlemesini sağlayın. SDK'nız belirtilen reklam boyutunu desteklemiyor veya banner reklamları desteklemiyorsa bağlayıcıda adapter:didFailAd:
yöntemini çağırın.
Örnek Reklam Ağı için getBannerWithSize
uygulaması şöyle görünür:
- (void)getBannerWithSize:(GADAdSize)adSize {
//The adapter should fail immediately if the adSize is not supported
if (!GADAdSizeEqualToSize(adSize, GADAdSizeBanner) &&
!GADAdSizeEqualToSize(adSize, GADAdSizeMediumRectangle) &&
!GADAdSizeEqualToSize(adSize, GADAdSizeFullBanner) &&
!GADAdSizeEqualToSize(adSize, GADAdSizeLeaderboard)) {
NSString *errorDesc =
[NSString stringWithFormat:@"Invalid ad type %@, not going to get ad.",
NSStringFromGADAdSize(adSize)];
NSDictionary *errorInfo = [NSDictionary
dictionaryWithObjectsAndKeys:errorDesc, NSLocalizedDescriptionKey, nil];
NSError *error = [NSError errorWithDomain:GADErrorDomain
code:GADErrorMediationInvalidAdSize
userInfo:errorInfo];
[self.connector adapter:self didFailAd:error];
return;
}
self.bannerAd = [[SampleBanner alloc]
initWithFrame:CGRectMake(0, 0, adSize.size.width, adSize.size.height)];
self.bannerAd.delegate = self;
self.bannerAd.adUnit = [[self.connector credentials] objectForKey:@"ad_unit"];
// Setup request parameters.
SampleAdRequest *request = [[SampleAdRequest alloc] init];
request.testMode = self.connector.testMode;
request.keywords = self.connector.userKeywords;
[self.bannerAd fetchAd:request];
NSLog(@"Requesting banner from Sample Ad Network");
}
Ek hedefleme parametreleri
Bağlayıcı, reklam hedefleme için başvurabileceğiniz bazı yaygın hedefleme bilgilerini içerir:
userKeywords
testMode
childDirectedTreatment
Uyumlulaştırma ekstraları
Uyumlulaştırma ekstraları, reklam ağınızın, bağlayıcı tarafından sağlanan ek istek parametreleri tarafından kapsanmayan ek hedefleme parametrelerini veya girişleri desteklemesine olanak tanır. Bu işlev, GADAdNetworkExtras
protokolünü uygulayan bir sınıf aracılığıyla sağlanabilir. Aşağıda örnek olarak SampleAdNetworkExtras
sınıfı gösterilmektedir:
@interface SampleAdNetworkExtras : NSObject <GADAdNetworkExtras>
/// Should ad volume audio be muted.
@property(nonatomic, assign) BOOL muteAudio;
@end
Yayıncılar, reklam isteği yaparken GADAdNetworkExtras
alt sınıfınızın bir örneğini iletmelidir. GADAdNetworkExtras
alt sınıfınızın bu örneğine bağlayıcı üzerinden erişilebilir. Aşağıda, ağınız için bir reklam isteği oluştururken uyumlulaştırma ek özelliklerini nasıl kullanabileceğiniz açıklanmıştır:
SampleAdRequest *request = [[SampleAdRequest alloc] init];
SampleAdNetworkExtras *myAdNetworkExtras = [self.connector networkExtras];
request.muteAudio = myAdNetworkExtras.muteAudio;
[self.bannerAd fetchAd:request];
GADAdNetworkExtras
alt sınıfınıza bağlayıcı üzerinden erişilebilmesini sağlamak için networkExtrasClass
politikasını uygulayın ve GADAdNetworkExtras
alt sınıfınızı döndürün:
+ (Class<GADAdNetworkExtras>)networkExtrasClass {
return [SampleAdNetworkExtras class];
}
Bağdaştırıcınız uyumlulaştırma ekstralarını kullanmıyorsa networkExtrasClass
yöntemi Nil
değerini döndürür.
Uyumlulaştırma bildirimi
Bağdaştırıcınızın, ağınız için reklam işleyiciyi uygulamasını ve ilgili reklam etkinliği geri çağırmalarını bağlayıcı üzerinden yönlendirmesini sağlayın. Aşağıdaki tabloda, her bir yetkilendirme yönteminin ne zaman çağrılacağı açıklanmaktadır:
Yöntem | Arama zamanı |
---|---|
adapter:didReceiveAdView: |
Banner isteği başarılı oldu. |
adapter:didFailAd: |
Banner isteği başarısız oldu. |
adapterDidGetAdClick: |
Banner tıklandı. |
adapterWillPresentFullScreenModal: |
Banner'da uygulama içi yer paylaşımı gösterilir. |
adapterWillDismissFullScreenModal: |
Uygulama içi yer paylaşımı kapatılacak. |
adapterDidDismissFullScreenModal: |
Uygulama içi yer paylaşımı kapatıldı. |
adapterWillLeaveApplication: |
Uygulama, kullanıcı başka bir uygulamayı başlatacak bir reklamı tıkladığı için arka plana yerleştirilir veya sonlandırılır. |
Aşağıdaki örnekte, hata ve durum mesajlarını yönlendirmek için Örnek Reklam Ağı'ndan SampleBannerAdDelegate
arayüzü uygulanmaktadır:
- (void)bannerDidLoad:(SampleBanner *)banner {
[self.connector adapter:self didReceiveAdView:banner];
}
- (void)banner:(SampleBanner *)banner didFailWithError:(SampleErrorCode)error {
[self.connector adapter:self
didFailAd:[NSError errorWithDomain:@"Ad request failed"
code:error
userInfo:nil]];
}
- (void)bannerWillLeaveApplication:(SampleBanner *)banner {
[self.connector adapterDidGetAdClick:self];
[self.connector adapterWillLeaveApplication:self];
}
Uygulama içi yer paylaşımı veya harici uygulama başlatma
Bir banner tıklandığında, reklam tam ekran yer paylaşımı veya harici bir uygulama (Safari veya uygulama mağazası gibi) açabilir. Bu iki durumda çağrılacak bağlayıcı geri çağırma işlemleri farklıdır.
Bir banner tıklaması tam ekran yer paylaşımı açarsa yer paylaşımını gösterirken
adapterWillPresentFullScreenModal:
numaralı telefonu çağırın. Yer paylaşımı kapatıldığında hem adapterWillDismissFullScreenModal:
hem de adapterDidDismissFullScreenModal:
yöntemini çağırın.
Bir banner tıklaması (veya tam ekran yer paylaşımı tıklaması) kullanıcının uygulamadan ayrılmasına neden olursa adapterWillLeaveApplication:
geri çağırmasını çağırın.
Artık banner'lar için çalışan bir uyumlulaştırma bağdaştırıcınız vardır. Referans olması açısından, SampleAdapter
öğesinin tam olarak uygulanması GitHub'da bulunabilir.
Geçiş reklamı bağdaştırıcısı uygulama
Geçiş reklamları için bağdaştırıcı uygulaması banner reklamlara benzer. getInterstitial
yöntemi, bağdaştırıcı başlatıldıktan hemen sonra çağrılır. Bu yöntem hiçbir şey döndürmez. Bağdaştırıcının ağ üzerinden eşzamansız bir reklam getirmesi başlatması beklenir. Bağdaştırıcınızın, geri çağırmaları dinlemek için SDK'nıza temsilci olarak davranmasını sağlayın. SDK'nız geçiş reklamlarını desteklemiyorsa bağlayıcının adapter:didFailAd:
yöntemini aşağıdaki gibi çağırın:
- (void)getInterstitial {
self.interstitialAd = [[SampleInterstitial alloc] init];
self.interstitialAd.delegate = self;
self.interstitialAd.adUnit =
[[self.connector credentials] objectForKey:@"ad_unit"];
SampleAdRequest *request = [[SampleAdRequest alloc] init];
// Setup request parameters.
request.testMode = self.connector.testMode;
request.keywords = self.connector.userKeywords;
[self.interstitialAd fetchAd:request];
NSLog(@"Requesting interstitial from Sample Ad Network");
}
MediationBannerAdapter
'da olduğu gibi, bağlayıcıdan yayıncı kimliği ve reklam hedefleme bilgileri alabilirsiniz.
Uyumlulaştırma bildirimi
Bağdaştırıcınızın, ağınız için reklam yetkisini uygulamasını ve ilgili reklam etkinliği geri çağırmalarını bağlayıcı üzerinden yönlendirmesini sağlayın. Aşağıdaki tabloda, her bir yetkilendirme yönteminin ne zaman çağrılacağı açıklanmaktadır:
Yöntem | Arama zamanı |
---|---|
adapterDidReceiveInterstitial: |
Geçiş reklamı isteği başarılı oldu. |
adapter:didFailInterstitial: |
Geçiş reklamı isteği başarısız oldu. |
adapterDidGetAdClick: |
Geçiş reklamı tıklandı. |
adapterWillPresentInterstitial: |
Geçiş reklamı gösterilir. |
adapterWillDismissInterstitial: |
Geçiş reklamı kapatılır. |
adapterDidDismissInterstitial: |
Geçiş reklamı kapatıldı. |
adapterWillLeaveApplication: |
Kullanıcı başka bir uygulamayı başlatacak bir reklamı tıkladığı için uygulama arka plana alınır veya sonlandırılır. |
Aşağıdaki örnekte, hata ve durum mesajlarını yönlendirmek için Örnek Reklam Ağı'nın SampleInterstitialAdDelegate
arayüzü kullanılmaktadır:
- (void)interstitialDidLoad:(SampleInterstitial *)interstitial {
[self.connector adapterDidReceiveInterstitial:self];
}
- (void)interstitial:(SampleInterstitial *)interstitial
didFailWithError:(SampleErrorCode)error {
[self.connector adapter:self
didFailInterstitial:[NSError errorWithDomain:@"Ad request failed"
code:error
userInfo:nil]];
}
- (void)interstitialWillPresentScreen:(SampleInterstitial *)interstitial {
[self.connector adapterWillPresentInterstitial:self];
}
- (void)interstitialWillDismissScreen:(SampleInterstitial *)interstitial {
[self.connector adapterWillDismissInterstitial:self];
}
- (void)interstitialDidDismissScreen:(SampleInterstitial *)interstitial {
[self.connector adapterDidDismissInterstitial:self];
}
Geçiş reklamı sunma
Bağdaştırıcı adapterDidReceiveInterstitial
işlevini çağırdıktan sonra, presentInterstitialFromRootViewController
çağrılana kadar geçiş reklamının gösterilmesini bekleyin. Uygulama geliştirici, geçiş reklamının ne zaman gösterileceğine karar verir. Bu, geçişin alınmasından birkaç dakika sonra olabilir.
Aşağıda, Örnek Reklam Ağı için presentInterstitialFromRootViewController:
uygulaması gösterilmektedir:
- (void)presentInterstitialFromRootViewController:
(UIViewController *)rootViewController {
if ([self.interstitialAd isLoaded]) {
[self.interstitialAd show];
}
}
Uyumlulaştırma bağdaştırıcınız geçiş reklamlarını işlemeye hazır. Referans olması için SampleAdapter
öğesinin eksiksiz uygulamasını GitHub'da bulabilirsiniz.
SSS
- Bağdaştırıcıyı SDK kitaplığımın bir parçası olarak mı yoksa ayrı bir kitaplık olarak mı eklemeliyim?
- Bağdaştırıcıyı SDK kitaplığınızın bir parçası olarak eklemenizi öneririz. Böylece geliştiriciler, ağınızı dahil etmek için yalnızca bir kitaplığa başvurmak zorunda kalır.
- Adaptörüm yalnızca banner reklamları destekliyorsa ne yapmalıyım?
Bağdaştırıcınız yalnızca banner'ları destekliyorsa geçiş reklamı istekleri için uyumlulaştırmaya bir hata olayı yönlendirmesini sağlayın:
- (void)getInterstitial { NSDictionary *errorInfo = @{ NSLocalizedDescriptionKey : @"Some error" }; NSError *error = [NSError errorWithDomain:GADErrorDomain code:GADErrorInvalidRequest userInfo:errorInfo]; [self.connector adapter:self didFailInterstitial:error]; return; }
- Adaptörüm yalnızca geçiş reklamlarını destekliyorsa ne yapmalıyım?
Bağdaştırıcınız yalnızca geçiş reklamlarını destekliyorsa banner istekleri için uyumlulaştırmaya bir hata olayı yönlendirmesini sağlayın:
- (void)getBannerWithSize:(GADAdSize)adSize { NSDictionary *errorInfo = @{ NSLocalizedDescriptionKey : @"Some error" }; NSError *error = [NSError errorWithDomain:GADErrorDomain code:GADErrorInvalidRequest userInfo:errorInfo]; [self.connector adapter:self didFailAd:error]; return; }