استفاده از مکان های تبلیغاتی

این راهنما به شما نشان می دهد که چگونه از ویژگی Ad Placements افزونه Google Mobile Ads Unity برای ایجاد و نمایش تبلیغات برای برنامه خود استفاده کنید.

پیش نیازها

Google Mobile Ads SDK را راه‌اندازی کنید

قبل از بارگیری تبلیغات، با فراخوانی MobileAds.Initialize() SDK Ads Mobile را با یک 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
        });
        ...
    }
}

ایجاد مکان های تبلیغاتی

اولین قدم برای نمایش یک بنر با تبلیغات گوگل موبایل، ایجاد و پیکربندی یک مکان تبلیغاتی است. می‌توانید یک آگهی با قالب بنر، بینابینی، یا پاداش را از Assets > Google Mobile Ads > Ad Placements در ویرایشگر Unity انتخاب کنید. سپس سه مکان تبلیغاتی آزمایشی تنظیم و آماده استفاده می‌شوند.

برای افزودن یک آگهی جدید، روی دکمه افزودن مکان جدید در انتهای لیست کلیک کنید. شما می توانید مکان تبلیغات را از نمای بازرس پیکربندی کنید.

پیکربندی قرار دادن آگهی

هر مکان دارای ویژگی های زیر است:

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

اسکرین شات زیر نمونه ای از یک تبلیغ با نام My Awesome Banner را نشان می دهد.

افزودن AdGameObject به صحنه

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

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

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

تنظیمات AdGameObject

می‌توانید AdGameObject را در صحنه خود از نمای Inspector در تنظیمات مؤلفه Ad Game Object (اسکریپت) پیکربندی کنید.

قرار دادن آگهی

مکان تبلیغات را از لیست کشویی مکان های پیکربندی شده انتخاب کنید. این لیست فقط دارای واحدهای تبلیغاتی برای قالب مناسب خواهد بود. به عنوان مثال، برای اشیاء بازی های تبلیغاتی بنری، منوی کشویی فقط مکان های تبلیغات بنری پیکربندی شده را نشان می دهد.

پیکربندی BannerAdGameObject (فقط بنر)

  • اندازه - اندازه بنری را که می خواهید استفاده کنید انتخاب کنید.
    • بنر تطبیقی ​​Anched چند گزینه دیگر را ارائه می دهد:
      • جهت - جهت دستگاه مورد استفاده برای محاسبه ارتفاع آگهی را انتخاب کنید.
      • استفاده از عرض تمام صفحه - با علامت زدن، بنر عرض تمام صفحه را اشغال می کند. اگر تیک گزینه Use full screen width را بردارید، می توانید % عرض صفحه (50~99%) را تنظیم کنید.
    • سفارشی به شما امکان می دهد عرض و ارتفاع بنر را ارائه دهید.
  • موقعیت آگهی - موقعیتی را انتخاب کنید که بنر باید در آن قرار گیرد.

تماس های تلفنی

می توانید توابعی را پیاده سازی کنید که با فراخوان های تبلیغاتی مطابقت دارند. به عنوان مثال، اگر می خواهید زمانی که یک بنر تبلیغاتی بارگیری نمی شود، رسیدگی کنید:

  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 را به صحنه اضافه کنید و ویژگی Auto Load Enabled را روشن کنید، به طوری که هنگام بارگیری صحنه، آگهی به طور خودکار بارگیری شود.

در مرحله بعد، مطمئن شوید که SDK را با استفاده از روش زیر مقداردهی اولیه کرده اید. توجه داشته باشید که اگر فراموش کنید SDK را مقداردهی اولیه کنید، ویژگی Auto Load در 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");
    }
}

از آنجایی که ویژگی بارگیری خودکار را در محل تبلیغات فعال کرده اید، نیازی به درخواست صریح آگهی ندارید. وقتی صحنه تغییر می کند، در صورت آماده بودن، یک تبلیغ بینابینی ظاهر می شود.

اگر می‌خواهید به صورت دستی یک تبلیغ درخواست کنید، ویژگی بارگذاری خودکار را از بازرس مکان‌های تبلیغاتی غیرفعال کنید و به جای آن تابع 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() وضعیت فعال Button را به false تغییر دهید. با این کار دکمه از صحنه محو می شود.

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

یک RewardedAdGameObject را به صحنه اضافه کنید و AdMob Demo Ad Rewarded Ad Placement را از منوی کشویی انتخاب کنید.

در بخش Callbacks در بازرس RewardedAdGameObject ، روی دکمه + از On Ad Loaded() کلیک کنید تا زمانی که یک تبلیغ پاداش بارگیری می شود، تابع فراخوانی شود.

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

در این بخش Callbacks، می‌توانید رویدادی را که با فعال شدن رویداد RewardedAd.OnUserEarnedReward فراخوانی می‌شود، پیوند دهید. برای جزئیات بیشتر به این بخش مراجعه کنید.

در مرحله بعد، دکمه ای را ایجاد کنید تا با کلیک روی آن، یک تبلیغ پاداش نمایش داده شود. از قسمت On Click() Callbacks در بازرس دکمه، روی دکمه + کلیک کنید و GameObject Rewarded Ad Placement (به نام Rewarded Ad در این مثال) را در قسمت None (Object) بکشید و رها کنید.

سپس، تابع 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 را به هر GameObject (به جز Ad Placement GameObject) در صحنه وصل کنید. در این مثال، به GameObject دوربین اصلی متصل شده است.

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

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

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