מיקומי מודעות

במדריך הזה מוסבר איך להשתמש בתכונה 'מיקומי מודעות' בפלאגין של Google Mobile Ads Unity כדי ליצור ולהציג מודעות לאפליקציה.

דרישות מוקדמות

מפעילים את Google Mobile Ads SDK

לפני שטוענים מודעות, צריך להפעיל את Mobile Ads SDK על ידי התקשרות אל MobileAds.Initialize() עם קריאה חוזרת (callback) של Action<InitializationStatus>. צריך לעשות את זה רק פעם אחת, רצוי בזמן השקת האפליקציה.

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize the Mobile Ads SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

יצירת מיקומי מודעות

השלב הראשון בהצגת באנר במודעות Google לנייד הוא ליצור ולהגדיר מיקום מודעה. אפשר לבחור מיקום מודעה בפורמט של מודעת באנר, מעברון או מתגמלת בקטע נכסים > מודעות Google לנייד > מיקומי מודעות ב-Unity Editor. לאחר מכן, שלושה מיקומי מודעות להדגמה מוגדרים ומוכנים לשימוש.

כדי להוסיף מיקום מודעה חדש, לוחצים על הלחצן Add New Placement (הוספת מיקום חדש) שבסוף הרשימה. אפשר להגדיר את מיקום המודעה בתצוגת הבודק.

הגדרת מיקום המודעה

לכל מיקום יש את המאפיינים הבאים:

שם מיקום
שם המיקום. משמש לזיהוי מיקומים בעת הגדרת מודעות בסצנה.
פורמט מודעה
מודעת באנר, מודעות מתגמלות, מודעות מעברון. סוג המודעה.
מזהה יחידת מודעות
יש לספק את מזהה היחידה של מודעות הבאנר ל-Android ול-iOS. עליכם לספק לפחות מזהה אחד של יחידת מודעות.
קבוע לאורך סצנות
כשהאפשרות מסומנת, הבאנר ימשיך להופיע במסך ללא קשר לשינויי הסצנה (אותה התנהגות כמו ב-DontDestroyOnLoad).
טעינה אוטומטית מופעלת
כשהאפשרות הזו מסומנת, מודעה תיטען באופן אוטומטי כשסצנה שמשויכת למיקום המודעה נטענת.

בצילום המסך הבא מוצגת דוגמה למיקום מודעה בשם הבאנר המדהים שלי.

הוספת AdGameObject לסצנה

אפשר להוסיף AdGameObject לפורמטים של מודעות באנר, מודעות מעברון או מודעות מתגמלות, באמצעות GameObject > מודעות Google לנייד ב-Unity Editor. בחרו את הפורמט שבו תרצו להוסיף מיקום לסצנה הפעילה.

לאחר הוספת AdGameObject לסצנה, יוצג GameObject שמייצג את המודעה בתצוגה ההיררכית של Unity Editor.

כדי לשנות את שם המיקום, משנים את השם של ה-GameObject עצמו. בצילום המסך הבא מוצגת דוגמה ל-AdGameObject בשם מודעת באנר.

הגדרות AdGameObject

ניתן להגדיר את AdGameObject בסצנה מתוך התצוגה Inspector בהגדרות של הרכיב Ad Game Object (סקריפט).

מיקום מודעה

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

הגדרות אישיות של BannerAdGameObject (באנר בלבד)

  • גודל – בוחרים את גודל הבאנר שבו רוצים להשתמש.
    • יש עוד כמה אפשרויות לשימוש במודעת באנר מותאמת מעוגנת:
      • כיוון – בחירת כיוון המכשיר לחישוב גובה המודעה.
      • שימוש ברוחב מסך מלא – כשמסמנים את התיבה הזו, הבאנר ימלא את רוחב המסך המלא. אפשר להתאים את % רוחב המסך (50~99%) אם מבטלים את הסימון של האפשרות Use full screenwidth.
    • בהתאמה אישית אפשר להגדיר את הרוחב והגובה של מודעת הבאנר.
  • מיקום המודעה בדף – בוחרים את המיקום שבו רוצים להציב את הבאנר.

התקשרות חזרה

