افزودن تبلیغ باز برنامه AdMob به برنامه Unity

۱. مقدمه

در این آزمایشگاه کد، شما یک تبلیغ باز برنامه AdMob را در یک برنامه Unity پیاده‌سازی می‌کنید.

آنچه خواهید ساخت

این آزمایشگاه کد شما را در پیاده‌سازی یک تبلیغ باز برنامه AdMob در یک برنامه Unity با استفاده از افزونه Google Mobile Ads Unity راهنمایی می‌کند.

6338548c3f73e7cf.gif

اگر در حین کار با این آزمایشگاه کد با مشکلی (اشکال در کد، خطاهای دستوری، کلمات نامفهوم و غیره) مواجه شدید، مشکل را با استفاده از لینک «گزارش اشتباه» در گوشه پایین و سمت چپ آزمایشگاه کد گزارش دهید.

آنچه یاد خواهید گرفت

  • نحوه پیکربندی افزونه Google Mobile Ads Unity
  • نحوه پیاده‌سازی یک تبلیغ باز کردن برنامه در یک برنامه Unity

آنچه نیاز دارید

  • یونیتی ۲۰۱۸.۴ یا بالاتر
  • Xcode نسخه ۱۲ یا بالاتر و CocoaPods (برای استقرار در iOS)

سطح تجربه خود را با AdMob چگونه ارزیابی می‌کنید؟

تازه کار متوسط ماهر

۲. محیط توسعه را راه‌اندازی کنید

کد را دانلود کنید

بعد از دانلود فایل زیپ، محتویات آن را استخراج کنید. پوشه‌ای به نام admob-appopen-unity-main خواهید داشت.

روش دیگر، می‌توانید مخزن GitHub را از خط فرمان کلون کنید:

$ git clone https://github.com/googlecodelabs/admob-appopen-unity

مخزن شامل دو پوشه است:

  • پوشه android_studio.png شروع کننده: کد اولیه‌ای که در این آزمایشگاه کد خواهید ساخت.
  • پوشه android_studio.png کامل: کد تکمیل‌شده برای این آزمایشگاه کد.

۳. اپلیکیشن ادموب و واحدهای تبلیغاتی را تنظیم کنید

از آنجا که یونیتی یک SDK چند پلتفرمی است، باید یک اپلیکیشن و واحدهای تبلیغاتی را برای اندروید و iOS در AdMob اضافه کنید.

برای اندروید تنظیم کنید

برای راه‌اندازی برای اندروید، باید یک برنامه اندروید اضافه کنید و واحدهای تبلیغاتی ایجاد کنید.

اضافه کردن اپلیکیشن اندروید

  1. در کنسول AdMob ، از منوی برنامه‌ها ، روی «افزودن برنامه» کلیک کنید.
  2. اندروید را به عنوان پلتفرم انتخاب کنید. وقتی از شما پرسیده شد که آیا برنامه در فروشگاه برنامه پشتیبانی شده‌ای فهرست شده است؟، روی خیر کلیک کنید.
  3. AdMob app open ad در فیلد نام برنامه وارد کنید.
  4. فعال کردن معیارهای کاربر برای تکمیل این کدلاگ ضروری نیست. با این حال، توصیه می‌کنیم این کار را انجام دهید زیرا به شما امکان می‌دهد رفتار کاربر را با جزئیات بیشتری درک کنید. برای تکمیل فرآیند، روی ADD کلیک کنید.

ایجاد واحد تبلیغاتی

  1. از منوی برنامه‌ها در کنسول AdMob ، گزینه‌ی «اپلیکیشن باز کردن تبلیغات برای برنامه‌ی AdMob (اندروید)» را انتخاب کنید.
  2. روی منوی واحدهای تبلیغاتی کلیک کنید.

  1. روی افزودن واحد تبلیغات کلیک کنید.
  2. گزینه App open را به عنوان فرمت انتخاب کنید.
  3. android-appopen در فیلد نام واحد تبلیغات وارد کنید.
  4. برای تکمیل فرآیند، روی CREATE AD UNIT کلیک کنید.

معمولاً چند ساعت طول می‌کشد تا یک واحد تبلیغاتی جدید بتواند تبلیغات را ارائه دهد.

اگر می‌خواهید رفتار تبلیغ را فوراً آزمایش کنید، از شناسه برنامه آزمایشی و شناسه‌های واحد تبلیغ که در جداول شناسه/شناسه واحد تبلیغ برنامه اندروید و شناسه/شناسه واحد تبلیغ برنامه iOS فهرست شده‌اند، استفاده کنید.

