Использование рекламных мест

В этом руководстве показано, как использовать функцию рекламных мест плагина 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 Mobile Ads» > «Места размещения рекламы » в редакторе Unity. Затем настраиваются и готовы к использованию три места размещения демонстрационной рекламы.

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

Конфигурация размещения рекламы

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

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

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

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

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

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

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

Настройки AdGameObject

Вы можете настроить AdGameObject в своей сцене из представления Inspector в настройках компонента 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 на сцену и включите функцию Auto Load Enabled , чтобы реклама загружалась автоматически при загрузке сцены.

Затем убедитесь, что вы инициализировали 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 Demo Rewarded Ad Placement.

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

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

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

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

Затем присоедините функцию 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 . Затем в разделе «Обратные вызовы» инспектора RewardedAdGameObject нажмите кнопку « + » в разделе «Награда, заработанная пользователем» (вознаграждение) , чтобы разрешить вызов функции при предоставлении награды пользователю.

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

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