ניתן להטמיע פונקציות שמתאימות לקריאות חוזרות של מודעות. לדוגמה, אם רוצים לטפל במקרים שבהם הטעינה של מודעת באנר נכשלת:

  1. יוצרים פונקציה שתואמת לקריאה החוזרת של המודעה.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. צרפו את הסקריפט שמכיל את הפונקציה שלמעלה לכל GameObject בסצנה.

  3. לוחצים על הלחצן +, גוררים ומשחררים את ה-GameObject שצירפתם אליו את הסקריפט.

  4. בוחרים את הפונקציה שרוצים לקשר לקריאה החוזרת של המודעה. בקריאות החוזרות של המודעה עם הפרמטרים, בוחרים את הפונקציה שמקבלת את המשתנה הדינמי כדי לקבל את ערך הפרמטר מה-SDK.

שימוש ב-AdGameObject מהסקריפט

מורידים את המופע של AdGameObject מהסקריפט

לכל AdGameObject האובייקטים מוגדרת שיטת הנוחות LoadAd(). הפעולה הזו תטען מודעה עם שדה AdRequest פשוט ולא ממוקד. כדי להחיל טירגוט, צריך להשתמש בפונקציה LoadAd(AdRequest adRequest) באמצעות בקשה להצגת מודעה שהגדרתם.

כדי למצוא את המופע של AdGameObject, משתמשים בשיטה הבאה לכל פורמט:

MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

לאובייקט BannerAdGameObject שמוחזר יש גם שיטות נוחות Hide() ו-Show().

פרסומת מרווח ביניים

MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

לאובייקט InterstitialAdGameObject שמוחזר יש שיטת נוחות ShowIfLoaded().

ההטבה הופעלה

MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

לאובייקט RewardedAdGameObject שמוחזר יש שיטת נוחות ShowIfLoaded().

לדוגמה, אפשר לקבל מכונה של BannerAdGameObject ולטעון אותה באופן הבא:

using UnityEngine;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class BannerTestScript : MonoBehaviour
{
    BannerAdGameObject bannerAd;

    void Start()
    {
        bannerAd = MobileAds.Instance
            .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

        bannerAd.LoadAd();
        ...
    }
    ...
}

אם יש BannerAdGameObject בשם BannerAd, אפשר לראות מופע שלו כזה:

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

גישה לאובייקט המודעה הבסיסי ב-AdGameObject

הקטעים האלה מדגימים איך לגשת לאובייקט המודעה הבסיסי שמשויך ל-AdGameObject.

BannerAdGameObject bannerAd = MobileAds.Instance
    .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

// Access BannerView object
BannerView bannerView = bannerAd.BannerView;

פרסומת מרווח ביניים

InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
    .GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;

ההטבה הופעלה

RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
    .Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;

דוגמאות

הצגה של מודעת מעברון

הנה דוגמה לאופן שבו אפשר להגדיר משחק להיטען ולהציג מודעת מעברון באמצעות AdGameObject.

מוסיפים InterstitialAdGameObject לסצנה ומפעילים את התכונה טעינה אוטומטית מופעלת, כדי שהמודעה תיטען באופן אוטומטי כשהסצנה נטענת.

לאחר מכן, ודאו שהפעלתם את ה-SDK לפי השלבים הבאים. שימו לב שהתכונה טעינה אוטומטית ב-AdGameObject לא תפעל אם תשכחו להפעיל את ה-SDK.

לאחר מכן, אפשר להציג מודעת מעברון בין מעבר בין מסכים על ידי קריאה לפונקציה InterstitialAdGameObject.ShowIfLoaded(). הקוד הבא מציג דוגמה להצגת מודעת מעברון בין מעבר בין סצנות.

using UnityEngine;
using UnityEngine.SceneManagement;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAd<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }

    public void OnClickShowGameSceneButton()
    {
        // Display an interstitial ad
        interstitialAd.ShowIfLoaded();

        // Load a scene named "GameScene"
        SceneManager.LoadScene("GameScene");
    }
}

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

אם רוצים לבקש מודעה באופן ידני, צריך להשבית את התכונה טעינה אוטומטית בכלי לבדיקת מיקומי מודעות ולהפעיל במקום זאת את הפונקציה InterstitialAdGameObject.LoadAd(). קטע הקוד הבא מראה כיצד לבקש מודעה באופן ידני.

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAdGameObject<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("MobileAds initialized");

            // Load an interstitial ad after the SDK initialization is complete
            interstitialAd.LoadAd();
        });
    }
    ...
}

איך לטפל במצב הלחצן 'צפייה במודעה מתגמלת'

