Uyumlulaştırma bağdaştırıcısı, Google Mobile Ads SDK'sından mesaj ve istek alır ve bu istekleri yerine getirmek 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 Örnek SDK kullanılmıştır. Bu örnek SDK için derlenen bir bağdaştırıcının eksiksiz uygulamasını Android 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ırması platformuyla uyumlulaştırılan reklam ağları, bir yayıncıyı tanımlamak için genellikle bir veya daha fazla tanımlayıcı gerektirir. 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.
Reklam ağınıza erişmek için, uyumlulaştırma bağdaştırıcısı geliştirmeden önce bağdaştırıcı sınıf adınızı ve diğer gerekli parametreleri Google'a sağlamanız gerekir.
Bağdaştırıcı Sınıfını Uygulama
İlk adım, Adapter soyut sınıfını uygulamaktır:
...
import com.google.android.gms.ads.mediation.Adapter;
...
public class SampleAdapter extends Adapter {
...
}
Bu değişiklik, sınıfınızın aşağıda açıklanan çeşitli yöntemleri uygulamasını sağlar.
Rapor sürüm numaraları
Bağdaştırıcı, Google Mobile Ads SDK'sına hem adaptörün hem de üçüncü taraf SDK'nın sürümünü bildirmelidir. Sürümler, VersionInfo
kullanılarak raporlanır.
Google'ın açık kaynak ve farklı sürümlerde kullanılabilen adaptörleri, 4 haneli bir adaptör sürümü şeması kullanır ancak VersionInfo
yalnızca 3 haneli sürümlere 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 com.google.android.gms.ads.VersionInfo;
...
public class SampleAdapter extends Adapter implements SampleRewardedAdListener {
...
@Override
public VersionInfo getVersionInfo() {
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);
}
return new VersionInfo(0, 0, 0);
}
@Override
public VersionInfo getSDKVersionInfo() {
String versionString = SampleAdRequest.getSDKVersion();
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);
}
return new VersionInfo(0, 0, 0);
}
...
}
Adaptörü başlatma
Bir uygulama Google Mobile Ads SDK'sını başlattıktan sonra, AdMob kullanıcı arayüzünde uygulama için yapılandırılmış tüm bağdaştırıcılarda initialize()
çağrılır.
List<MediationConfiguration>
bağımsız değişkeni, AdMob kullanıcı arayüzünde reklam ağınız için yapılandırılmış tüm yerleşimler hakkında bilgi sağlar. Reklam ağı SDK'nızı ilk kullanıma hazırlamak için bu bilgileri kullanın. Reklam ağı SDK'nız başlatıldıktan sonra, initialize()
çağrısında sağlanan InitializationCompleteCallback
bağımsız değişkende onInitializationSucceeded()
veya onInitializationFailed()
yöntemini çağırarak Google Mobile Ads SDK'sına başarılı veya başarısız bir başlatma bildirin.
...
import com.google.android.gms.ads.mediation.InitializationCompleteCallback;
import com.google.android.gms.ads.mediation.MediationConfiguration;
...
public class SampleAdapter extends Adapter {
...
@Override
public void initialize(
Context context,
InitializationCompleteCallback initializationCompleteCallback,
List<MediationConfiguration> mediationConfigurations) {
if (context == null) {
initializationCompleteCallback.onInitializationFailed(
"Initialization Failed: Context is null.");
return;
}
// The Sample SDK doesn't have an initialization method, so this example
// immediately reports a success callback.
initializationCompleteCallback.onInitializationSucceeded();
}
...
}
Ödüllü reklam isteme
Ödüllü reklam isteğinde bulunmak için loadRewardedAd()
yöntemini kullanın. Bir başarılı veya başarısız reklam yüklemesini Google Mobile Ads SDK'sına bildirmenizi sağlayan MediationAdLoadCallback
referansını tutun.
MediationRewardedAdCallback
nesnesi, onSuccess()
çağrıldıktan sonra kullanılabilir. Bu nesne, daha sonra tıklama veya ödül gibi diğer reklam etkinliklerini aktarmak için kullanırsınız.
...
import com.google.ads.mediation.sample.sdk.SampleAdRequest;
import com.google.ads.mediation.sample.sdk.SampleRewardedAd;
import com.google.ads.mediation.sample.sdk.SampleRewardedAdListener;
import com.google.android.gms.ads.mediation.MediationAdLoadCallback;
import com.google.android.gms.ads.mediation.MediationRewardedAd;
import com.google.android.gms.ads.mediation.MediationRewardedAdCallback;
...
public class SampleAdapter extends Adapter, SampleRewardedAdListener
implements MediationRewardedAd {
...
/**
* A MediationAdLoadCallback that handles any callback when a Sample rewarded
* ad finishes loading.
*/
private MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> adLoadCallBack;
/**
* Represents a SampleRewardedAd.
*/
private SampleRewardedAd sampleRewardedAd;
/**
* Used to forward rewarded video ad events to the Google Mobile Ads SDK..
*/
private MediationRewardedAdCallback rewardedAdCallback;
...
// Hold a reference to the MediationAdLoadCallback object to report ad load
// events to the Google Mobile Ads SDK.
@Override
public void loadRewardedAd(
MediationRewardedAdConfiguration mediationRewardedAdConfiguration,
MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
mediationAdLoadCallback) {
adLoadCallBack = mediationAdLoadCallback;
MediationRewardedAdConfiguration adConfiguration = mediationRewardedAdConfiguration;
String adUnitId = adConfiguration.getServerParameters().getString(SAMPLE_AD_UNIT_KEY);
sampleRewardedAd = new SampleRewardedAd(adUnitId);
SampleAdRequest request = new SampleAdRequest();
sampleRewardedAd.setListener(this);
sampleRewardedAd.loadAd(request);
}
// Hold a reference to the MediationRewardedAdCallback object to report ad
// lifecycle events to the Google Mobile Ads SDK.
@Override
public void onRewardedAdLoaded() {
rewardedAdCallback = mediationAdLoadCallBack.onSuccess(this);
}
@Override
public void onRewardedAdFailedToLoad(SampleErrorCode error) {
mediationAdLoadCallBack.onFailure(error.toString());
}
...
}
Reklamı göster
Google Mobile Ads SDK'sı, SDK'ya başarılı bir reklam yüklemesi bildirildikten sonra her zaman bağdaştırıcınızın showAd()
yöntemini çağırabilir. Bağdaştırıcı, ödüllü reklamı görüntülemelidir. Reklam herhangi bir nedenle gösterilemiyorsa onAdFailedToShow()
geri çağırmasını arayın.
public class SampleAdapter extends Adapter, SampleRewardedAdListener
implements MediationRewardedAd {
...
@Override
public void showAd(Context context) {
if (!(context instanceof Activity)) {
rewardedAdCallback.onAdFailedToShow(
"An activity context is required to show Sample rewarded ad.");
return;
}
Activity activity = (Activity) context;
if (!sampleRewardedAd.isAdAvailable()) {
rewardedAdCallback.onAdFailedToShow("No ads to show.");
return;
}
sampleRewardedAd.showAd(activity);
}
...
}
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 sağlanan nesneyi kullanarak reklam yaşam döngüsü olaylarını Google Mobile Ads SDK'sınaMediationRewardedAdCallback
uygun şekilde raporlamalıdır.
Bu geri çağırmalar genellikle reklam ağı SDK'nız tarafından tetiklenen geri çağırma yöntemlerinden yönlendirilir. Bu örnek, Örnek SDK geri çağırmalarını uygular ve bunları MediationRewardedAdCallback
üzerinde bulunan geri çağırmalarla eşler.
public class SampleAdapter extends Adapter, SampleRewardedAdListener
implements MediationRewardedAd {
...
@Override
public void onAdRewarded(final String rewardType, final int amount) {
RewardItem rewardItem =
new RewardItem() {
@Override
public String getType() {
return rewardType;
}
@Override
public int getAmount() {
return amount;
}
};
rewardedAdCallback.onUserEarnedReward(rewardItem);
}
@Override
public void onAdClicked() {
rewardedAdCallback.reportAdClicked();
}
@Override
public void onAdFullScreen() {
rewardedAdCallback.onAdOpened();
rewardedAdCallback.onVideoStart();
rewardedAdCallback.reportAdImpression();
}
@Override
public void onAdClosed() {
rewardedAdCallback.onAdClosed();
}
@Override
public void onAdCompleted() {
rewardedAdCallback.onVideoComplete();
}
...
}
Google Mobile Ads SDK'sına bildirilmesi gereken reklam etkinlikleri aşağıda ayrıntılı bir şekilde açıklanmıştır:
Reklam etkinliği | Açıklama |
---|---|
onAdOpened() | Google Mobile Ads SDK'sına reklamın açılacağını bildirir. |
onVideoStart() | Google Mobile Ads SDK'sına bir ödüllü reklamın oynatılmaya başladığını bildirir. |
reportAdImpression() | Google Mobile Ads SDK'sına reklamda bir gösterim oluştuğunu bildirir. |
onVideoComplete() | Google Mobile Ads SDK'sına ödüllü reklamın oynatmayı bitirdiğini bildirir. |
onUserEarnedReward() | Google Mobile Ads SDK'sına kullanıcının ödül kazandığını bildirir. |
reportAdClicked() | Google Mobile Ads SDK'sına reklamın tıklandığını bildirir. |
onAdClosed() | Google Mobile Ads SDK'sına reklamın kapatıldığını bildirir. |
onAdFailedToShow() | Google Mobile Ads SDK'sına reklamın gösterilemediğini bildirir. |