Adaptor mediasi menerima pesan dan permintaan dari Google Mobile Ads SDK dan berkomunikasi dengan SDK jaringan pihak ketiga untuk memenuhi permintaan tersebut.
Panduan ini ditujukan bagi jaringan iklan yang ingin membuat adaptor mediasi iklan reward untuk Mediasi Google Mobile Ads. SDK Sampel digunakan dalam cuplikan kode di bawah untuk tujuan demonstrasi. Anda dapat menemukan penerapan lengkap adaptor yang dibuat untuk SDK contoh ini dalam project MediasiAndroid kami. Panduan ini menjelaskan cara membuat adaptor.
Menentukan nama class adaptor dan parameter server
Jaringan iklan yang dimediasi melalui platform mediasi AdMob biasanya memerlukan satu atau beberapa ID untuk mengidentifikasi penayang. ID ini ditampilkan sebagai parameter server dan ditentukan saat mengonfigurasi jaringan iklan pihak ketiga untuk mediasi pada UI AdMob.
Sebelum mengembangkan adaptor mediasi, Anda harus memberi Google nama class adaptor dan parameter lain yang diperlukan untuk mendapatkan akses ke jaringan iklan Anda.
Mengimplementasikan Class Adaptor
Langkah pertama adalah menerapkan class abstrak Adapter:
...
import com.google.android.gms.ads.mediation.Adapter;
...
public class SampleAdapter extends Adapter {
...
}
Perubahan ini memastikan class Anda mengimplementasikan beberapa metode yang dibahas di bawah ini.
Laporkan nomor versi
Adaptor harus melaporkan versi adaptor itu sendiri dan versi SDK pihak ketiga ke Google Mobile Ads SDK. Versi dilaporkan
menggunakan VersionInfo
.
Adaptor open source dan
berversi Google
menggunakan skema versi adaptor 4 digit, tetapi VersionInfo
hanya mengizinkan 3 digit. Untuk mengatasi hal ini, sebaiknya gabungkan
dua digit terakhir ke dalam versi patch, seperti ditunjukkan di bawah:
...
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);
}
...
}
Melakukan inisialisasi adaptor
Setelah aplikasi melakukan inisialisasi Google Mobile Ads SDK, initialize()
akan dipanggil di semua adaptor yang dikonfigurasi untuk aplikasi dalam UI AdMob.
Argumen List<MediationConfiguration>
memberikan informasi tentang semua penempatan yang dikonfigurasi untuk jaringan iklan Anda dalam UI AdMob. Gunakan informasi ini untuk melakukan inisialisasi SDK jaringan iklan. Setelah SDK jaringan iklan Anda diinisialisasi, laporkan inisialisasi yang berhasil atau gagal ke Google Mobile Ads SDK dengan memanggil metode onInitializationSucceeded()
atau onInitializationFailed()
pada InitializationCompleteCallback
argumen yang disediakan di panggilan initialize()
.
...
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();
}
...
}
Meminta iklan reward
Gunakan metode loadRewardedAd()
untuk meminta iklan reward. Menyimpan referensi ke MediationAdLoadCallback
, yang memungkinkan Anda melaporkan pemuatan iklan yang berhasil atau gagal ke Google Mobile Ads SDK.
Objek MediationRewardedAdCallback
akan tersedia setelah onSuccess()
dipanggil, yang nantinya akan Anda gunakan untuk menyampaikan peristiwa iklan lainnya seperti klik atau reward yang diberikan.
...
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());
}
...
}
Menampilkan iklan
Google Mobile Ads SDK dapat memanggil metode showAd()
adaptor Anda kapan saja setelah SDK diberi tahu tentang pemuatan iklan yang berhasil. Adaptor akan
menampilkan iklan reward. Jika karena alasan apa pun iklan tidak dapat ditampilkan, panggil callback
onAdFailedToShow()
.
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);
}
...
}
Melaporkan peristiwa iklan ke Mobile Ads SDK
Setelah menampilkan iklan, adaptor harus melaporkan peristiwa siklus proses iklan sesuai dengan Google Mobile Ads SDK menggunakan objek MediationRewardedAdCallback
yang diberikan pada waktu pemuatan iklan yang berhasil.
Biasanya, callback ini diteruskan dari metode callback yang diaktifkan oleh SDK
jaringan iklan Anda. Contoh ini menerapkan callback SDK Sampel dan memetakannya ke
callback yang tersedia di MediationRewardedAdCallback
.
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();
}
...
}
Peristiwa iklan yang harus dilaporkan ke Google Mobile Ads SDK dijelaskan di bawah:
Peristiwa iklan | Deskripsi |
---|---|
onAdOpened() | Memberi tahu Google Mobile Ads SDK bahwa iklan akan dibuka. |
onVideoStart() | Memberi tahu Google Mobile Ads SDK bahwa iklan reward mulai diputar. |
reportAdImpression() | Memberi tahu Google Mobile Ads SDK bahwa tayangan terjadi pada iklan. |
onVideoComplete() | Memberi tahu Google Mobile Ads SDK bahwa iklan reward selesai diputar. |
onUserEarnedReward() | Memberi tahu Google Mobile Ads SDK bahwa pengguna telah memperoleh reward. |
reportAdClicked() | Memberi tahu Google Mobile Ads SDK bahwa iklan telah diklik. |
onAdClosed() | Memberi tahu Google Mobile Ads SDK bahwa iklan telah ditutup. |
onAdFailedToShow() | Memberi tahu Google Mobile Ads SDK bahwa iklan gagal ditampilkan. |