דוגמה לאופן שבו מפעילים לחצן 'צפייה במודעה מתגמלת' באמצעות מיקומי מודעות.

מוסיפים לסצנה רכיב GameObject של לחצן (בשם button) לסצנה, שישמש להצגת מודעה מתגמלת. הלחצן הזה יהיה זמין רק כשמודעה מתגמלת תהיה זמינה.

בשיטה Start(), משנים את המצב הפעיל של הלחצן ל-false. כך הלחצן ייעלם מהסצנה.

public class MainScene : MonoBehaviour
{
    ...
    void Start()
    {
        GameObject.Find("Button").SetActive(false);
        ...
    }
}

מוסיפים RewardedAdGameObject לסצנה ובוחרים את מיקום המודעה מודעה מתגמלת של AdMob מהתפריט הנפתח.

בקטע Callbacks בכלי לבדיקת RewardedAdGameObject, לוחצים על הלחצן + מ-On Ad Loaded() כדי להפעיל את הפונקציה קריאה של הפונקציה אחרי טעינת מודעה מתגמלת.

גוררים את ה-GameObject שהוספתם בשלב הקודם ומשחררים אותו בשדה None (Object). בתפריט הנפתח, בוחרים פונקציה שרוצים לקרוא לה. לוחצים על No Function > GameObject > SetActive(bol), ומסמנים את התיבה כדי ש-true יישלח כפרמטר (נקרא SetActive(true)).

בקטע הזה של ההתקשרות חזרה, אפשר גם לקשר אירוע שייקרא כשהאירוע RewardedAd.OnUserEarnedReward יופעל. פרטים נוספים זמינים בקטע הזה.

בשלב הבא, יוצרים את הלחצן להצגת מודעה מתגמלת כשלוחצים עליה. בקטע On Click() ב-Callbacks בכלי לבדיקת הלחצנים, לוחצים על הלחצן +, גוררים ומשחררים את אובייקט המשחק של מיקום המודעה המתגמלת (בדוגמה הזו, שנקרא מודעה מתגמלת) אל השדה ללא (אובייקט).

לאחר מכן, מחברים את הפונקציה RewardedAdGameObject.ShowIfLoaded() לקריאה החוזרת (callback) On Click().

לבסוף, חשוב להפעיל את ה-SDK. קטע הקוד הבא הוא הקוד המלא לסצנה שבה נעשה שימוש בדוגמה הזו:

using UnityEngine;

using GoogleMobileAds.Api;

public class MainScene : MonoBehaviour
{
    void Start()
    {
        GameObject.Find("Button").SetActive(false);

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }
}

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

הגדרת קריאה חוזרת (callback) של תגמול ל-RewardAdGameObject

הדוגמה הבאה מראה איך להגדיר קריאה חוזרת (callback) מתגמלת למיקום של מודעה מתגמלת, כדי לתת תגמול למשתמש כשמתבצעת קריאה לפונקציית קריאה חוזרת.

יוצרים סקריפט חדש ומגדירים פונקציה שמקבלת את Reward כפרמטר באופן הבא.

using UnityEngine;
using GoogleMobileAds.Api;

class RewardedTestScript : MonoBehaviour {
    ...
    public void OnUserEarnedReward(Reward reward) {
        Debug.Log("OnUserEarnedReward: reward=" +
            reward.Type + ", amount=" + reward.Amount);
    }
    ...
}

מחברים את הסקריפט RewardedTestScript לכל GameObject (למעט GameObject של מיקום מודעה) בסצנה. בדוגמה הזו, הוא מצורף לאובייקט המשחק הראשי של המצלמה.

הוספת RewardedAdGameObject לסצנה. לאחר מכן, בקטע Callbacks בכלי לבדיקת RewardedAdGameObject, לוחצים על הלחצן + בקטע On User-Revenue Reward (Reward) כדי להפעיל את הפונקציה קריאה כשנותנים תגמול למשתמש.

גוררים את אובייקט המשחק הראשי של המצלמה שהוספתם בשלב הקודם ומשחררים אותו בשדה None (Object). מהתפריט הנפתח בוחרים פונקציה שרוצים לקרוא לה. לוחצים על No Function > Reward TestScript > OnUserProfitedReward.

אחרי שמפעילים את הפרויקט וצופים במודעה מתגמלת, RewardedTestScript.OnUserEarnedReward() יופעל כשמתוגמלים על האינטראקציה עם המודעה.