Рекламные места

В этом руководстве показано, как использовать функцию «Размещение рекламы» в плагине Google Mobile Ads Unity для создания и показа рекламы для вашего приложения.

Предварительные требования

Инициализация Google Mobile Ads Unity Plugin

Перед загрузкой рекламы инициализируйте Google Mobile Ads Unity Plugin , вызвав метод 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
        });
        ...
    }
}

Создание рекламных мест

Первый шаг для отображения баннера в Google Mobile Ads — это создание и настройка места размещения объявления. Вы можете выбрать место размещения объявления в формате «Баннер», «Межстраничная реклама» или «С вознаграждением» в разделе «Ресурсы» > «Google Mobile Ads» > «Места размещения объявлений» в редакторе Unity. После этого будут настроены и готовы к использованию три демонстрационных места размещения объявлений.

Чтобы добавить новое место размещения объявления, нажмите кнопку «Добавить новое место размещения» в конце списка. Вы можете настроить размещение объявления в окне «Инспектор».

Настройка размещения рекламы

Каждое размещение имеет следующие свойства:

Название вакансии
Название места размещения. Используется для идентификации мест размещения при настройке рекламы в сцене.
Формат рекламы
Баннерная, с вознаграждением, межстраничная. Тип рекламы.
Идентификатор рекламного блока
Укажите идентификатор вашего рекламного блока для Android и iOS. Необходимо указать как минимум один идентификатор рекламного блока.
Сохраняется во всех сценах.
Если этот параметр включен, баннер будет оставаться на экране независимо от смены сцены (аналогично параметру DontDestroyOnLoad ).
Автоматическая загрузка включена.
Если этот флажок установлен, реклама будет загружаться автоматически при загрузке сцены, связанной с местом размещения рекламы.

На следующем скриншоте показан пример размещения рекламы под названием «Мой потрясающий баннер» .

Добавление объекта AdGameObject на сцену

В редакторе Unity вы можете добавить объект AdGameObject для баннерной, межстраничной или платной рекламы в вашу сцену, используя команду GameObject > Google Mobile Ads . Выберите формат, в котором хотите разместить рекламу на активной сцене.

После добавления объекта AdGameObject на сцену, в окне иерархии редактора Unity вы увидите объект GameObject, представляющий рекламу.

Вы можете изменить название размещения, изменив имя самого объекта GameObject. На следующем скриншоте показан пример объекта AdGameObject с именем Banner Ad .

Настройки AdGameObject

Вы можете настроить объект AdGameObject в вашей сцене в окне инспектора в настройках компонента Ad Game Object (Script) .

Размещение рекламы

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

Настройка объекта BannerAdGameObject (только для баннера)

  • Размер — выберите желаемый размер баннера.
    • Адаптивный баннер с привязкой предоставляет еще несколько возможностей:
      • Ориентация — выберите ориентацию устройства, используемую для расчета высоты объявления.
      • Использовать всю ширину экрана — если этот флажок установлен, баннер будет занимать всю ширину экрана. Вы можете настроить ширину экрана в процентах (от 50 до 99%), если снимете флажок с параметра «Использовать всю ширину экрана» .
    • Функция «Пользовательский» позволяет задать ширину и высоту баннера.
  • Позиция объявления — выберите место, где следует разместить баннер.

Обратные звонки

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

  1. Создайте функцию, совместимую с функцией обратного вызова для рекламы.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. Прикрепите скрипт, содержащий указанную выше функцию, к любому игровому объекту на сцене.

  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 и включите функцию автоматической загрузки , чтобы реклама загружалась автоматически при загрузке сцены.

Далее убедитесь, что вы инициализировали SDK следующим образом. Обратите внимание, что функция автоматической загрузки в AdGameObject не будет работать, если вы забудете инициализировать SDK.

Затем отобразите промежуточную рекламу между переходами между экранами, вызвав функцию 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();
        });
    }
    ...
}

Обработка состояния кнопки «Посмотреть рекламу с вознаграждением»

Вот пример того, как активировать кнопку «посмотреть рекламу с вознаграждением», используя места размещения рекламы.

Добавьте на сцену игровой объект «Кнопка» (в этом примере он называется «Кнопка »), который будет использоваться для отображения рекламы с вознаграждением. Мы сделаем эту кнопку доступной только тогда, когда будет доступна реклама с вознаграждением.

В методе Start() измените состояние активности кнопки на false . Это приведет к исчезновению кнопки со сцены.

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

Добавьте на сцену объект RewardedAdGameObject и выберите из выпадающего списка AdMob Demo Rewarded Ad Ad Placement.

В разделе «Обратные вызовы» инспектора объекта RewardedAdGameObject нажмите кнопку «+» в функции On Ad Loaded(), чтобы включить вызов этой функции при загрузке рекламы с вознаграждением.

Перетащите объект Button, добавленный на предыдущем шаге, в поле None (Object) . Выберите функцию для вызова из выпадающего списка. Нажмите No Function > GameObject > SetActive(bool) , затем установите флажок, чтобы в качестве параметра передавалось значение true (вызывается SetActive(true) ).

В разделе «Обратные вызовы» вы также можете связать событие, которое будет вызываться при срабатывании события RewardedAd.OnUserEarnedReward . Для получения более подробной информации см. этот раздел .

Далее, настройте кнопку так, чтобы при нажатии отображалась рекламная вставка с вознаграждением. В разделе «Обратные вызовы On Click()» в инспекторе кнопок нажмите кнопку «+» и перетащите объект Rewarded Ad Placement GameObject (в этом примере он называется 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 к любому игровому объекту (кроме объекта размещения рекламы) на сцене. В этом примере он прикреплен к игровому объекту Main Camera.

Добавьте объект RewardedAdGameObject на сцену. Затем в разделе Callbacks в инспекторе объекта RewardedAdGameObject нажмите кнопку + в пункте On User Earned Reward (Reward), чтобы включить вызов этой функции при начислении вознаграждения пользователю.

Перетащите добавленный на предыдущем шаге объект Main Camera в поле None (Object) . Выберите функцию для вызова из выпадающего списка. Нажмите No Function > RewardedTestScript > OnUserEarnedReward .

После запуска проекта и просмотра рекламы с вознаграждением будет вызван RewardedTestScript.OnUserEarnedReward() когда вы получите вознаграждение за взаимодействие с рекламой.