שנתחיל?

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

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

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

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

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

טעינת פורמטים של מודעות מותאמות

מודעות מותאמות נטענות דרך הכיתה AdLoader, שבה יש כיתה AdLoader.Builder שמותאמת אישית במהלך היצירה. השיטה ForNativeAd() מגדירה את AdLoader לטיפול במודעות מותאמות.

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
}

הרשמה לאירועי מודעה של AdLoader

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

OnNativeAdLoaded

מופעל כשמודעה מותאמת נטענת. כדי לגשת למודעה שנטענה, צריך להעניק גישה לאירוע הזה.

OnAdנכשללטעינה

מופעלת כשמודעה מותאמת לא נטענת.

טעינת המודעה

אחרי שאתם מסיימים ליצור AdLoader, תוכלו לקרוא לשיטה LoadAd() כדי לבקש מודעה:

adLoader.LoadAd(new AdRequest.Builder().Build());

שילוב הבקשות למודעות

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

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
    adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
    adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

טיפול בטעינות מודעות שנכשלו

האירוע OnAdFailedToLoad הוא מסוג EventHandle<AdFailedToLoadEventArgs>. ניתוח הסיבה לכשל בטעינת המודעה מהאירוע הזה מוצג למטה.

private void RequestNativeAd() {
    ...
    adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}

private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
    Debug.Log("Native ad failed to load: " + args.Message);
}

הצגה של מודעה מותאמת

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

ניהול עומס המודעות

האירוע OnNativeAdLoaded הוא מסוג EventHandler<NativeAdEventArgs>. ניתן לאחזר את המודעה, הכלולה באובייקט NativeAd, כפי שמפורט ב-NativeAdEventArgs:

private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
}

אחזור נכסים של מודעות מותאמות

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

private bool nativeAdLoaded;
private NativeAd nativeAd;

void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for the icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        // Get string for headline asset of native ad.
        string headline = this.nativeAd.GetHeadlineText();
    }
}

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}

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

  • GetStarRating()
  • GetStore()
  • GetPrice()
  • GetAdvertiser()
  • GetIconTexture()

נכס AdChoices

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

רישום GameObjects עבור נכס מודעה

יש לרשום את GameObject כדי שנכס המודעה יוצג באפליקציית ה-Unity. אם הרישום יושלם בהצלחה, השיטה שמשמשת לרישום GameObject תחזיר bool. עבור List<GameObject>, השיטה מחזירה int את המספר הרשום GameObject.

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

if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
    // Handle failure to register the icon ad asset.
}

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

בקטע הקוד שבהמשך, BoxCollider מתווסף ל-GameObject שמשתמש ב-TextMesh כדי להציג את הנכס של מודעת הכותרת של מודעה מותאמת. ברגע שBoxCollider מצורף ל-GameObject, הוא יוגדל באופן אוטומטי כך שיתאים לטקסט של הרכיב TextMesh.

// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;

// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;

// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();

הדגמה

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

private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
        icon.transform.position = new Vector3(1, 1, 1);
        icon.transform.localScale = new Vector3(1, 1, 1);
        icon.GetComponent<Renderer>().material.mainTexture = iconTexture;

        // Register GameObject that will display icon asset of native ad.
        if (!this.nativeAd.RegisterIconImageGameObject(icon))
        {
            // Handle failure to register ad asset.
        }
    }
}
...

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}