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ırması talimatlarını inceleyin.
Reklam ağı 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ı, banner reklamları desteklemek için MediationBannerAdapter
, geçiş reklamlarını desteklemek için MediationInterstitialAdapter
uygulanmasından sorumludur. Ayrıca, bu etkinlikler hakkında Google Mobile Ads Uyumlulaştırması'na bilgi vermek için uygun zamanlarda MediationBannerListener
ve MediationInterstitialListener
arasındaki geri çağırmaları da çağırması gerekir. Bu süreç, geliştiriciye de iletilebilir.
Ö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ğı, çoğu reklam ağının sunduğu sınıfları temsil eden aşağıdaki sınıfları içerir:
class SampleAdView {
public SampleAdView(Context context);
public void setSize(SampleAdSize size);
public void setAdUnit(String sampleAdUnit);
public void setAdListener(SampleAdListener listener);
public void fetchAd(SampleAdRequest request);
public void destroy();
}
class SampleAdSize {
public SampleAdSize(int width, int height);
public int getWidth();
public int getHeight();
}
class SampleAdRequest {
public SampleAdRequest();
public void setKeywords(Set<String> keywords);
public void setTestMode(boolean useTesting);
}
class SampleAdListener {
public void onAdFetchSucceeded();
public void onAdFetchFailed(SampleErrorCode code);
public void onAdFullScreen();
public void onAdClosed();
}
enum SampleErrorCode {
UNKNOWN,
BAD_REQUEST,
NETWORK_ERROR,
NO_INVENTORY
}
class SampleInterstitial {
public SampleInterstitial(Context context);
public void setAdUnit(String sampleAdUnit);
public void setAdListener(SampleAdListener listener);
public void fetchAd(SampleAdRequest request);
public void show();
public void destroy();
}
Bu sınıflar hakkında daha fazla bilgi için eksiksiz SDK uygulamasını inceleyin.
Banner bağdaştırıcısı uygulama
Banner reklamları destekleyen bir bağdaştırıcı uygulamak için MediationBannerAdapter
uygulamasının kullanıldığı bir sınıf oluşturun.
public class SampleAdapter implements MediationBannerAdapter {
@Override
public void requestBannerAd(
Context context,
MediationBannerListener listener,
Bundle serverParameters,
AdSize adSize,
MediationAdRequest mediationAdRequest,
Bundle mediationExtras) {}
@Override
public View getBannerView() {}
@Override
public void onDestroy() {}
@Override
public void onPause() {}
@Override
public void onResume() {}
}
MediationBannerAdapter
uygulamaya geçmeden önce sunucu parametrelerini, uyumlulaştırma ekstralarını ve bu değerlerin bağdaştırıcıya nasıl iletildiğini tartışalım.
Sunucu parametreleri
Reklam ağınızda bir yayıncıyı tanımlamak için muhtemelen bazı tanımlayıcılar
gerekir. Örneğin, Örnek reklam ağı için yalnızca bir reklam birimi gerekir. Bu gerekli parametreler, requestBannerAd()
içindeki serverParameters
paketinde sağlanır.
Geliştirme sırasında, paketin ihtiyacınız olan anahtarlarla zaten doldurulacağını varsayabilirsiniz:
private static final String SAMPLE_AD_UNIT_KEY = "ad_unit";
@Override
public void requestBannerAd(
Context context,
MediationBannerListener listener,
Bundle serverParameters,
AdSize adSize,
MediationAdRequest mediationAdRequest,
Bundle mediationExtras) {
String adUnit = serverParameters.getString(SAMPLE_AD_UNIT_KEY);
...
}
AdMob size, reklam istemek ve yayınlamak için yayıncıdan hangi sunucu parametrelerine ihtiyacınız olduğunu soran bir anket gönderecektir. AdMob, AdMob kullanıcı arayüzünde ağınızı yapılandırmak için bu girişi kullanır. Aşağıdaki ekran görüntüsünde, Millennial Media için APID'nin, InMobi için Uygulama Kimliği'nin gerekli olduğu gösterilmektedir.
AdMob, bağdaştırıcınızı başlatırken serverParameters
paketini doldurmak için bu bilgileri kullanır.
Yayıncıların uyumlulaştırma reklam ağlarını nasıl yapılandıracağı hakkında daha fazla bilgi için bu makaleye bakın.
Ek hedefleme parametreleri
MediationAdRequest
, reklam hedefleme için kullanabileceğiniz bazı yaygın hedefleme bilgilerini içerir. Örneğin:
Uyumlulaştırma ekstraları
Reklam ağınız MediationAdRequest
tarafından sağlanmayan hedefleme bilgilerini destekliyorsa uygulama geliştiriciler
özel olarak ağınıza bir mediationExtras
paketi iletebilir.
Uyumlulaştırma, uyumlulaştırma ekstralarının nasıl iletileceğine dair bir örnek sunar.
Geliştiricilerin bu bilgileri isteğe bağlı olarak iletmesini kolaylaştırmak için bağdaştırıcınızda bir paket oluşturucu sınıfı sağlayabilirsiniz. Ağınızın gelir değerinin iletilmesini desteklediğini varsayalım. Bağdaştırıcınıza geliri belirleyen bir oluşturucu sınıfı ekleyebilirsiniz:
public static final class BundleBuilder {
private int income;
public BundleBuilder setIncome(int income) {
this.income = income;
return this;
}
public Bundle build() {
Bundle bundle = new Bundle();
bundle.putInt("income", income);
return bundle;
}
}
Bu sınıf, geliştiricinin ağınız için paket oluşturması için temiz bir API sağlar:
Bundle sampleAdapterBundle =
new SampleAdapter.BundleBuilder().setIncome(100000).build();
requestBannerAd()
Sunucu parametreleri ve uyumlulaştırma ekstralarıyla ilgili bilgi sahibi olduğunuza göre, bunları kullanarak bir MediationBannerAdapter
oluşturabiliriz.
requestBannerAd()
yöntemi, bağdaştırıcı örneklendikten hemen sonra çağrılır. Buradan reklam görünümünüzü oluşturmanız ve banner reklam isteğinde bulunmanız gerekir.
Örnek reklam ağı için requestBannerAd()
uygulaması aşağıdaki gibi görünür:
public class SampleAdMobAdapter implements MediationBannerAdapter {
private static final String SAMPLE_AD_UNIT_KEY = "ad_unit";
private SampleAdView sampleAdView;
@Override
public void requestBannerAd(
Context context, // May be an application context.
MediationBannerListener listener,
Bundle serverParameters,
AdSize adSize,
MediationAdRequest mediationAdRequest,
Bundle mediationExtras) {
sampleAdView = new SampleAdView(context);
if (serverParameters.containsKey(SAMPLE_AD_UNIT_KEY)) {
sampleAdView.setAdUnit(serverParameters.getString(SAMPLE_AD_UNIT_KEY));
} else {
listener.onAdFailedToLoad(this, AdRequest.ERROR_CODE_INVALID_REQUEST);
}
sampleAdView.setSize(
new SampleAdSize(adSize.getWidth(),adSize.getHeight()));
sampleAdView.setAdListener(
new SampleBannerEventForwarder(listener, this));
SampleAdRequest request = new SampleAdRequest();
request.setTestMode(mediationAdRequest.isTesting());
request.setKeywords(mediationAdRequest.getKeywords());
sampleAdView.fetchAd(request);
}
}
İçerik parametresinin türü Activity
olduğunu varsaymayın. Yayıncı uygulamasına bağlı olarak, Google Mobile Ads Uyumlulaştırması, bağdaştırıcınıza bir uygulama içeriği yönlendirebilir. Bağdaştırıcınız bir uygulama bağlamını işleyemezse AdRequest.ERROR_CODE_INVALID_REQUEST
hata koduyla onAdFailedToLoad()
yöntemini çağırmanız önerilir.
MediationBannerListener geri çağırmaları
Reklam etkinliklerini Google Mobil Reklamlar Uyumlulaştırması'na geri yönlendirebilmek için requestBannerAd()
içinde size sağlanan MediationBannerListener
değerini kaydetmeniz gerekir. Her geri çağırma, reklamın yaşam döngüsü içinde uygun zamanda çağrılmalıdır:
Yöntem | Arama zamanı |
---|---|
onAdLoaded() |
Banner isteği başarılı oldu. |
onAdFailedToLoad() |
Banner isteği başarısız oldu. |
onAdClicked() |
Banner tıklandı. |
onAdOpened() |
Banner, tam ekran görünümü oluşturuyor. |
onAdClosed() |
Kullanıcı bir banner'ı tıkladıktan sonra uygulamaya geri dönüyor. |
onAdLeftApplication() |
Banner, kullanıcının uygulamadan ayrılmasına neden olur. |
Örnek reklam ağı bağdaştırıcısı, etkinlik yönlendirmeyi işlemek için SampleBannerEventForwarder
adlı bir sınıf oluşturur:
public class SampleBannerEventForwarder extends SampleAdListener {
private MediationBannerListener mediationListener;
private SampleAdapter adapter;
public SampleBannerEventForwarder(
MediationBannerListener listener, SampleAdapter adapter) {
this.mediationListener = listener;
this.adapter = adapter;
}
@Override
public void onAdFetchSucceeded() {
mediationListener.onAdLoaded(adapter);
}
@Override
public void onAdFetchFailed(SampleErrorCode errorCode) {
switch(errorCode) {
case UNKNOWN:
mediationListener.onAdFailedToLoad(adapter, AdRequest.ERROR_CODE_INTERNAL_ERROR);
break;
case BAD_REQUEST:
mediationListener.onAdFailedToLoad(adapter, AdRequest.ERROR_CODE_INVALID_REQUEST);
break;
case NETWORK_ERROR:
mediationListener.onAdFailedToLoad(adapter, AdRequest.ERROR_CODE_NETWORK_ERROR);
break;
case NO_INVENTORY:
mediationListener.onAdFailedToLoad(adapter, AdRequest.ERROR_CODE_NO_FILL);
break;
}
}
@Override
public void onAdFullScreen() {
mediationListener.onAdClicked(adapter);
mediationListener.onAdOpened(adapter);
mediationListener.onAdLeftApplication(adapter);
}
@Override
public void onAdClosed() {
mediationListener.onAdClosed(adapter);
}
}
Örnek reklam ağı bağdaştırıcısının aynı geri çağırmada onAdClicked
, onAdOpened
ve
onAdLeftApplication
ağlarını nasıl gönderdiğine dikkat edin. Ağınıza yönelik geri çağırmalar Google Mobil Reklamlar'ın gerektirdiği geri çağırmalarla tam olarak eşleşmese de, makul bir eşleme sağlamak bağdaştırıcının sorumluluğundadır.
getBannerView
MediationBannerListener.onAdLoaded()
çağrıldıktan sonra uyumlulaştırma, reklam ağınızın banner görünümünün ekranda gösterilmesini sağlamak için getBannerView()
yöntemini çağırır.
requestBannerAd()
ürününde oluşturduğunuz banner görünümünü döndürmeniz yeterlidir:
@Override
public View getBannerView() {
return sampleAdView;
}
Etkinlik yaşam döngüsü olayları
Uygulama geliştiricisi etkinlikler hakkında uyumlulaştırmaya bildirim gönderirse uyumlulaştırma, onPause()
ve onResume()
etkinlik etkinliklerinin bağdaştırıcısına bildirim gönderir. Banner'ınızı duraklatmak ve devam ettirmek için gerekli tüm işlemleri yapın:
@Override
public void onPause() {
}
@Override
public void onResume() {
}
Örnek reklam ağı, duraklatma veya devam ettirme çağrısı içermediğinden boş bir uygulama sağlar.
Uyumlulaştırma, bağdaştırıcı kaldırılmak üzereyken onDestroy()
için en iyi çağrıyı yapar. Burada gerekli tüm temizleme işlemlerini yapın:
@Override
public void onDestroy() {
if (sampleAdView != null) {
sampleAdView.destroy();
}
}
Akıllı banner'lar
Google Mobile Ads SDK'sı, cihazın boyutuna bağlı olarak tam genişlik ve değişken yükseklikte olan akıllı banner reklam boyutunu destekler.
Akıllı banner'ın reklam boyutunu doğru şekilde elde etmek amacıyla bağdaştırıcınızın, genişliği almak için adSize.getWidthInPixels(context)
ve yüksekliği almak için adSize.getHeight()
yerine adSize.getHeightInPixels(context)
kullanması gerekir. Bu işlem daha sonra cihaz yoğunluğuna bölünmelidir:
int widthInPixels = adSize.getWidthInPixels(context);
int heightInPixels = adSize.getHeightInPixels(context);
DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
int widthInDp = Math.round(widthInPixels / displayMetrics.density);
int heightInDp = Math.round(heightInPixels / displayMetrics.density);
Daha sonra, reklam isteği oluştururken boyut olarak widthInDp
ve heightInDp
boyutlarını kullanabilirsiniz.
İşte bu kadar. Artık banner'lar için çalışan bir uyumlulaştırma bağdaştırıcınız var! Referans için SampleAdapter'ın eksiksiz uygulamasını burada bulabilirsiniz.
Geçiş reklamı bağdaştırıcısı uygulama
Geçiş reklamları için bağdaştırıcı uygulaması banner reklamlara benzer.
Geçiş reklamlarını destekleyen bir bağdaştırıcı uygulamak için MediationInterstitialAdapter
özelliğini uygulayan bir sınıf oluşturun:
public class SampleAdapter implements MediationInterstitialAdapter {
@Override
public void requestInterstitialAd(
Context context,
MediationInterstitialListener listener,
Bundle serverParameters,
MediationAdRequest mediationAdRequest,
Bundle mediationExtras) {}
@Override
public View showInterstitial() {}
@Override
public void onDestroy() {}
@Override
public void onPause() {}
@Override
public void onResume() {}
}
Bağdaştırıcınız banner'ları da destekliyorsa her iki arayüzü de uygulamak için aynı bağdaştırıcı sınıfını kullanabilirsiniz.
MediationInterstitialAdapter
uygulamaya geçmeden önce sunucu parametreleri ve uyumlulaştırma ekleriyle ilgili bilgi edinin.
Sunucu parametreleri (geçiş reklamı)
Banner sunucusu parametreleri bölümüne bakın.
Ek hedefleme parametreleri (geçiş reklamı)
Banner ek hedefleme parametreleri bölümüne bakın.
Uyumlulaştırma ekstraları (geçiş reklamı)
Banner uyumlulaştırma ekstraları bölümüne bakın.
requestInterstitialAd
requestInterstitialAd()
yöntemi, bağdaştırıcı örneklendikten hemen sonra çağrılır. Burada geçiş reklamınızı oluşturmanız ve geçiş reklamı isteğinde bulunmanız gerekir.
Örnek reklam ağı için requestInterstitialAd()
uygulaması şu şekilde görünür:
public class SampleAdapter implements MediationBannerAdapter {
private static final String SAMPLE_AD_UNIT_KEY = "ad_unit";
private SampleInterstitial sampleInterstitial;
@Override
public void requestInterstitialAd(
Context context, // May be an application context.
MediationInterstitialListener listener,
Bundle serverParameters,
MediationAdRequest mediationAdRequest,
Bundle mediationExtras) {
sampleInterstitial = new SampleInterstitial(context);
if (serverParameters.containsKey(SAMPLE_AD_UNIT_KEY)) {
sampleInterstitial.setAdUnit(serverParameters.getString(SAMPLE_AD_UNIT_KEY));
} else {
listener.onAdFailedToLoad(this, AdRequest.ERROR_CODE_INVALID_REQUEST);
}
sampleInterstitial.setAdListener(
new SampleInterstitialEventForwarder(listener, this));
// Make an ad request.
SampleAdRequest request = new SampleAdRequest();
request.setTestMode(mediationAdRequest.isTesting());
request.setKeywords(mediationAdRequest.getKeywords());
sampleInterstitial.fetchAd(request);
}
}
Bağlam parametresinin Etkinlik türünde olduğunu varsaymayın. Google Mobil Reklamlar Uyumlulaştırması, uygulama geliştiricisi tarafından geçirilen bağlamı yönlendirir ve uygulama bağlamının aktarılması mümkündür. Bağdaştırıcınız bir uygulama bağlamını işleyemezse AdRequest.ERROR_CODE_INVALID_REQUEST
hata koduyla onAdFailedToLoad
yöntemini çağırmanız önerilir.
MediationInterstitialListener geri çağırması]
Reklam etkinliklerini tekrar Google Mobile Ads Uyumlulaştırması'na yönlendirebilmek için,
requestInterstitialAd
içinde size sağlanan MediationInterstitialListener
öğesini kaydetmeniz gerekir.
Her geri çağırma, reklamın yaşam döngüsünde uygun zamanda çağrılmalıdır:
Yöntem | Arama zamanı |
---|---|
onAdLoaded | Geçiş reklamı isteği başarılı oldu. |
onAdFailedToLoad | Geçiş reklamı isteği başarısız oldu. |
onAdOpened | Geçiş reklamı gösteriliyor. |
onAdClosed | Geçiş reklamı kapalı. |
onAdLeftApplication | Geçiş reklamı, kullanıcının uygulamadan ayrılmasına neden olur. |
showInterstitial
MediationInterstitialListener.onAdLoaded()
çağrısından sonra,
showInterstitial()
çağrılana kadar
geçiş reklamının gösterilmesini beklemeniz gerekir. Uygulama geliştirici, geçiş reklamının ne zaman gösterileceğine karar verir. Bu, isteğin istenmesinden birkaç dakika sonra olabilir.
showInterstitial()
uygulaması oldukça basittir. Geçiş reklamı nesnenizi
göstermeniz yeterlidir:
@Override
public void showInterstitial() {
sampleInterstitial.show();
}
Etkinlik yaşam döngüsü olayları (geçiş reklamı)
Banner etkinliği yaşam döngüsü etkinlikleri bölümüne bakın.
Etkinlik yaşam döngüsü etkinliklerini uyguladıktan sonra, uyumlulaştırma bağdaştırıcınız geçiş reklamlarını işlemeye hazır olur. Referans olarak, SampleAdapter'ın eksiksiz bir uygulamasını burada bulabilirsiniz.
SSS
- Bağdaştırıcım yalnızca banner ve geçiş reklamlarını destekliyor ancak ikisini birden desteklemiyorsa ne yapmalıyım?
-
Bağdaştırıcınız yalnızca banner'ları destekliyorsa yalnızca
MediationBannerAdapter
arayüzünü uygulamanız gerekir. Adaptörünüz yalnızca geçiş reklamlarını destekliyorsa yalnızcaMediationInterstitialAdapter
arayüzünü uygulamanız gerekir.