เมื่อหน้าเว็บที่มีเกมโหลดเป็นครั้งแรก จะมี เหตุการณ์แบบไม่พร้อมกันเกิดขึ้นหลายอย่าง
ตรรกะของเกมโหลด แท็กโฆษณาโหลด API ตำแหน่งโฆษณาเริ่ม
เริ่มต้น และสามารถโหลดโฆษณาล่วงหน้าได้ ดังนั้น หากคุณเรียกใช้ adBreak()
หลังจากหน้าเว็บโหลดไม่นาน มีโอกาสที่ API อาจยังไม่ได้
เริ่มต้น หรือโฆษณายังโหลดล่วงหน้าไม่เสร็จ หาก API ยังไม่ได้
เริ่มต้นการโทร การโทรจะล้มเหลว และหากคุณลงทะเบียนadBreakDone()
การเรียกกลับไว้ ระบบจะตั้งค่าbreakStatus
เป็น notReady
หากต้องการซิงค์ตรรกะของเกมกับการเริ่มต้นใช้งาน Ad
Placement API คุณสามารถใช้onReady()
การเรียกกลับไปยังadConfig()
ได้
onReady()
จะเรียกใช้โดย API ตำแหน่งโฆษณาในกรณีต่อไปนี้
- แท็กของโฆษณาโหลดแล้ว
- API ตำแหน่งโฆษณาโหลดและเริ่มต้นแล้ว และ
- โฆษณาโหลดล่วงหน้าเสร็จแล้ว หากคุณขอโหลดล่วงหน้าโดยใช้
adConfig()
ตอนนี้ Ad Placement API ได้รับการเริ่มต้นอย่างสมบูรณ์แล้ว คุณสามารถเรียกใช้
adBreak()
และจะไม่ได้รับสถานะ notReady
แต่เช่นเคย adBreak()
อาจยังไม่แสดงโฆษณา (เช่น ไม่มีโฆษณาพร้อมใช้งาน)
ตัวอย่างต่อไปนี้แสดงให้เห็นการใช้ 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>
หมายเหตุ: Use Case ที่พบบ่อยที่สุดในการเรียกใช้ adBreak()
ทันทีหลังจากโหลดหน้าเว็บคือการใช้โฆษณาก่อนวิดีโอ เราขอแนะนำเป็นอย่างยิ่งให้คุณใช้ตําแหน่งโฆษณาประเภท preroll
แทนที่จะพยายามสร้างตําแหน่งโฆษณาของคุณเองโดยใช้วิธีการที่อธิบายไว้ที่นี่
preroll
จะใช้ตรรกะการโหลดล่วงหน้าและตรรกะการหมดเวลาที่จำเป็นทั้งหมดโดยอัตโนมัติ หากใช้โฆษณาที่เล่นก่อนเนื้อหากับเกม คุณไม่จำเป็นต้องใช้ onReady()
ดูข้อมูลเพิ่มเติมเกี่ยวกับโฆษณาก่อนวิดีโอ
หมดเวลา
onReady()
ไม่รับประกันว่าจะเรียกใช้หากการเริ่มต้น Ad Placement API
ล่าช้าหรือโหลดไม่สำเร็จทั้งหมด คุณอาจต้องตั้งค่าการหมดเวลาเพื่อให้เกมเริ่มได้ทันเวลา หากได้รับ
onReady()
การเรียกกลับ คุณจะเรียกใช้ adBreak() เพื่อวางโฆษณาได้ มิฉะนั้นคุณ
จะข้ามการเรียกโฆษณาและโหลดเกมต่อได้
ตัวอย่างต่อไปนี้มีไทม์เอาต์และคล้ายกับตรรกะ ที่ใช้โดยตําแหน่งโฆษณาที่เล่นก่อนวิดีโอ
...
<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>