این راهنما به شما نشان میدهد که چگونه از افزونه تبلیغات بومی برای پیادهسازی تبلیغات بومی AdMob در یک برنامه Unity استفاده کنید، و همچنین برخی از موارد مهمی را که باید در این راه در نظر بگیرید.
تبلیغات بومی هم با شکل و هم عملکرد تجربه کاربری که در آن قرار گرفته اند مطابقت دارند. آنها همچنین با طراحی بصری برنامه ای که در آن زندگی می کنند مطابقت دارند. قالب تبلیغات بومی AdMob به ناشران این امکان را می دهد تا تبلیغاتی را ارائه دهند که با محتوا یکپارچه هستند. میتوانید از این فناوری برای پیادهسازی رندرهای بسیار سفارشی استفاده کنید که از کد بومی در برنامههای 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 به راحتی دیده شود، بنابراین رنگ های پس زمینه و تصاویر را به طور مناسب انتخاب کنید.
GameObjects را برای دارایی تبلیغاتی ثبت کنید
شما باید GameObject
ثبت کنید تا دارایی تبلیغاتی در برنامه Unity شما نمایش داده شود. اگر ثبت نام موفقیت آمیز باشد، روشی که برای ثبت 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;
}