Saat halaman yang berisi game Anda pertama kali dimuat, ada sejumlah peristiwa asinkron yang terjadi.
Logika game Anda dimuat, tag iklan dimuat, Ad Placement API mulai
diinisialisasi, dan iklan dapat dipramuat. Akibatnya, jika Anda memanggil adBreak()
segera setelah pemuatan halaman, ada kemungkinan API mungkin belum
diinisialisasi atau iklan belum selesai dimuat sebelumnya. Jika API belum melakukan inisialisasi, panggilan akan gagal, dan jika Anda telah mendaftarkan callback adBreakDone()
, breakStatus
akan ditetapkan 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 jika:
- tag iklan telah dimuat,
- Ad Placement API telah dimuat dan diinisialisasi, dan
- iklan telah selesai dimuat sebelumnya—jika Anda meminta pramuat menggunakan
adConfig()
Pada tahap ini, Ad Placement API sepenuhnya diinisialisasi. Anda dapat memanggil
adBreak()
, dan tidak akan menampilkan status notReady
. Namun, seperti biasa, adBreak()
mungkin tetap tidak menampilkan iklan (misalnya, tidak ada iklan yang tersedia).
Berikut ini 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 dengan menerapkan preroll. Sebaiknya gunakan jenis penempatan preroll
, bukan mencoba membuat jenis penempatan Anda sendiri menggunakan metode yang dijelaskan di sini.
preroll
secara otomatis menerapkan semua logika pramuat dan waktu tunggu yang diperlukan. Jika menggunakan preroll dengan game, Anda tidak perlu menggunakan onReady()
. Pelajari preroll lebih lanjut
Waktu tunggu
onReady()
tidak dijamin akan dipanggil jika inisialisasi Ad Placement API tertunda atau gagal dimuat sepenuhnya. Untuk memastikan game dimulai
secara tepat waktu, sebaiknya siapkan waktu tunggu. Jika menerima
callback onReady()
, Anda dapat memanggil adBreak() untuk menempatkan iklan; jika tidak, Anda
dapat melewati panggilan iklan dan melanjutkan pemuatan game.
Contoh berikut menyertakan waktu tunggu, dan mirip dengan logika yang diterapkan oleh penempatan preroll:
...
<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>