برای iOS تنظیم کنید

برای راه‌اندازی برای iOS، باید یک برنامه iOS اضافه کنید و واحدهای تبلیغاتی ایجاد کنید.

اضافه کردن اپلیکیشن iOS

  1. در کنسول AdMob ، از منوی برنامه‌ها ، روی «افزودن برنامه» کلیک کنید.
  2. iOS را به عنوان پلتفرم انتخاب کنید. وقتی از شما پرسیده شد که آیا برنامه در یک فروشگاه برنامه پشتیبانی شده فهرست شده است؟، روی خیر کلیک کنید.
  3. AdMob app open ad در فیلد نام برنامه وارد کنید.
  4. فعال کردن معیارهای کاربر برای تکمیل این کدلاگ ضروری نیست. با این حال، توصیه می‌کنیم این کار را انجام دهید زیرا به شما امکان می‌دهد رفتار کاربر را با جزئیات بیشتری درک کنید. برای تکمیل فرآیند، روی ADD کلیک کنید.

ایجاد واحد تبلیغاتی

  1. از منوی برنامه‌ها در کنسول AdMob، برنامه تبلیغات درون‌خطی AdMob (iOS) را انتخاب کنید.
  2. روی منوی واحدهای تبلیغاتی کلیک کنید.

  1. روی افزودن واحد تبلیغات کلیک کنید.
  2. گزینه App open را به عنوان فرمت انتخاب کنید.
  3. ios-appopen را در فیلد نام واحد تبلیغات (Ad unit name) وارد کنید.
  4. برای تکمیل فرآیند، روی CREATE AD UNIT کلیک کنید.

معمولاً چند ساعت طول می‌کشد تا یک واحد تبلیغاتی جدید بتواند تبلیغات را ارائه دهد.

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

اختیاری: از برنامه آزمایشی AdMob و واحدهای تبلیغاتی استفاده کنید

اگر می‌خواهید به جای ایجاد یک برنامه و واحدهای تبلیغاتی جدید، از codelab پیروی کنید، می‌توانید از شناسه برنامه آزمایشی AdMob و شناسه‌های واحد تبلیغاتی ذکر شده در جداول زیر استفاده کنید.

شناسه برنامه اندروید/شناسه واحد تبلیغات

مورد

شناسه برنامه/شناسه واحد تبلیغات

شناسه برنامه AdMob

ca-app-pub-3940256099942544~3347511713

شناسه واحد تبلیغات

ca-app-pub-3940256099942544/3419835294

شناسه برنامه iOS/شناسه واحد تبلیغات

مورد

شناسه برنامه/شناسه واحد تبلیغات

شناسه برنامه AdMob

ca-app-pub-3940256099942544~1458002511

شناسه واحد تبلیغات

ca-app-pub-3940256099942544/5662855259

برای اطلاعات بیشتر در مورد تبلیغات آزمایشی، به اسناد توسعه‌دهندگان تبلیغات آزمایشی اندروید و iOS مراجعه کنید.

۴. افزونه Google Mobile Ads Unity را اضافه کنید

ادغام افزونه Google Mobile Ads Unity اولین قدم برای نمایش تبلیغات AdMob و کسب درآمد است.

افزونه Mobile Ads Unity را دانلود کنید

افزونه Google Mobile Ads Unity به توسعه‌دهندگان Unity این امکان را می‌دهد که به راحتی تبلیغات Google Mobile را در برنامه‌های Android و iOS ارائه دهند. این افزونه یک رابط C# برای درخواست تبلیغات ارائه می‌دهد که توسط اسکریپت‌های C# در پروژه Unity شما استفاده می‌شود.

برای دانلود بسته Unity برای افزونه از لینک زیر استفاده کنید.

پروژه اولیه را باز کنید

  1. هاب یونیتی را راه‌اندازی کنید.
  2. در تب پروژه‌ها ، روی دکمه‌ی افزودن کلیک کنید.
  3. به پوشه‌ای که کد دانلود شده را در مرحله‌ی «تنظیم محیط توسعه» استخراج کرده‌اید، بروید.
  4. پوشه استارت را باز کنید.
  5. پروژه‌ی آغازین را در لیست پروژه‌ها مشاهده خواهید کرد. برای باز کردن آن در ویرایشگر یونیتی، روی پروژه کلیک کنید.

