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

Предварительные требования
Прежде чем продолжить, выполните следующие действия:
- Настройте Google Mobile Ads Unity Plugin .
- Установите плагин Unity версии 7.1.0 или выше.
Всегда проводите тестирование с помощью тестовых объявлений.
Приведённый ниже пример кода содержит идентификатор рекламного блока, который можно использовать для запроса тестовой рекламы. Он специально настроен на возврат тестовой рекламы, а не рабочей, для каждого запроса, что делает его безопасным в использовании.
Однако после регистрации приложения в веб-интерфейсе Ad Manager и создания собственных идентификаторов рекламных блоков для использования в приложении, во время разработки явно настройте свое устройство как тестовое .
/21775744923/example/interstitial
Выполнение
Основные шаги по интеграции рекламы при открытии приложения:
- Создайте вспомогательный класс.
- Загрузить приложение Открыть рекламу
- Прослушивание событий открытия рекламы в приложении
- Учитывайте истечение срока действия рекламы.
- Прослушивайте события состояния приложения
- Показать рекламное объявление об открытии приложения
- Удалите всплывающую рекламу из приложения.
- Предварительно загрузите рекламу следующего приложения.
Создайте вспомогательный класс.
Создайте новый класс с именем AppOpenAdController для загрузки рекламы. Этот класс управляет переменной экземпляра, которая отслеживает загруженную рекламу и идентификатор рекламного блока для каждой платформы.
using System;
using UnityEngine;
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
/// <summary>
/// Demonstrates how to use the Google Mobile Ads app open ad format.
/// </summary>
[AddComponentMenu("GoogleMobileAds/Samples/AppOpenAdController")]
public class AppOpenAdController : MonoBehaviour
{
// This ad unit is configured to always serve test ads.
private string _adUnitId = "/21775744923/example/app-open";
public bool IsAdAvailable
{
get
{
return _appOpenAd != null;
}
}
public void Start()
{
// Initialize Google Mobile Ads Unity Plugin.
MobileAds.Initialize((InitializationStatus initStatus) =>
{
// This callback is called once the MobileAds SDK is initialized.
});
}
/// <summary>
/// Loads the app open ad.
/// </summary>
public void LoadAppOpenAd()
{
}
/// <summary>
/// Shows the app open ad.
/// </summary>
public void ShowAppOpenAd()
{
}
}
Загрузить приложение Открыть рекламу
Загрузка рекламного объявления, открытого приложением, осуществляется с помощью статического метода Load() класса AppOpenAd . Методу Load() требуется идентификатор рекламного блока, объект AdManagerAdRequest и обработчик завершения, который вызывается при успешной или неудачной загрузке объявления. Загруженный объект AppOpenAd передается в качестве параметра в обработчик завершения. Пример ниже показывает, как загрузить AppOpenAd .
// This ad unit is configured to always serve test ads.
private string _adUnitId = "/21775744923/example/app-open";
private AppOpenAd appOpenAd;
/// <summary>
/// Loads the app open ad.
/// </summary>
public void LoadAppOpenAd()
{
// Clean up the old ad before loading a new one.
if (appOpenAd != null)
{
appOpenAd.Destroy();
appOpenAd = null;
}
Debug.Log("Loading the app open ad.");
// Create our request used to load the ad.
var adRequest = new AdManagerAdRequest();
// send the request to load the ad.
AppOpenAd.Load(_adUnitId, adRequest,
(AppOpenAd ad, LoadAdError error) =>
{
// if error is not null, the load request failed.
if (error != null || ad == null)
{
Debug.LogError("app open ad failed to load an ad " +
"with error : " + error);
return;
}
Debug.Log("App open ad loaded with response : "
+ ad.GetResponseInfo());
appOpenAd = ad;
RegisterEventHandlers(ad);
});
}
Прослушивание событий открытия рекламы в приложении
Для дальнейшей настройки поведения вашей рекламы вы можете отслеживать ряд событий в жизненном цикле объявления: открытие, закрытие и так далее. Отслеживайте эти события, зарегистрировав делегата, как показано ниже.
private void RegisterEventHandlers(AppOpenAd ad)
{
// Raised when the ad is estimated to have earned money.
ad.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("App open ad paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
// Raised when an impression is recorded for an ad.
ad.OnAdImpressionRecorded += () =>
{
Debug.Log("App open ad recorded an impression.");
};
// Raised when a click is recorded for an ad.
ad.OnAdClicked += () =>
{
Debug.Log("App open ad was clicked.");
};
// Raised when an ad opened full screen content.
ad.OnAdFullScreenContentOpened += () =>
{
Debug.Log("App open ad full screen content opened.");
};
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("App open ad full screen content closed.");
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("App open ad failed to open full screen content " +
"with error : " + error);
};
}
Учитывайте истечение срока действия рекламы.
Чтобы избежать показа устаревшей рекламы, добавьте в AppOpenAdController метод, который проверяет, сколько времени прошло с момента загрузки вашей рекламы. Затем используйте этот метод, чтобы проверить, актуальна ли реклама до сих пор.
Время ожидания при открытии рекламы в приложении составляет 4 часа. Время загрузки кэшируется в переменной _expireTime .
// send the request to load the ad.
AppOpenAd.Load(_adUnitId, adRequest,
(AppOpenAd ad, LoadAdError error) =>
{
// If the operation failed, an error is returned.
if (error != null || ad == null)
{
Debug.LogError("App open ad failed to load an ad with error : " +
error);
return;
}
// If the operation completed successfully, no error is returned.
Debug.Log("App open ad loaded with response : " + ad.GetResponseInfo());
// App open ads can be preloaded for up to 4 hours.
_expireTime = DateTime.Now + TimeSpan.FromHours(4);
_appOpenAd = ad;
});
Обновите свойство IsAdAvailable , добавив проверку _expireTime , чтобы убедиться, что загруженное объявление по-прежнему действительно.
public bool IsAdAvailable
{
get
{
return _appOpenAd != null
&& _appOpenAd.IsLoaded()
&& DateTime.Now < _expireTime;
}
}
Прослушивайте события состояния приложения
Используйте класс AppStateEventNotifier для отслеживания событий, происходящих в фоновом и переднем планах приложения. Этот класс будет генерировать событие AppStateChanged всякий раз, когда приложение переходит в передний или задний план.
private void Awake()
{
// Use the AppStateEventNotifier to listen to application open/close events.
// This is used to launch the loaded ad when we open the app.
AppStateEventNotifier.AppStateChanged += OnAppStateChanged;
}
private void OnDestroy()
{
// Always unlisten to events when complete.
AppStateEventNotifier.AppStateChanged -= OnAppStateChanged;
}
Когда мы обрабатываем состояние AppState.Foreground и IsAdAvailable имеет true , мы вызываем ShowAppOpenAd() для показа рекламы.
private void OnAppStateChanged(AppState state)
{
Debug.Log("App State changed to : "+ state);
// if the app is Foregrounded and the ad is available, show it.
if (state == AppState.Foreground)
{
if (IsAdAvailable)
{
ShowAppOpenAd();
}
}
}
Показать рекламное объявление об открытии приложения
Чтобы показать рекламное объявление, отображаемое при загрузке приложения, вызовите метод Show() экземпляра AppOpenAd . Реклама может отображаться только один раз за загрузку. Используйте метод CanShowAd() для проверки готовности рекламы к показу.
/// <summary>
/// Shows the app open ad.
/// </summary>
public void ShowAppOpenAd()
{
if (appOpenAd != null && appOpenAd.CanShowAd())
{
Debug.Log("Showing app open ad.");
appOpenAd.Show();
}
else
{
Debug.LogError("App open ad is not ready yet.");
}
}
Удалите всплывающую рекламу из приложения.
После завершения работы с AppOpenAd обязательно вызовите метод Destroy() перед тем, как удалить ссылку на него:
appOpenAd.Destroy();
Этот метод уведомляет плагин о том, что объект больше не используется и занимаемая им память может быть освобождена. Невызов этого метода приводит к утечкам памяти.
Предварительно загрузите рекламу следующего приложения.
Объект AppOpenAd является одноразовым. Это означает, что после показа рекламы, приведшей к открытию приложения, этот объект нельзя использовать повторно. Чтобы запросить повторный показ рекламы, необходимо создать новый объект AppOpenAd .
Чтобы подготовить рекламное объявление, отображаемое при открытии приложения, к следующему показу, предварительно загрузите его после того, как будет сгенерировано событие OnAdFullScreenContentClosed или OnAdFullScreenContentFailed .
private void RegisterReloadHandler(AppOpenAd ad)
{
...
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += ()
{
Debug.Log("App open ad full screen content closed.");
// Reload the ad so that we can show another as soon as possible.
LoadAppOpenAd();
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("App open ad failed to open full screen content " +
"with error : " + error);
// Reload the ad so that we can show another as soon as possible.
LoadAppOpenAd();
};
}
Холодный запуск и экраны загрузки
В документации до сих пор предполагалось, что вы показываете рекламу приложения только тогда, когда пользователи переводят приложение в активное состояние, когда оно приостановлено в памяти. «Холодный запуск» происходит, когда ваше приложение запускается, но ранее не было приостановлено в памяти.
An example of a cold start is when a user opens your app for the first time. With cold starts, you won't have a previously loaded app open ad that's ready to be shown right away. The delay between when you request an ad and receive an ad back can create a situation where users are able to briefly use your app before being surprised by an out of context ad. This should be avoided because it is a bad user experience.
Предпочтительный способ использования рекламы при холодном запуске приложения — это использование экрана загрузки для отображения игровых или других ресурсов приложения, и показ рекламы только с этого экрана. Если загрузка приложения завершена и пользователь перешёл к основному содержимому приложения, рекламу показывать не следует.
Передовые методы
Реклама при открытии приложения помогает монетизировать экран загрузки вашего приложения при первом запуске и при переключении между приложениями, но важно помнить о следующих рекомендациях, чтобы ваши пользователи получали удовольствие от использования вашего приложения.
- Первое рекламное объявление о запуске приложения будет показано после того, как пользователи несколько раз воспользуются вашим приложением.
- Показывайте рекламу приложения в то время, когда пользователи обычно ждут загрузки приложения.
- Если под открытой рекламой приложения отображается экран загрузки, и загрузка завершается до закрытия рекламы, закройте экран загрузки в обработчике события
OnAdDidDismissFullScreenContent. - На платформе iOS
AppStateEventNotifierсоздает экземплярAppStateEventClient GameObject. ЭтотGameObjectнеобходим для срабатывания событий, поэтому не уничтожайте его. События перестают срабатывать, еслиGameObjectуничтожен.
Дополнительные ресурсы
- Пример HelloWorld : минимальная реализация всех форматов рекламы.