این راهنما به شما نشان میدهد که چگونه از ویژگی Ad Placements افزونه Google Mobile Ads Unity برای ایجاد و نمایش تبلیغات برای برنامه خود استفاده کنید.
پیشنیازها
یونیتی ۲۰۱۷.۴ یا بالاتر.
نسخه اولیه افزونه GMA Unity را دانلود و وارد کنید.
افزونه Unity Ads Mobile Ads را راهاندازی کنید
قبل از بارگذاری تبلیغات، افزونه Google Mobile Ads Unity را با فراخوانی MobileAds.Initialize() و با فراخوانی Action<InitializationStatus> مقداردهی اولیه کنید. این کار فقط یک بار، در حالت ایدهآل هنگام اجرای برنامه، باید انجام شود.
using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
...
public void Start()
{
// Initialize Google Mobile Ads Unity Plugin.
MobileAds.Initialize((initStatus) =>
{
// SDK initialization is complete
});
...
}
}
ایجاد جایگاههای تبلیغاتی
اولین قدم برای نمایش بنر با تبلیغات موبایلی گوگل، ایجاد و پیکربندی یک جایگاه تبلیغ است. میتوانید یک جایگاه تبلیغ با فرمت بنر، بینابینی یا پاداشی را از Assets > Google Mobile Ads > Ad Placements در ویرایشگر Unity انتخاب کنید. سپس سه جایگاه تبلیغ آزمایشی تنظیم و آماده استفاده میشوند.


برای افزودن یک جایگاه تبلیغ جدید، روی دکمه «افزودن جایگاه جدید» در انتهای لیست کلیک کنید. میتوانید جایگاه تبلیغ را از نمای Inspector پیکربندی کنید.
پیکربندی محل قرارگیری تبلیغات
هر جایگاه قرارگیری دارای ویژگیهای زیر است:
- نام محل قرارگیری
- نام جایگاه. برای شناسایی جایگاهها هنگام تنظیم تبلیغات در یک صحنه استفاده میشود.
- قالب آگهی
- بنر، جایزهدار، بینابینی. نوع تبلیغ.
- شناسه واحد تبلیغات
- شناسه واحد تبلیغات بنری خود را برای اندروید و iOS ارائه دهید. شما باید حداقل یک شناسه واحد تبلیغاتی ارائه دهید.
- پایدار در صحنههای مختلف
- وقتی علامت زده شود، بنر صرف نظر از تغییرات صحنه، روی صفحه باقی میماند (همان رفتاری که
DontDestroyOnLoadانجام داد). - بارگذاری خودکار فعال شد
- با علامت زدن این گزینه، وقتی صحنهای مرتبط با محل قرارگیری تبلیغ بارگذاری شود، تبلیغ به طور خودکار بارگذاری میشود.
تصویر زیر نمونهای از یک جایگاه تبلیغاتی با نام «بنر فوقالعاده من» را نشان میدهد.

افزودن یک شیء AdGameObject به صحنه
شما میتوانید با استفاده از GameObject > Google Mobile Ads در ویرایشگر Unity، یک AdGameObject برای قالبهای بنر، بینابینی یا پاداشی به صحنه خود اضافه کنید. قالب مورد نظر برای افزودن جایگاه به صحنه فعال را انتخاب کنید.

زمانی که یک AdGameObject به صحنه اضافه کردید، یک GameObject که نشاندهندهی تبلیغ است را در نمای سلسله مراتبی ویرایشگر یونیتی مشاهده خواهید کرد.

شما میتوانید نام محل قرارگیری را با تغییر نام خود GameObject تغییر دهید. تصویر زیر نمونهای از یک AdGameObject با نام Banner Ad را نشان میدهد.

تنظیمات شیء AdGame
شما میتوانید AdGameObject را در صحنه خود از نمای Inspector در تنظیمات کامپوننت Ad Game Object (Script) پیکربندی کنید.
- قرار دادن آگهی
محل قرارگیری تبلیغ را از فهرست کشویی محلهای قرارگیری پیکربندیشده انتخاب کنید. این فهرست فقط واحدهای تبلیغاتی برای قالب صحیح را خواهد داشت. به عنوان مثال، برای اشیاء بازی بنر تبلیغاتی، فهرست کشویی فقط محلهای قرارگیری بنر تبلیغاتی پیکربندیشده را نشان میدهد.

