В этом руководстве показано, как использовать функцию размещения рекламы плагина Google Mobile Ads для Unity для создания и показа рекламы для вашего приложения.
Предпосылки
Unity 2017.4 или выше.
Загрузите и импортируйте раннюю сборку плагина GMA Unity.
Задайте идентификатор вашего приложения AdMob в редакторе Unity.
Инициализировать Google Mobile Ads SDK
Перед загрузкой рекламы инициализируйте Google Mobile Ads SDK, вызвав MobileAds.Initialize()
с обратным вызовом Action<InitializationStatus>
. Это необходимо сделать только один раз, желательно при запуске приложения.
using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
...
public void Start()
{
// Initialize Google Mobile Ads SDK.
MobileAds.Initialize((initStatus) =>
{
// SDK initialization is complete
});
...
}
}
Создание мест размещения рекламы
Первый шаг к показу баннера с помощью Google Mobile Ads — создание и настройка места размещения. Вы можете выбрать формат размещения: «Баннер», «Интерстициальная реклама» или «Объявление с вознаграждением» в разделе «Ресурсы» > «Google Mobile Ads» > «Места размещения» в редакторе Unity. После этого будут настроены и готовы к использованию три демонстрационных места размещения.
Чтобы добавить новое место размещения рекламы, нажмите кнопку «Добавить новое место размещения» в конце списка. Настроить место размещения рекламы можно в окне «Инспектор».
Конфигурация размещения рекламы
Каждое размещение имеет следующие свойства:
- Название размещения
- Название места размещения. Используется для определения места размещения при настройке рекламы в сцене.
- Формат рекламы
- Баннер, вознаграждение, полноэкранная реклама. Тип рекламы.
- Идентификатор рекламного блока
- Укажите идентификатор рекламного блока вашего баннера для Android и iOS. Вам необходимо указать как минимум один идентификатор рекламного блока.
- Постоянный во всех сценах
- Если этот флажок установлен, баннер будет сохраняться на экране независимо от смены сцены (такое же поведение, как и
DontDestroyOnLoad
). - Автоматическая загрузка включена
- Если этот флажок установлен, реклама будет загружаться автоматически при загрузке сцены, связанной с местом размещения рекламы.
На следующем снимке экрана показан пример размещения рекламы под названием «Мой потрясающий баннер» .
Добавление AdGameObject на сцену
Вы можете добавить объект AdGameObject для форматов «Баннер», «Интерстициальная реклама» или «Объявление с вознаграждением» в сцену, используя раздел «GameObject» > «Google Mobile Ads» в редакторе Unity. Выберите формат, чтобы добавить место размещения в активную сцену.
После добавления AdGameObject на сцену вы увидите GameObject, представляющий рекламу, в представлении «Иерархия» редактора Unity.
Вы можете изменить название места размещения, изменив название самого игрового объекта. На следующем снимке экрана показан пример объекта AdGameObject с именем Banner Ad .
Настройки AdGameObject
Вы можете настроить AdGameObject в своей сцене из представления «Инспектор» в настройках компонента «Объект рекламной игры (скрипт)» .
- Размещение рекламы
Выберите место размещения рекламы из раскрывающегося списка настроенных мест размещения. В списке будут только рекламные блоки нужного формата. Например, для игровых объектов с баннерной рекламой в раскрывающемся списке будут показаны только настроенные места размещения баннерной рекламы.
- Конфигурация
BannerAdGameObject
(только баннер)
- Размер — выберите размер баннера, который вы хотите использовать.
- Закрепленный адаптивный баннер предоставляет еще несколько возможностей:
- Ориентация — выберите ориентацию устройства, используемую для расчета высоты рекламы.
- Использовать всю ширину экрана — если этот параметр отмечен, баннер будет занимать всю ширину экрана. Вы можете настроить процентное соотношение ширины экрана (50–99%), сняв флажок «Использовать всю ширину экрана» .
- Пользовательский параметр позволяет указать ширину и высоту баннера.
- Закрепленный адаптивный баннер предоставляет еще несколько возможностей:
- Положение рекламы — выберите положение, где будет размещен баннер.
Обратные вызовы
Вы можете реализовать функции, соответствующие обратным вызовам рекламы. Например, если вы хотите обработать ситуацию, когда рекламный баннер не загружается:
Создайте функцию, совместимую с обратным вызовом рекламы.
public void OnBannerAdFailedToLoad(string reason) { Debug.Log("Banner ad failed to load: " + reason); }
Прикрепите скрипт, содержащий указанную выше функцию, к любому игровому объекту на сцене.
Нажмите кнопку + , затем перетащите игровой объект, к которому вы прикрепили скрипт.
Выберите функцию, которую вы хотите связать с обратным вызовом рекламы. Для параметризованных обратных вызовов рекламы выберите функцию, принимающую динамическую переменную, чтобы можно было получить значение параметра из 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 »), который будет использоваться для показа рекламы с вознаграждением. Эта кнопка будет доступна только при наличии рекламы с вознаграждением.
В методе Start()
измените активное состояние кнопки на false
. Это заставит кнопку исчезнуть со сцены.
public class MainScene : MonoBehaviour
{
...
void Start()
{
GameObject.Find("Button").SetActive(false);
...
}
}
Добавьте RewardedAdGameObject
на сцену и выберите AdMob Demo Rewarded Ad Placement из раскрывающегося списка.
В разделе «Обратные вызовы» в инспекторе RewardedAdGameObject
нажмите кнопку + в поле On Ad Loaded(), чтобы включить вызов функции при загрузке вознагражденной рекламы.
Перетащите игровой объект Button, добавленный на предыдущем шаге, в поле None (Object) . Выберите вызываемую функцию из раскрывающегося списка. Щелкните No Function > GameObject > SetActive(bool) , затем установите флажок, чтобы функция передала true
в качестве параметра (вызывает SetActive(true)
).
В разделе «Обратные вызовы» вы также можете подключить событие, которое будет вызвано при срабатывании события RewardedAd.OnUserEarnedReward
. Подробнее см. в этом разделе .
Затем настройте кнопку так, чтобы при нажатии на неё отображалась реклама с вознаграждением. В разделе «Обратные вызовы On Click()» инспектора кнопок нажмите кнопку «+» и перетащите игровой объект «Размещение рекламы с вознаграждением» (в данном примере — 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
к любому игровому объекту (кроме объекта «Размещение рекламы») в сцене. В этом примере он прикреплён к игровому объекту «Главная камера».
Добавьте объект RewardedAdGameObject
в сцену. Затем в разделе «Обратные вызовы» инспектора RewardedAdGameObject
нажмите кнопку «+» рядом с функцией «При получении вознаграждения пользователем» (Reward) , чтобы функция вызывалась при получении вознаграждения пользователем.
Перетащите игровой объект «Главная камера», добавленный на предыдущем шаге, в поле «Нет (объект)» . Выберите функцию для вызова из раскрывающегося списка. Нажмите «Нет функции» > «RewardedTestScript» > «OnUserEarnedReward» .
После запуска проекта и просмотра рекламы с вознаграждением будет вызываться RewardedTestScript.OnUserEarnedReward()
когда вам будет выдано вознаграждение за взаимодействие с рекламой.