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

1. مقدمه

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

چیزی که خواهی ساخت

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

6338548c3f73e7cf.gif

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

چیزی که یاد خواهید گرفت

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

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

  • یونیتی 2018.4 یا بالاتر
  • Xcode 12 یا جدیدتر و CocoaPods (برای استقرار در iOS)

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

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

2. محیط توسعه را تنظیم کنید

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

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

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

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

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

  • android_studio_folder.png starter: کد شروعی که در این Codelab خواهید ساخت.
  • android_studio_folder.png کامل: کد تکمیل شده برای این کد لبه.

3. برنامه AdMob و واحدهای تبلیغاتی را تنظیم کنید

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

برای اندروید راه اندازی کنید

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

یک برنامه اندروید اضافه کنید

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

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

  1. برنامه تبلیغات باز برنامه AdMob (Android) را از منوی Apps در کنسول AdMob انتخاب کنید.
  2. روی منوی واحدهای آگهی کلیک کنید.

  1. روی ADD AD UNIT کلیک کنید.
  2. App open را به عنوان قالب انتخاب کنید.
  3. android-appopen را در قسمت Ad unit name وارد کنید.
  4. برای تکمیل فرآیند، روی CREATE AD UNIT کلیک کنید.

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

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

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

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

یک برنامه iOS اضافه کنید

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

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

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

  1. روی ADD AD UNIT کلیک کنید.
  2. App open را به عنوان قالب انتخاب کنید.
  3. ios-appopen در قسمت Ad unit name وارد کنید.
  4. برای تکمیل فرآیند، روی CREATE AD UNIT کلیک کنید.

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

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

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

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

شناسه برنامه Android/شناسه واحد آگهی

مورد

شناسه برنامه/شناسه واحد آگهی

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

ca-app-pub-3940256099942544~3347511713

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

ca-app-pub-3940256099942544/3419835294

شناسه برنامه iOS/شناسه واحد آگهی

مورد

شناسه برنامه/شناسه واحد آگهی

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

ca-app-pub-3940256099942544~1458002511

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

ca-app-pub-3940256099942544/5662855259

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

4. افزونه 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. Unity Hub را راه اندازی کنید.
  2. در تب Projects روی دکمه ADD کلیک کنید.
  3. در مرحله تنظیمات محیط توسعه، به پوشه ای که کد دانلود شده را در آن استخراج کرده اید، بروید.
  4. پوشه استارتر را باز کنید.
  5. پروژه شروع را در لیست پروژه خواهید دید. روی پروژه کلیک کنید تا در Unity Editor باز شود.

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

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

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

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

8890521e199b1090.png

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

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

شی AppOpenAd بارگذاری شده به عنوان یک پارامتر در کنترل کننده تکمیل ارائه می شود. متد 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;
        }));
    }
}

6. صحنه را برای بارگذاری/نمایش آگهی به روز کنید

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

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

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

7. همه چیز تمام شد!

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