- پیکربندی
BannerAdGameObject(فقط بنر)
- اندازه - اندازه بنری را که میخواهید استفاده کنید انتخاب کنید.
- بنر تطبیقی لنگر انداخته چند گزینه دیگر نیز ارائه میدهد:
- جهت - جهت دستگاه مورد استفاده برای محاسبه ارتفاع تبلیغ را انتخاب کنید.
- استفاده از عرض تمام صفحه - وقتی علامت زده شود، بنر تمام عرض صفحه را اشغال میکند. اگر علامت گزینه استفاده از عرض تمام صفحه را بردارید، میتوانید درصد عرض صفحه (50 تا 99 درصد) را تنظیم کنید.
- سفارشیسازی به شما امکان میدهد عرض و ارتفاع بنر را تعیین کنید.
- بنر تطبیقی لنگر انداخته چند گزینه دیگر نیز ارائه میدهد:
- موقعیت تبلیغ - موقعیتی را که بنر باید در آن قرار گیرد انتخاب کنید.
تماسهای برگشتی
شما میتوانید توابعی را پیادهسازی کنید که مربوط به فراخوانیهای تبلیغاتی هستند. برای مثال، اگر میخواهید زمانی که یک بنر تبلیغاتی بارگذاری نمیشود را مدیریت کنید:
یک تابع سازگار با فراخوانی تبلیغ ایجاد کنید.
public void OnBannerAdFailedToLoad(string reason) { Debug.Log("Banner ad failed to load: " + reason); }اسکریپتی که شامل تابع فوق است را به هر شیء بازی (GameObject) در صحنه پیوست کنید.
روی دکمه + کلیک کنید، سپس شیء بازی (GameObject) که اسکریپت را به آن پیوست کردهاید را بکشید و رها کنید.

تابعی را که میخواهید به تابع فراخوانی تبلیغ (ad callback) لینک دهید، انتخاب کنید. برای تابعهای فراخوانی تبلیغ پارامتری، تابعی را انتخاب کنید که متغیر پویا را بپذیرد تا بتوانید مقدار پارامتر را از 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
این قطعه کدها نحوه دسترسی به شیء تبلیغ (ad object) مرتبط با 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 به صحنه اضافه کنید و ویژگی Auto Load Enabled را فعال کنید تا تبلیغ هنگام بارگذاری صحنه به طور خودکار بارگذاری شود.
در مرحله بعد، مطمئن شوید که SDK را با استفاده از دستور زیر مقداردهی اولیه کردهاید. توجه داشته باشید که اگر مقداردهی اولیه SDK را فراموش کنید، ویژگی بارگذاری خودکار در AdGameObject کار نخواهد کرد.
سپس با فراخوانی تابع 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");
}
}
از آنجایی که ویژگی بارگذاری خودکار را در محل قرارگیری تبلیغ فعال کردهاید، نیازی به درخواست صریح تبلیغ ندارید. وقتی صحنه تغییر میکند، در صورت آماده بودن، یک تبلیغ بینابینی ظاهر میشود.
اگر میخواهید به صورت دستی درخواست تبلیغ دهید، ویژگی Auto Load را از ad placements inspector غیرفعال کنید و به جای آن تابع 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();
});
}
...
}
مدیریت وضعیت دکمهی «تماشای یک تبلیغ جایزهدار»
در اینجا مثالی از نحوه فعال کردن دکمه «تماشای یک تبلیغ جایزهدار» با استفاده از مکانهای قرارگیری تبلیغات ارائه شده است.
یک شیء بازی دکمهای (در این مثال با نام Button ) به صحنه اضافه کنید که برای نمایش یک تبلیغ جایزهدار استفاده خواهد شد. ما این دکمه را فقط زمانی در دسترس قرار میدهیم که یک تبلیغ جایزهدار در دسترس باشد.

