Добавление открытой рекламы приложения AdMob в приложение Unity

1. Введение

В этой лаборатории кода вы реализуете открытую рекламу приложения AdMob в приложении Unity.

Что ты построишь

В этой лаборатории кода вы узнаете, как реализовать открытую рекламу приложения AdMob в приложении Unity с помощью плагина Google Mobile Ads Unity.

6338548c3f73e7cf.gif

Если у вас возникнут какие-либо проблемы (ошибки в коде, грамматические ошибки, нечеткие формулировки и т. д.) при работе с этой кодовой лабораторией, сообщите о проблеме, используя ссылку Сообщить об ошибке в нижнем левом углу кодовой лаборатории.

Что вы узнаете

  • Как настроить плагин Google Mobile Ads Unity
  • Как реализовать объявление при открытии приложения в приложении Unity

Что вам понадобится

  • Unity 2018.4 или новее
  • Xcode 12 или новее и CocoaPods (для развертывания на iOS)

Как бы вы оценили свой опыт работы с AdMob?

Новичок Средний Опытный

2. Настройте среду разработки

Загрузите код

После загрузки zip-файла извлеките его содержимое. У вас будет папка с именем admob-appopen-unity-main .

Альтернативно вы можете клонировать репозиторий GitHub из командной строки:

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

Репозиторий содержит две папки:

  • android_studio_folder.png starter: Начальный код, который вы создадите в этой лаборатории кода.
  • android_studio_folder.png Complete: завершенный код для этой лаборатории.

3. Настройте приложение AdMob и рекламные блоки.

Поскольку Unity – это мультиплатформенный SDK, вам необходимо добавить в AdMob приложение и рекламные блоки как для Android, так и для iOS.

Настройка для Android

Чтобы настроить Android, вам необходимо добавить приложение Android и создать рекламные блоки.

Добавить приложение для Android

  1. В консоли AdMob нажмите «ДОБАВИТЬ ПРИЛОЖЕНИЕ» в меню «Приложения» .
  2. В качестве платформы выберите Android . Когда вас спросят , указано ли приложение в поддерживаемом магазине приложений? , нажмите НЕТ .
  3. Введите AdMob app open ad в поле названия приложения.
  4. Для завершения этой лаборатории не требуется включение пользовательских метрик. Однако мы рекомендуем вам это сделать, поскольку это позволит вам более детально понять поведение пользователя. Нажмите ДОБАВИТЬ , чтобы завершить процесс.

Создать рекламный блок

  1. Выберите «Открыть рекламное приложение AdMob» (Android) в меню «Приложения» в консоли AdMob .
  2. Откройте меню «Рекламные блоки» .

  1. Нажмите «ДОБАВИТЬ РЕКЛАМНЫЙ БЛОК» .
  2. Выберите «Открыть приложение» в качестве формата.
  3. Введите android-appopen в поле «Название рекламного блока» .
  4. Нажмите СОЗДАТЬ РЕКЛАМНЫЙ БЛОК , чтобы завершить процесс.

Обычно новому рекламному блоку требуется несколько часов, чтобы начать показ объявлений.

Если вы хотите немедленно протестировать поведение объявления, используйте идентификатор тестового приложения и идентификаторы рекламных блоков, указанные в таблицах «Идентификатор приложения для Android/идентификатор рекламного блока» и «Идентификатор приложения для iOS/идентификатор рекламного блока».

Настройка для iOS

Чтобы настроить iOS, вам необходимо добавить приложение для iOS и создать рекламные блоки.

Добавить приложение для iOS

  1. В консоли AdMob нажмите «ДОБАВИТЬ ПРИЛОЖЕНИЕ» в меню «Приложения» .
  2. Выберите iOS в качестве платформы. Когда вас спросят , указано ли приложение в поддерживаемом магазине приложений? , нажмите НЕТ .
  3. Введите AdMob app open ad в поле названия приложения.
  4. Для завершения этой лаборатории не требуется включение пользовательских метрик. Однако мы рекомендуем вам это сделать, поскольку это позволит вам более детально понять поведение пользователя. Нажмите ДОБАВИТЬ , чтобы завершить процесс.

