هنگامی که صفحه حاوی بازی شما برای اولین بار بارگیری می شود، تعدادی رویداد ناهمزمان رخ می دهد.
منطق بازی شما بارگیری میشود، برچسب تبلیغات بارگیری میشود، API قرار دادن آگهی شروع به تنظیم اولیه میکند، و تبلیغات را میتوان از قبل بارگیری کرد. در نتیجه، اگر خیلی زود پس از بارگذاری صفحه، adBreak()
را فراخوانی کنید، این احتمال وجود دارد که API مقداردهی اولیه نشده باشد یا تبلیغات از قبل بارگیری نشده باشد. اگر API مقداردهی اولیه نشده باشد، تماس با شکست مواجه میشود، و اگر یک adBreakDone()
را ثبت کرده باشید، breakStatus روی breakStatus
تنظیم notReady
.
اگر نیاز دارید که منطق بازی خود را با مقداردهی اولیه Ad Placement API همگام کنید، می توانید از callback onReady()
به adConfig()
)adConfig استفاده کنید.
onReady()
توسط Ad Placement API فراخوانی می شود که:
- برچسب آگهی بارگیری شده است،
- Ad Placement API بارگیری و مقداردهی اولیه شده است و
- تبلیغات از قبل بارگیری شده اند—اگر درخواست پیش بارگیری با استفاده از
adConfig()
داشته باشید
در این مرحله Ad Placement API به طور کامل مقداردهی اولیه می شود. می توانید adBreak()
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>
نکته : رایجترین مورد استفاده برای فراخوانی adBreak()
خیلی زود پس از بارگذاری صفحه، پیادهسازی یک پیشپرول است. ما اکیداً توصیه میکنیم که به جای تلاش برای ایجاد نوع خود با استفاده از روشهایی که در اینجا توضیح داده شده است، از یک نوع قرار دادن پیش preroll
استفاده کنید.
preroll
به طور خودکار تمام منطق پیش بارگذاری و زمان بندی مورد نیاز را پیاده سازی می کند. اگر از preroll با بازی خود استفاده می کنید، نیازی به استفاده از onReady()
. درباره preroll بیشتر بدانید
تایم اوت ها
اگر راهاندازی API Ad Placement به تأخیر بیفتد یا به طور کامل بارگیری نشود، تضمین نمیشود که onReady()
فراخوانی شود. برای اطمینان از اینکه بازی شما به موقع شروع می شود، ممکن است بخواهید یک تایم اوت تنظیم کنید. اگر پاسخ تماس 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>