Saat halaman yang berisi game Anda dimuat pertama kali, ada sejumlah peristiwa asinkron yang terjadi.
Logika game Anda dimuat, tag iklan dimuat, Ad Placement API mulai diinisialisasi, dan iklan dapat dimuat sebelumnya. Akibatnya, jika Anda memanggil adBreak()
segera setelah halaman dimuat, ada kemungkinan API belum
diinisialisasi atau iklan belum selesai dimuat sebelumnya. Jika API belum diinisialisasi, panggilan akan gagal, dan jika Anda telah mendaftarkan callback adBreakDone(), breakStatus akan disetel ke notReady.
Jika perlu menyinkronkan logika game dengan inisialisasi Ad
Placement API, Anda dapat menggunakan callback onReady() ke adConfig().
onReady() dipanggil oleh Ad Placement API saat:
- tag iklan telah dimuat,
- Ad Placement API telah dimuat dan diinisialisasi, dan
- iklan telah selesai melakukan pra-pemuatan—jika Anda meminta pra-pemuatan menggunakan
adConfig()
Pada tahap ini, Ad Placement API telah diinisialisasi sepenuhnya. Anda dapat memanggil
adBreak(), dan status notReady tidak akan ditampilkan. Namun, seperti biasa, adBreak()
mungkin masih tidak menampilkan iklan (misalnya, tidak ada iklan yang tersedia).
Berikut adalah contoh yang menunjukkan penggunaan onReady():
...
<script>
window.adsbygoogle = window.adsbygoogle || [];
var adBreak = adConfig = function(o) {adsbygoogle.push(o);}
...
function init() {
// Game start logic, show loading screen
adConfig({
preloadAdBreaks: 'on',
onReady: showAd
});
// Don't start the gameplay just yet, keep loading.
}
function showAd() {
// Show an ad
adBreak({
type: 'start',
adBreakDone: startGame, // always called, unblocks the game logic
...
});
}
...
</script>
Catatan: kasus penggunaan yang paling umum untuk memanggil adBreak() segera setelah pemuatan halaman adalah untuk menerapkan iklan pra-putar. Kami sangat menyarankan Anda menggunakan jenis penempatan preroll daripada mencoba membuatnya sendiri menggunakan metode yang dijelaskan di sini.
preroll secara otomatis menerapkan semua logika pemuatan awal dan batas waktu yang diperlukan. Jika menggunakan iklan pra-putar dengan game, Anda tidak perlu menggunakan onReady(). Pelajari lebih lanjut preroll
Waktu tunggu
onReady() tidak dijamin akan dipanggil jika inisialisasi Ad Placement API tertunda atau gagal dimuat sepenuhnya. Untuk memastikan game Anda dimulai tepat waktu, Anda sebaiknya menyiapkan waktu tunggu. Jika menerima
panggilan balik onReady(), Anda dapat memanggil adBreak() untuk menempatkan iklan, atau Anda
dapat melewati panggilan iklan dan melanjutkan untuk memuat game.
Contoh berikut menyertakan waktu tunggu—dan mirip dengan logika yang diterapkan oleh penempatan pra-putar:
...
<script>
window.adsbygoogle = window.adsbygoogle || [];
var adBreak = adConfig = function(o) {adsbygoogle.push(o);}
...
function init() {
// Game start logic
let adConfigPromise =
new Promise((resolve, reject) => adConfig({
preloadAdBreaks: 'on',
onReady: () => resolve(true)
}));
let timeoutPromise =
new Promise((resolve, reject) => {
setTimeout(() => {
resolve(false);
}, 2000);
});
// Whatever happens first resolves this promise.
Promise.race([
adConfigPromise,
timeoutPromise
]).then((shouldShowPreRoll) => {
if (shouldShowPreRoll) {
showPreRoll();
} else {
startGame();
}
});
}
function showPreRoll() {
// Show ad
adBreak({
type: 'start',
adBreakDone: startGame, // always called, unblocks the game logic
...
});
}
...
</script>