במדריך הזה מוסבר איך להשתמש בתוסף למודעות מותאמות כדי להטמיע מודעות מותאמות של AdMob באפליקציה ל-Unity, וגם כמה נקודות חשובות שכדאי להביא בחשבון בדרך.
מודעות מותאמות הן מודעות שמשתלבות היטב בחוויית המשתמש בהקשר שבו הן מוצגות, גם מבחינת הפורמט וגם מבחינת הפונקציונליות. המודעות האלה תואמות גם לעיצוב החזותי של האפליקציה שבה הן מוצגות. הפורמט של מודעות מותאמות ב-AdMob מאפשר לבעלי אפליקציות להציג מודעות שמשתלבות בצורה חלקה בתוכן. אפשר להשתמש בטכנולוגיה הזו כדי להטמיע מודעות עם רמת התאמה גבוהה מאוד לתוכן שמנצלות את מלוא היתרונות של קוד ה-Native באפליקציות של Unity.
מודעות מותאמות מוצגות באמצעות אותם סוגי GameObjects
שבהם אתם כבר יוצרים את האפליקציות שלכם, ואפשר לעצב אותן כך שיתאים לעיצוב החזותי של חוויית המשתמש שבה הן מוצגות. כשמודעה מותאמת נטענת, האפליקציה מקבלת אובייקט מקומי שמכיל את הנכסים שלה, ואפליקציית Unity (ולא ה-SDK) מציגה אותם.
דרישות מוקדמות
- פלאגין Google Mobile Ads Unity בגרסה 7.0.0 ואילך.
- קוראים את המדריך לתחילת העבודה.
- מורידים ומתקינים את תוסף המודעות המותאמות.
טעינת פורמטים של מודעות מותאמות
מודעות מותאמות נטענות דרך הכיתה AdLoader
. יש לה מחלקה AdLoader.Builder
משלה, שאפשר להתאים אישית במהלך היצירה. השיטה ForNativeAd()
מגדירה את AdLoader לטיפול במודעות מותאמות.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
רישום לאירועי מודעות של AdLoader
כדי לקבל התראה כשמודעה מותאמת נטענת או לא נטענת בהצלחה, צריך להוסיף משתמשים למחלקה AdLoader
באירועים שמפורטים בהמשך.
OnNativeAdLoaded
הפונקציה מופעלת כשמודעה רגילה נטענת בהצלחה. כדי לגשת למודעה שנטענה, צריך להקצות גישה לאירוע הזה.
OnAdFailedToLoad
האירוע מופעל כשלא ניתן לטעון מודעה מותאמת.
טעינת המודעה
אחרי שתסיימו ליצור את 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 יהיה קל לראות את המודעה, לכן חשוב לבחור תמונות וצבעי רקע בהתאם.
רישום אובייקטים מסוג GameObject לנכס מודעה
כדי שנכס המודעה יוצג באפליקציה שלכם ב-Unity, עליכם לרשום את GameObject
. אם הרישום מצליח, השיטה ששימשה לרישום GameObject
מחזירה bool
. עבור List<GameObject>
, השיטה מחזירה int
שמציין את מספר ה-GameObject
שנרשמו בהצלחה.
אם הרישום של נכס שמצורף למודעה נכשל, המערכת לא תזהה חשיפות וקליקים על המודעה המותאמת המתאימה.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
ל-GameObject
שמירום לנכס הפרסום חייב להיות רכיב Collider מעוגל שמייצג את הגודל והצורה של ה-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;
}