Создать рекламный блок

  1. Выберите приложение для встроенных объявлений AdMob (iOS) в меню «Приложения» в консоли AdMob .
  2. Откройте меню «Рекламные блоки» .

  1. Нажмите «ДОБАВИТЬ РЕКЛАМНЫЙ БЛОК» .
  2. Выберите «Открыть приложение» в качестве формата.
  3. Введите ios-appopen в поле «Название рекламного блока» .
  4. Нажмите СОЗДАТЬ РЕКЛАМНЫЙ БЛОК , чтобы завершить процесс.

Обычно новому рекламному блоку требуется несколько часов, чтобы начать показ объявлений.

Если вы хотите немедленно протестировать поведение объявления, используйте идентификатор тестового приложения и идентификаторы рекламных блоков, перечисленные в следующей таблице.

Необязательно: используйте тестовое приложение AdMob и рекламные блоки.

Если вы хотите следовать кодовой лаборатории вместо того, чтобы создавать новое приложение и рекламные блоки самостоятельно, вы можете использовать тестовый идентификатор приложения AdMob и идентификаторы рекламных блоков, перечисленные в следующих таблицах.

Идентификатор приложения Android/идентификатор рекламного блока

Элемент

Идентификатор приложения/идентификатор рекламного блока

Идентификатор приложения Рекламы в приложении

ca-app-pub-3940256099942544~3347511713

Идентификатор рекламного блока

ca-app-pub-3940256099942544/3419835294

Идентификатор приложения iOS/идентификатор рекламного блока

Элемент

Идентификатор приложения/идентификатор рекламного блока

Идентификатор приложения Рекламы в приложении

ca-app-pub-3940256099942544~1458002511

Идентификатор рекламного блока

ca-app-pub-3940256099942544/5662855259

Дополнительные сведения о тестовых объявлениях см. в тестовых объявлениях для Android и документации для разработчиков тестовых объявлений для iOS .

4. Добавьте плагин Google Mobile Ads Unity.

Интеграция плагина Google Mobile Ads Unity — это первый шаг на пути к показу рекламы AdMob и получению дохода.

Загрузите плагин Unity для мобильной рекламы

Плагин Google Mobile Ads Unity позволяет разработчикам Unity легко размещать Google Mobile Ads в приложениях для Android и iOS. Плагин предоставляет интерфейс C# для запроса рекламы, который используется скриптами C# в вашем проекте Unity.

Используйте ссылку ниже, чтобы загрузить пакет Unity для плагина.

Откройте стартовый проект

  1. Запустите Unity Hub.
  2. На вкладке «Проекты» нажмите кнопку «ДОБАВИТЬ» .
  3. Перейдите в папку, в которую вы извлекли загруженный код на этапе «Настройка среды разработки».
  4. Откройте стартовую папку.
  5. Вы увидите стартовый проект в списке проектов. Щелкните проект, чтобы открыть его в редакторе Unity.

Импортируйте плагин Mobile Ads Unity.

  1. В редакторе Unity выберите в меню «Ресурсы» > «Импортировать пакет» > «Пользовательский пакет» .
  2. Выберите пакет GoogleMobileAds-{VERSION}.unitypackage который вы скачали на предыдущем шаге.
  3. Убедитесь, что все файлы выбраны, и нажмите «Импортировать» .

Установите идентификатор приложения AdMob

  1. В редакторе Unity выберите в меню «Ресурсы» > «Google Mobile Ads» > «Настройки» .
  2. Введите идентификатор приложения AdMob для Android и iOS в каждое поле. Если вы хотите следовать кодовой лаборатории вместо того, чтобы создавать новое приложение и рекламные блоки самостоятельно, введите идентификатор тестового приложения AdMob следующим образом.

8890521e199b1090.png

5. Создайте служебный класс

Создайте новый класс под названием AppOpenAdManager в папке «Сценарии» . Этот класс управляет переменной экземпляра для отслеживания загруженного объявления и идентификатора рекламного блока для каждой платформы.

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 полная папка.