जब आपके गेम वाला पेज पहली बार लोड होता है, तब कई एसिंक्रोनस इवेंट होते हैं.
आपके गेम का लॉजिक लोड होता है, विज्ञापन टैग लोड होता है, Ad Placement API शुरू होता है, और विज्ञापनों को पहले से लोड किया जा सकता है. इसलिए, अगर पेज लोड होने के तुरंत बाद adBreak()
कॉल किया जाता है, तो हो सकता है कि एपीआई शुरू न हुआ हो या विज्ञापन प्रीलोड न हुए हों. अगर एपीआई ने कॉल शुरू नहीं किया है, तो कॉल नहीं किया जा सकेगा. अगर आपने adBreakDone()
कॉलबैक रजिस्टर किया है, तो breakStatus
को notReady
पर सेट कर दिया जाएगा.
अगर आपको AdPlacement API के शुरू होने के साथ-साथ अपने गेम लॉजिक को सिंक करना है, तो onReady()
कॉलबैक का इस्तेमाल करके adConfig()
.
Ad Placement API, onReady()
को तब कॉल करता है, जब:
- विज्ञापन का टैग लोड हो गया है,
- Ad Placement 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>
ध्यान दें: पेज लोड होने के तुरंत बाद adBreak()
को कॉल करने का सबसे सामान्य तरीका, प्रीरोल लागू करना है. हमारा सुझाव है कि आप यहां बताए गए तरीकों का इस्तेमाल करके, अपना खुद का प्लेसमेंट टाइप बनाने के बजाय preroll
प्लेसमेंट टाइप का इस्तेमाल करें.
preroll
, ज़रूरी प्रीलोडिंग और टाइमआउट लॉजिक को अपने-आप लागू करता है. अगर गेम के साथ प्रीरोल का इस्तेमाल किया जाता है, तो onReady()
का इस्तेमाल करने की ज़रूरत नहीं है. प्रीरोल के बारे में ज़्यादा जानें
टाइम आउट की संख्या
अगर Ad Placement API को शुरू करने में देरी होती है या वह पूरी तरह से लोड नहीं होता है, तो onReady()
को कॉल किए जाने की गारंटी नहीं है. यह पक्का करने के लिए कि आपका गेम समय पर शुरू हो, टाइम आउट सेट अप किया जा सकता है. अगर आपको onReady()
कॉल मिलता है, तो विज्ञापन दिखाने के लिए adBreak() को कॉल करें. अगर आपको कॉल नहीं मिलता है, तो विज्ञापन दिखाने के लिए 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>