در متد Start() ، وضعیت فعال دکمه (Button) را به false تغییر دهید. این کار باعث میشود دکمه از صحنه ناپدید شود.
public class MainScene : MonoBehaviour
{
...
void Start()
{
GameObject.Find("Button").SetActive(false);
...
}
}
یک شیء RewardedAdGameObject به صحنه اضافه کنید و از منوی کشویی، گزینه AdMob Demo Rewarded Ad Placement را انتخاب کنید.
در بخش Callbacks در بازرس RewardedAdGameObject ، روی دکمه + از On Ad Loaded() کلیک کنید تا فراخوانی تابع هنگام بارگذاری یک تبلیغ پاداشدار فعال شود.

شیء بازی دکمهای (Button GameObject) را که در مرحله قبل اضافه کردید، به فیلد None (شیء) بکشید و رها کنید. یک تابع را برای فراخوانی از منوی کشویی انتخاب کنید. روی No Function > GameObject > SetActive(bool) کلیک کنید، سپس روی کادر انتخاب کلیک کنید تا true به عنوان پارامتر ارسال کند ( SetActive(true) را فراخوانی میکند).

در این بخش Callbacks، میتوانید رویدادی را که هنگام اجرای رویداد RewardedAd.OnUserEarnedReward فراخوانی میشود، پیوند دهید. برای جزئیات بیشتر، به این بخش مراجعه کنید.
سپس، دکمهای بسازید که هنگام کلیک، یک تبلیغ جایزهدار نمایش دهد. از بخش On Click() Callbacks در کادر محاورهای button، روی دکمه + کلیک کنید و شیء بازی Rewarded Ad Placement (که در این مثال Rewarded Ad نام دارد) را به فیلد None (شیء) بکشید و رها کنید.

سپس، تابع RewardedAdGameObject.ShowIfLoaded() را به تابع فراخوانی 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");
});
}
}
پس از اجرای پروژه، دکمهای را مشاهده خواهید کرد که هنگام بارگذاری و آماده شدن تبلیغ جایزهدار، در صفحه نمایش داده میشود.
پیکربندی یک فراخوانی پاداش برای شیء RewardedAdGameObject
در اینجا مثالی از نحوه پیکربندی یک فراخوانی پاداشی به یک جایگاه تبلیغ پاداشی آورده شده است، بنابراین میتوانید هنگام فراخوانی یک تابع فراخوانی، به کاربر پاداش دهید.
یک اسکریپت جدید ایجاد کنید و تابعی تعریف کنید که Reward به عنوان پارامتر به شرح زیر بپذیرد.
using UnityEngine;
using GoogleMobileAds.Api;
class RewardedTestScript : MonoBehaviour {
...
public void OnUserEarnedReward(Reward reward) {
Debug.Log("OnUserEarnedReward: reward=" +
reward.Type + ", amount=" + reward.Amount);
}
...
}
اسکریپت RewardedTestScript را به هر شیء بازی (به جز شیء بازی Ad Placement) در صحنه وصل کنید. در این مثال، به شیء بازی دوربین اصلی وصل شده است.

یک شیء RewardedAdGameObject به صحنه اضافه کنید. سپس، در بخش Callbacks در بازرس RewardedAdGameObject ، روی دکمه + در On User Earned Reward (Reward) کلیک کنید تا فراخوانی تابع هنگام اعطای پاداش به کاربر فعال شود.

شیء بازی دوربین اصلی (Main Camera GameObject) را که در مرحله قبل اضافه کردهاید، به فیلد None (Object) بکشید و رها کنید. تابعی را که قرار است فراخوانی شود از منوی کشویی انتخاب کنید. روی No Function > RewardedTestScript > OnUserEarnedReward کلیک کنید.

زمانی که پروژه را اجرا میکنید و یک تبلیغ پاداشدار را تماشا میکنید، RewardedTestScript.OnUserEarnedReward() فراخوانی میشود تا زمانی که قرار است به خاطر تعامل با تبلیغ پاداش بگیرید.