افزونه Mobile Ads Unity را وارد کنید

  1. در ویرایشگر یونیتی، از منو، Assets > Import Package > Custom Package را انتخاب کنید.
  2. بسته‌ی GoogleMobileAds-{VERSION}.unitypackage را که در مرحله‌ی قبل دانلود کرده‌اید، انتخاب کنید.
  3. مطمئن شوید که همه فایل‌ها انتخاب شده‌اند و روی «وارد کردن» کلیک کنید.

شناسه برنامه AdMob خود را تنظیم کنید

  1. در ویرایشگر یونیتی، از منو، گزینه Assets > Google Mobile Ads > Settings را انتخاب کنید.
  2. شناسه برنامه AdMob اندروید و iOS خود را در هر فیلد وارد کنید. اگر می‌خواهید به جای ایجاد یک برنامه جدید و واحدهای تبلیغاتی به تنهایی، از codelab پیروی کنید، شناسه برنامه AdMob آزمایشی را به شرح زیر وارد کنید.

8890521e199b1090.png

۵. یک کلاس کاربردی ایجاد کنید

یک کلاس جدید به نام AppOpenAdManager در پوشه Scripts ایجاد کنید. این کلاس یک متغیر نمونه را برای پیگیری یک تبلیغ بارگذاری شده و شناسه واحد تبلیغ برای هر پلتفرم مدیریت می‌کند.

AppOpenAdManager.cs

using System;
using GoogleMobileAds.Api;
using UnityEngine;

public class AppOpenAdManager
{
#if UNITY_ANDROID
    // Test ad unit ID: ca-app-pub-3940256099942544/3419835294
    private const string AD_UNIT_ID = "<YOUR_ANDROID_APPOPEN_AD_UNIT_ID>";
#elif UNITY_IOS
    // Test ad unit ID: ca-app-pub-3940256099942544/5662855259
    private const string AD_UNIT_ID = "<YOUR_IOS_APPOPEN_AD_UNIT_ID>";
#else
    private const string AD_UNIT_ID = "unexpected_platform";
#endif

    private static AppOpenAdManager instance;

    private AppOpenAd ad;

    private bool isShowingAd = false;

    public static AppOpenAdManager Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new AppOpenAdManager();
            }

            return instance;
        }
    }

    private bool IsAdAvailable
    {
        get
        {
            return ad != null;
        }
    }

    public void LoadAd()
    {
        // TODO: Load an app open ad.
    }
}

بارگذاری یک تبلیغ

بارگذاری یک تبلیغ با استفاده از متد استاتیک AppOpenAd.LoadAd() انجام می‌شود. متد load به یک شناسه واحد تبلیغ، یک حالت ScreenOrientation ، یک شیء AdRequest و یک کنترل‌کننده تکمیل نیاز دارد که هنگام موفقیت یا شکست بارگذاری تبلیغ فراخوانی می‌شود.

شیء AppOpenAd بارگذاری شده به عنوان یک پارامتر در completion handler ارائه می‌شود. متد LoadAd() را به صورت زیر پیاده‌سازی کنید.

AppOpenAdManager.cs

public class AppOpenAdManager
{
    ...

    public void LoadAd()
    {
        AdRequest request = new AdRequest.Builder().Build();

        // Load an app open ad for portrait orientation
        AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
        {
            if (error != null)
            {
                // Handle the error.
                Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
                return;
            }

            // App open ad is loaded.
            ad = appOpenAd;
        }));
    }
}

نمایش تبلیغ

قبل از نمایش تبلیغ، برای هر کنترل‌کننده رویداد ثبت‌نام کنید تا به هر رویداد تبلیغ گوش دهد.

AppOpenAdManager.cs

public class AppOpenAdManager
{
    ...

    public void ShowAdIfAvailable()
    {
        if (!IsAdAvailable || isShowingAd)
        {
            return;
        }

        ad.OnAdDidDismissFullScreenContent += HandleAdDidDismissFullScreenContent;
        ad.OnAdFailedToPresentFullScreenContent += HandleAdFailedToPresentFullScreenContent;
        ad.OnAdDidPresentFullScreenContent += HandleAdDidPresentFullScreenContent;
        ad.OnAdDidRecordImpression += HandleAdDidRecordImpression;
        ad.OnPaidEvent += HandlePaidEvent;

        ad.Show();
    }

