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

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

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

Инициализируйте Google Mobile Ads SDK

Перед загрузкой рекламы инициализируйте Mobile Ads SDK, вызвав MobileAds.Initialize() с обратным вызовом 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
        });
        ...
    }
}

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

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

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

Конфигурация размещения объявления

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

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

На следующем снимке экрана показан пример размещения рекламы под названием My Awesome Banner .

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

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

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

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

Настройки объекта AdGameObject

Вы можете настроить AdGameObject в своей сцене из представления «Инспектор» в настройках компонента Ad Game Object (Script) .

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

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

Конфигурация BannerAdGameObject (только баннер)

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

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

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

  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();
        });
    }
    ...
}

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

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

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

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

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

Добавьте в сцену объект RewardedAdGameObject и выберите в раскрывающемся списке размещение рекламы с вознаграждением в демо-версии AdMob .

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

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

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

Затем создайте кнопку, которая будет отображать рекламу с вознаграждением при нажатии. В разделе «Обратные вызовы при щелчке()» в инспекторе кнопок нажмите кнопку « и перетащите игровой объект «Размещение рекламы с вознаграждением» (в данном примере он называется «Объявление с вознаграждением» ) в поле «Нет» (Объект) .

Затем прикрепите функцию 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 к любому игровому объекту (кроме игрового объекта «Размещение рекламы») на сцене. В этом примере он прикреплен к игровому объекту основной камеры.

Добавьте в сцену RewardedAdGameObject . Затем в разделе «Обратные вызовы» инспектора RewardedAdGameObject нажмите кнопку « в разделе «При вознаграждении, заработанном пользователем» (награда) , чтобы разрешить вызов функции при предоставлении пользователю вознаграждения.

Перетащите игровой объект «Основная камера», который вы добавили на предыдущем шаге, в поле «Нет (Объект)» . Выберите функцию для вызова из раскрывающегося списка. Нажмите «Нет функции» > RewardedTestScript > OnUserEarnedReward .

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