Bu kılavuz, teklif bağdaştırıcısı oluşturmak isteyen reklam ağları için hazırlanmıştır gerçek zamanlı teklif vermeye (GZT) katılmak için. Şu durumda: yayıncıysanız yayıncı uyumlulaştırmasını inceleyin bakın.
Teklif bağdaştırıcısı, entegrasyonun istemci tarafı parçasıdır. Adaptör reklam ağı SDK'nızın aşağıdakileri yapmak için Google Mobile Ads SDK'sı ile iletişim kurmasını sağlar: teklif vereninizin yayınladığı reklamları yükleyin.
Teklifin doğru çalışması için bağdaştırıcınızın başlatma, sinyal toplama, reklamları yükleme ve reklam yaşam döngüsünü yönlendirme etkinlikler. Bu kılavuzda, adaptörünüzün nasıl olması gerektiği konusunda size yol göstereceğiz. uygulanır.
Teklif bağdaştırıcısının iş akışı
Başlatma
İstek-yanıt oluşturma yaşam döngüsünün tamamının ayrıntılı bir akışı aşağıdaki örnekteki gibidir:
Bağdaştırıcı, iş akışının aşağıdaki bölümlerinden sorumludur:
4-7. adımlar: Bağdaştırıcınızı başlatın ve Google Mobile Ads SDK'sını geri arayın başlatma işlemi tamamlandığında otomatik olarak güncellenir.
10-13. adımlar: Reklam ağı SDK'nızdan teklifine katılması ve onu Google Mobil Ads SDK'sı.
18-21. adımlar: Teklif vereniniz kazanan teklifi döndürürse reklamı buna göre yükleyin. yanıt verebilir. Yüklendikten sonra, Google Mobile Ads SDK'sını bilgilendirin yüklendiğini görebiliriz.
23. adım ve sonrası: Reklamınız gösterilirken Google Mobil Reklamlar'ı bilgilendirin Gerçekleşen diğer reklam etkinliklerinin yanı sıra gösterim ve tıklama etkinliklerinin SDK'sı reklamınızın sunum yaşam döngüsü boyunca.
Teklif bağdaştırıcısını uygulama
Google Mobile Ads SDK'sı için teklif bağdaştırıcısı oluşturmak istiyorsanız
RtbAdapter
soyut sınıfını genişlet. Aşağıdaki bölümler
her soyut yöntemi RtbAdapter
konusunda açıklayacağım.
getSDKVersionInfo()
Burada, SDK'nızın sürümünü döndürmeniz gerekir. Bu sürüm teklif verene ait bir teklif sunar.
Bu yöntem VersionInfo
döndürmenizi gerektirir. Aşağıdaki örnekte,
SDK'nızın dize sürümünü bir VersionInfo.
@Override
public VersionInfo getSDKVersionInfo() {
// Get your SDK's version as a string. E.g. "1.2.3"
// String versionString = YourSdk.getVersion();
String splits[] = versionString.split("\\.");
if (splits.length >= 3) {
int major = Integer.parseInt(splits[0]);
int minor = Integer.parseInt(splits[1]);
int micro = Integer.parseInt(splits[2]);
return new VersionInfo(major, minor, micro);
}
String logMessage = String.format("Unexpected SDK version format: %s." +
"Returning 0.0.0 for SDK version.", sdkVersion);
Log.w(TAG, logMessage);
return new VersionInfo(0, 0, 0);
}
getVersionInfo()
Burada bağdaştırıcınızın sürümünü iade etmeniz gerekir. Bu sürüm teklif verene ait bir teklif sunar.
Google'ın açık kaynak ve sürümlü
adaptörler
4 haneli bir bağdaştırıcı sürüm şeması kullanın ancak VersionInfo
yalnızca 3 basamaklı bir bağdaştırıcı sürümü şemasına izin verir
gerekir. Bu sorunu çözmek için son iki basamağı birleştirmeniz önerilir
aşağıdaki gibi yama sürümüne ekleyin.
@Override
public VersionInfo getVersionInfo() {
// Get your adapters's version as a string. E.g. "1.2.3.0"
String versionString = BuildConfig.VERSION_NAME;
String splits[] = versionString.split("\\.");
if (splits.length >= 4) {
int major = Integer.parseInt(splits[0]);
int minor = Integer.parseInt(splits[1]);
int micro = Integer.parseInt(splits[2]) * 100 + Integer.parseInt(splits[3]);
return new VersionInfo(major, minor, micro);
}
String logMessage = String.format("Unexpected adapter version format: %s." +
"Returning 0.0.0 for adapter version.", versionString);
Log.w(TAG, logMessage);
return new VersionInfo(0, 0, 0);
}
initialize()
Zaman aşımı: 30 saniye
initialize()
yöntemi, bağdaştırıcınızda çağrılan ilk yöntemdir. Evet
yalnızca bir kez çağrılır. Bu yöntem size
Şu öğenin tam listesini temsil eden MediationConfiguration
nesne:
bu uygulamada reklam ağınız için yapılandırılmış yerleşimler; Döngülerden yararlanabilirsiniz
bu listeyi kullanarak her bir yerleşimin kimlik bilgilerini ayrıştırır.
ve başlatma için ilgili verileri SDK'nıza iletin.
SDK'nız başlatıldığında ve reklam isteklerini almaya hazır olduğunda
InitializationCompleteCallback
için onInitializationSucceeded()
yöntemi.
Bu geri arama, uygulama yayıncılarına yönlendirilir. Böylece,
reklam yüklemeye başlayabilir.
@Override
public void initialize(Context context,
InitializationCompleteCallback initializationCompleteCallback,
List<MediationConfiguration> mediationConfigurations) {
// Initialize your ad network's SDK.
...
// Invoke the InitializationCompleteCallback once initialization completes.
initializationCompleteCallback.onInitializationSucceeded();
}
collectSignals()
Zaman aşımı: 1 saniye
Yayıncı her reklam isteğinde bulunduğunda RtbAdapter
öğenizin yeni bir örneği
oluşturulur ve collectSignals()
yöntemi çağrılır. Bu
Reklam isteği, yanıt ve sürenin tamamı boyunca RtbAdapter
kullanılır.
oluşturma döngüsünden yararlanabilirsiniz. collectSignals()
yöntemi, şunları etkinleştirir:
bağdaştırıcıda, teklif verene gönderilmek üzere cihazdan sinyal sağlayarak
OpenRTB isteği.
collectSignals()
, arka plan ileti dizisinde çağrıldı.
Google Mobile Ads SDK'sı aynı anda tüm bağdaştırıcılardan gelen sinyalleri ister
teklifli sisteme katılır. Lütfen saygılı olun ve kullanıcı arayüzü iş parçacığına yapılan çağrıları sınırlayın
iletişim kurabileceğinizi unutmayın. Bağdaştırıcınızın veya SDK'nızın veri toplamak için yapması gereken ağır işler
sinyalleri initialize()
yöntemiyle yapılmalı ve önbelleğe alınmalıdır.
Sinyalleriniz hazır olduğunda onSuccess()
geri aramasını
kodlanmış sinyallerden yararlanırız.
Aşağıda bir uygulama örneği verilmiştir:
@Override
public void collectSignals(RtbSignalData rtbSignalData,
SignalCallbacks signalCallbacks) {
String signals = YourSdk.getSignals();
signalCallbacks.onSuccess(signals);
}
Bağdaştırıcınız sinyalleri toplayamazsa signalCallbacks.onFailure()
işlevini çağırın
hata oluştuğunu açıklayan bir dize bulunur.
Reklam yükleme yöntemlerini uygulama
Zaman aşımı: 10 saniye
Teklif vereniniz kazanan teklifi döndürürse Google Mobile Ads SDK'sı kazanan reklamı yüklemek için bağdaştırıcınızı çağırarak teklif vereni, SDK'nızın bu reklamı yüklemesi gerektiğini döndürdü.
Çağrılan tam yükleme yöntemi reklama bağlıdır bu isteğin olduğu biçim:
Reklam Biçimi | Yükleme yöntemi |
---|---|
Banner | loadBannerAd()
|
Geçiş reklamı | loadInterstitialAd()
|
Ödüllü | loadRewardedAd()
|
Bağdaştırıcınızın desteklediği reklam biçimleri için bu yöntemleri uygulayın.
Yükleme yöntemi, bağdaştırıcısı veya olması gerekir. Bu yöntem size şunları sağlar: parametre:
SDK'nızın kullanması gereken parametreleri içeren
MediationAdConfiguration
Kazanan teklif için (ör. teklif yanıtı ve kimlik bilgileri) reklamı yükler AdMob kullanıcı arayüzünde yapılandırılan yayıncı.Google Mobile Ads SDK'sını bilgilendirmek için kullanılan bir
MediationAdLoadCallback
nesnesi yükleme başarılı veya başarısız olduğunda görebilirsiniz.
SDK'nız reklamı yükledikten sonra mediationAdLoadCallback.onSuccess()
işlevini çağırın.
etkinlik reklamı yüklenemiyor, mediationAdLoadCallback.onFailure()
öğesini bir
hata oluştuğunu açıklayan bir dize.
mediationAdLoadCallback.onSuccess()
yöntemi,
"Reklam"dan biriyle onaylayan nesne arayüzleri, Google Mobil
Ads SDK'sı. Bu reklam arayüzlerinde, reklamla ilgili bazı bilgiler vermeniz istenir.
MediationAdConfiguration
adlı kullanıcının getWatermark()
üyesi de var
yöntemini kullanın. Bu resim
reklamlarınızda şeffaf bir yer paylaşımına döşenmelidir.
Filigran oluşturma hakkında daha fazla bilgi almak için Google ile iletişime geçin.
Yayıncılar tarafından kullanılmak üzere gösterilen reklamla ilgili meta verileri içerir.
gösterilen reklamların kaynağı
Banner'larda banner görünümünü sağlamanız istenir. Geçiş reklamı ve
reklamı şu adreste göstermek için bir show()
yöntemi uygulamanız istenir:
daha ileri bir noktaya taşımayı deneyin. En iyi uygulama olarak, sınıfınızı en iyi
Reklam yüklemesi, bu reklam yöntemlerinin uygulanmasından da sorumlu mu?
Aşağıda örnek bir loadBannerAd()
uygulaması verilmiştir. Unutmamanız gereken noktalar
olacaktır. Bu nedenle, bağdaştırıcınızın uygulamasının
farklı bir SDK ile entegre olur.
public final class SampleRtbAdapter extends RtbAdapter {
...
@Override
public void loadBannerAd(
MediationBannerAdConfiguration adConfiguration,
MediationAdLoadCallback<MediationBannerAd, MediationBannerAdCallback> callback) {
SampleBannerRenderer bannerRenderer =
new SampleBannerRenderer(adConfiguration, callback);
bannerRenderer.render();
}
}
// Renders a banner ad, and forwards callbacks to the Google Mobile Ads SDK.
public class SampleBannerRenderer implements MediationBannerAd {
private MediationBannerAdConfiguration adConfiguration;
private final MediationAdLoadCallback<MediationBannerAd, MediationBannerAdCallback> adLoadCallback;
private AdView adView;
private MediationBannerAdCallback callback;
public SampleRtbBannerRenderer(
MediationBannerAdConfiguration adConfiguration,
MediationAdLoadCallback<MediationBannerAd, MediationBannerAdCallback> adLoadCallback) {
this.adConfiguration = adConfiguration;
this.adLoadCallback = adLoadCallback;
}
public void render() {
adView = new AdView(adConfiguration.getContext());
adView.setAdSize(adConfiguration.getAdSize());
// serverParameters are the parameters entered in the AdMob UI for your network.
adView.setAdUnitId(adConfiguration.getServerParameters().getString("adUnitId"));
// Map the callbacks from your SDK to Google's SDK.
adView.setAdListener(new AdListener() {
// See the next step for more information on callback mapping.
// ...
});
// Get the bid response and watermark from the ad configuration and
// pass the relevant information to your SDK.
String ad = adConfiguration.getBidResponse();
String watermark = adConfiguration.getWatermark();
Bundle extras = new Bundle();
extras.putString("bid", ad);
extras.putString("watermark", watermark);
AdRequest request = new AdRequest.Builder()
.addNetworkExtrasBundle(AdMobAdapter.class, extras)
.build();
adView.loadAd(request);
}
// MediationBannerAd implementation
@NonNull
@Override
public View getView() {
return adView;
}
}
Reklam sunumu yaşam döngüsü etkinliklerini aktarın
Bağdaştırıcının nihai sorumluluğu, Google Mobile Ads SDK'sını olayın sorumlusuyla iletişim kurmak ve yayıncısına ait. Yayıncı, ne olursa olsun belirli zamanlarda bu geri çağırmaları bekler. reklamı sunan reklam ağıdır. Bu nedenle, bu ağlardan çoğunun doğru zamanda çağrılır. Böylece Google Mobile Ads SDK'sı bunları yayıncıya yönlendirebilir.
Bağdaştırıcılar, uygun olduğunda aşağıdaki etkinlikleri çağırmalıdır:
Tüm biçimlerde ortak | |
---|---|
Yöntem | Ne zaman aramalısınız? |
reportAdClicked()
|
Reklam tıklandı. |
reportAdImpression()
|
Reklam bir gösterim oluşturdu. |
onAdOpened()
|
Reklam tam ekran görünümü sunuyordu. |
onAdClosed()
|
Reklamın tam ekran görünümü kapatıldı. |
onAdLeftApplication()
|
Reklam, kullanıcının uygulamadan ayrılmasına neden olmuştur. |
Ödüllü reklamlar | |
onRewarded()
|
Kullanıcıya bir ödül verilir. |
Video geri aramaları (ödüllü ve doğal reklamlar) | |
onVideoStarted()
|
Reklamın videosu başlatıldı. |
onVideoCompleted()
|
Reklamın videosu tamamlandı. |
Adaptör bir MediationAdLoadCallback<MediationAdT, MediationAdCallbackT>
alır
mediationAdLoadCallback.onSuccess()
arandığında nesne geri döndü. Adaptörler
bu nesneyi tutması ve sunu etkinliklerini çağırmak için kullanması bekleniyor.
kaç kez tıklandığını gösterir.
Genellikle bu etkinliklerin çoğu reklam ağınızın SDK'sı tarafından gerçekleştirilir. İlgili içeriği oluşturmak için kullanılan bağdaştırıcısının rolü, reklam ağı SDK'nızdan gelen geri çağırmaları Google Mobile Ads SDK'sı.
Aşağıdaki örnekte, SDK'nın Google Mobile Ads SDK'sı için reklam işleyicisi:
adView.setAdListener(new AdListener() {
public void onAdLoaded() {
callback = adLoadCallback.onSuccess(SampleBannerRenderer.this);
}
public void onAdImpression() {
if (callback != null) {
callback.reportAdImpression();
}
}
public void onAdFailedToLoad(LoadAdError adError) {
adLoadCallback.onFailure("Error: " + adError.toString());
}
public void onAdClosed() {
if (callback != null) {
callback.onAdClosed();
}
}
public void onAdOpened() {
if (callback != null) {
callback.onAdOpened();
callback.reportAdClicked();
}
}
public void onAdLeftApplication() {
if (callback != null) {
callback.onAdLeftApplication();
}
}
});
Yerel reklam gösterim izleme için gerekli öğeler
Google Mobile Ads SDK'sı, emin olun. Reklam ağı SDK'nız belirli öğelerin gösterilmesini gerektiriyorsa teklif vereniniz, geçerli bir gösterim oluşturmak için bunların zorunlu yerel öğeleri teklif yanıtına ekleme. Google Mobile Ads SDK'sı daha sonra gerekli yerel öğelerinizin gösterim kaydedilmeden önce görüntülenmesini sağlayın.
Gerekli yerel öğeleri inceleyin belgeleri Teklifte gerekli diğer öğelerin nasıl belirtileceği hakkında daha fazla bilgi tıklayın.
Reklam hatalarını göster
Geçiş reklamı ve ödüllü reklam gibi tam ekran biçimleri başarılı bir şekilde
yükleme geri çağırması uygulama sağlayacağınız
.
MediationInterstitialAd
veya MediationRewardedAd
Böylece Google Mobile Ads SDK'sı bağdaştırıcınızdan reklamı göstermesini isteyebilir.
Google Mobile Ads SDK'sı, bağdaştırıcının bir reklamı başarıyla yüklemesini bekler. Yayıncı, reklamı göstermek istediğinde reklam gösterilmeye hazırdır. Bunun anlamı, her gösterim çağrısının bir gösterimle sonuçlanması gerekir.
Ancak, belirli zamanlarda reklam gösteremeyebilirsiniz. Şu durumda:
reklamı gösterememesi durumunda,
.
onAdFailedToShow()
geri çağırmayı kullanın.
Aşağıdaki tabloda, sunu geri çağırmalarının tam ekran reklam biçimleri için gösterim kaydını nasıl etkilediği gösterilmektedir:
Geri Arama | Sonuç |
---|---|
onAdOpened() | Impression recorded
|
onAdFailedToShow() | Impression failure1
|
Birkaç saniye boyunca yukarıdakilerin hiçbiri | Impression recorded
|
1 Başarısız olanlar için reklam ağınızdan gösterim için ücret alınmaz faturalandırılabilir etkinlik ücreti düzenlemenizi etkiler. Teklif isteğini inceleyin sinyallerinizi ekleyebilirsiniz.
Aşağıdaki örnek örnekte, bir reklamın reklamdan veya reklamdan show çağrısı hatayla sonuçlanabilir.
final class SampleRtbAdapter extends RtbAdapter implements MediationRewardedAd {
private MediationRewardedAdCallback callback;
private RewardedAd rewardedAd;
...
@Override
public void loadRewardedAd(
MediationRewardedAdConfiguration adConfiguration,
final MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> loadCallback) {
// Load an ad. This mock example uses Google's SDK, but in practice
// your adapter will load the ad using your ad network's SDK.
RewardedAd.load(adConfiguration.getContext(),
"ca-app-pub-3940256099942544/5224354917",
new AdRequest.Builder().build(),
new RewardedAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
// When the ad loads, invoke the load success callback.
callback = loadCallback.onSuccess(SampleRtbAdapter.this);
}
});
}
@Override
public void showAd(Context context) {
// In this mock example, your ad network requires an activity context, but
// didn't receive one, making you unable to show the ad.
if (!(context instanceof Activity)) {
AdError error = new AdError(1, "Context must be an activity",
"com.google.ads.mediation.sample");
callback.onAdFailedToShow(error);
}
// This example shows Google SDK's callbacks, but it's likely your SDK
// has similar presentation callbacks.
rewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
@Override
public void onAdShowedFullScreenContent() {
// Your ad network SDK successfully showed the ad. Call onAdOpened().
callback.onAdOpened();
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Your ad network SDK failed to show the ad, invoke onAdFailedToShow.
// In practice, you will map your SDK's error to an AdError.
AdError error = new AdError(adError.getCode(), adError.getMessage(),
adError.getDomain());
callback.onAdFailedToShow(adError);
}
});
rewardedAd.show((Activity) context, ...);
}
}