    private void HandleAdDidDismissFullScreenContent(object sender, EventArgs args)
    {
        Debug.Log("Closed app open ad");
        // Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
        ad = null;
        isShowingAd = false;
        LoadAd();
    }

    private void HandleAdFailedToPresentFullScreenContent(object sender, AdErrorEventArgs args)
    {
        Debug.LogFormat("Failed to present the ad (reason: {0})", args.AdError.GetMessage());
        // Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
        ad = null;
        LoadAd();
    }

    private void HandleAdDidPresentFullScreenContent(object sender, EventArgs args)
    {
        Debug.Log("Displayed app open ad");
        isShowingAd = true;
    }

    private void HandleAdDidRecordImpression(object sender, EventArgs args)
    {
        Debug.Log("Recorded ad impression");
    }

    private void HandlePaidEvent(object sender, AdValueEventArgs args)
    {
        Debug.LogFormat("Received paid event. (currency: {0}, value: {1}",
                args.AdValue.CurrencyCode, args.AdValue.Value);
    }
}

انقضای تبلیغ را در نظر بگیرید

ارجاعات تبلیغاتی در برنامه‌ی باز، پس از چهار ساعت منقضی می‌شوند. تبلیغاتی که بیش از چهار ساعت پس از زمان درخواست ارائه شوند، دیگر معتبر نخواهند بود و ممکن است درآمدی کسب نکنند.

برای اطمینان از اینکه تبلیغ منقضی شده نمایش داده نمی‌شود، ویژگی IsAdAvailable را در AppOpenAdManager تغییر دهید که بررسی می‌کند چه مدت از بارگذاری تبلیغ شما گذشته است. سپس، از آن روش برای بررسی اینکه آیا تبلیغ هنوز معتبر است یا خیر، استفاده کنید.

AppOpenAdManager.cs

public class AppOpenAdManager
{
    ...

    // TODO: Add loadTime field
    private DateTime loadTime;

    private bool IsAdAvailable
    {
        get
        {
            // TODO: Consider ad expiration
            return ad != null && (System.DateTime.UtcNow - loadTime).TotalHours < 4;
        }
    }

    public void LoadAd()
    {
        if (IsAdAvailable)
        {
            return;
        }

        AdRequest request = new AdRequest.Builder().Build();
        AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
        {
            if (error != null)
            {
                Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
                return;
            }

            ad = appOpenAd;
            Debug.Log("App open ad loaded");

            // TODO: Keep track of time when the ad is loaded.
            loadTime = DateTime.UtcNow;
        }));
    }
}

۶. صحنه را برای بارگذاری/نمایش تبلیغ به‌روزرسانی کنید

متد Start() را در کلاس MainScene به‌روزرسانی کنید تا هنگام شروع صحنه، یک تبلیغ باز برنامه بارگذاری شود.

برای اطلاع از رویدادهای forgrounding برنامه، توصیه می‌کنیم به تک‌لایتون AppStateEventNotifier گوش دهید. با پیاده‌سازی نماینده AppStateEventNotifier.AppStateChanged ، برنامه شما از رویدادهای راه‌اندازی و forgrounding برنامه مطلع می‌شود و می‌تواند تبلیغ را نمایش دهد.

MainScene.cs

using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine;

public class MainScene : MonoBehaviour
{
    public void Start()
    {
        // TODO: Request an app open ad.
        MobileAds.Initialize((initStatus) =>
        {
            AppOpenAdManager.Instance.LoadAd();
            AppStateEventNotifier.AppStateChanged += OnAppStateChanged;
        });
    }

    public void OnAppStateChanged(AppState state)
    {
        if (state == AppState.Foreground)
        {
            // TODO: Show an app open ad if available.
            AppOpenAdManager.Instance.ShowAdIfAvailable();
        }
    }
}

همین! پروژه را روی یک دستگاه یا شبیه‌ساز بسازید و اجرا کنید. پس از اجرای برنامه، چند ثانیه صبر کنید تا تبلیغ به طور کامل بارگذاری شود.

پس از آن، به محض اینکه از سایر برنامه‌ها/صفحه اصلی به برنامه برگردید، تبلیغ باز شدن برنامه به شکل زیر نمایش داده می‌شود.

6338548c3f73e7cf.gif

۷. کار تمام است!

شما آزمایشگاه کد را تکمیل کردید. می‌توانید کد تکمیل‌شده برای این آزمایشگاه کد را در پوشه android_studio.png پوشه کامل .