רצף פעולות משחק באופן ידני עם onReady

כאשר הדף המכיל את המשחק שלכם נטען לראשונה, מתרחשים מספר אירועים אסינכרוניים.

הלוגיקה של המשחק נטענת, תג המודעות נטען, ה-Ad Placement API מתחיל לעבוד, ואפשר לטעון מראש את המודעות. לכן, אם תקראו ל-adBreak() זמן קצר לאחר טעינת הדף, יכול להיות שה-API לא הופעל או שהמודעות לא נטענו מראש. אם ה-API לא הפעיל את הקריאה, אם רשמתם קריאה חוזרת ל-adBreakDone(), הערך בשדה breakStatus יהיה notReady.

אם אתם צריכים לסנכרן את לוגיקת המשחק עם הפעלת ה-API של מיקום המודעה, תוכלו להשתמש בקריאה החוזרת (onReady()) ל-adConfig().

onReady() נקרא על ידי Ad Placement API כאשר:

  • תג המודעה נטען,
  • ממשק ה-API של מיקום המודעה נטען ואותחל, וכן
  • המודעות נטענו מראש – אם ביקשת טעינה מראש באמצעות adConfig()

בשלב זה, ממשק ה-API של Ad Placement מופעל באופן מלא. ניתן להתקשר אל 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(). מידע נוסף על מודעת קדם-סרטון

זמן קצוב לתפוגה

לא מובטח שקריאה ל-onReady() תתבצע אם האתחול של Ad Placement API יתעכב או לא ייטען במלואו. כדי להגדיר שהמשחק יתחיל מיד, אפשר להגדיר זמן קצוב לתפוגה. אם קיבלת את הקריאה החוזרת (onReady()) לקריאה חוזרת (callback), תוכלו לקרוא ל-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>