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ı 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ı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.
Bağdaştırıcı Sınıfını Uygulama
İlk adım, Bağdaştırıcı 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 bağdaştırıcını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 sürümlü bağdaştırıcıları, 4 haneli bir bağdaştırıcı sürümü şeması kullanır ancak VersionInfo
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 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 uygulamanın Google Mobile Ads SDK'sını başlatmasının ardından, 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ı başlatmak 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ı ya da 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. Başarılı veya başarısız bir 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ükleme bildirildikten sonra herhangi bir zamanda bağdaştırıcınızın showAd()
yöntemini çağırabilir. Bağdaştırıcı, ödüllü reklamı
göstermelidir. 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.
Genellikle bu geri çağırmalar 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
üzerindeki mevcut 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 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 gerçekleştiğini bildirir. |
onVideoComplete() | Google Mobile Ads SDK'sına ödüllü reklamın oynatıldığını 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. |