Межстраничные объявления — это полноэкранные объявления, которые закрывают интерфейс приложения. Вы показываете эти объявления в естественных точках перехода в вашем приложении, например, между действиями или во время пауз в игровых уровнях.
Когда в вашем приложении отображается промежуточная реклама, пользователи могут либо нажать на неё и продолжить, либо закрыть рекламу и вернуться в приложение. Ознакомьтесь с одним из наших примеров успешного применения .
В этом руководстве объясняется, как интегрировать межстраничную рекламу в приложение для Android.
Прежде чем начать
Прежде чем продолжить, выполните следующие действия:
- Настройте GMA Next-Gen SDK .
- Используйте идентификатор тестового межстраничного рекламного блока
ca-app-pub-3940256099942544/1033173712.- При разработке и тестировании приложения обязательно используйте тестовые объявления, а не рабочие, коммерческие. Если вы не используете идентификатор тестового рекламного блока, Google может заблокировать ваш аккаунт.
- Перед публикацией приложения замените этот ID на идентификатор вашего рекламного блока.
- Подробную информацию о тестовой рекламе в GMA Next-Gen SDK см. в разделе «Включить тестовую рекламу» .
Разберитесь в предварительном размещении рекламы.
В GMA Next-Gen SDK предварительная загрузка рекламы автоматизирует загрузку и кэширование рекламы.
Предварительная загрузка рекламы предоставляет следующие преимущества:
- Управление ссылками : сохраняет ссылки до момента показа рекламы.
- Автоматическая перезагрузка : загружает новое объявление, когда предыдущее извлекается из кэша.
- Управляемые повторные попытки : загружает новое объявление, если предыдущее не загрузилось.
- Обработка истечения срока действия : обновляет объявления перед истечением срока их действия.
- Оптимизация кэша : оптимизирует порядок кэширования для показа рекламы с наивысшим приоритетом.
Начать предварительную загрузку рекламы
Чтобы начать предварительную загрузку рекламы, вызовите метод startPreload() один раз при запуске приложения. После вызова метода startPreload() GMA Next-Gen SDK автоматически выполнит предварительную загрузку рекламы и повторит неудачные запросы на предварительно загруженные конфигурации.
В следующем примере показано, как начать предварительную загрузку рекламы:
Котлин
Java
Замените AD_UNIT_ID на идентификатор вашего рекламного блока.
В предыдущем примере показано, как использовать идентификатор рекламного блока в качестве идентификатора предварительной загрузки. Идентификатор предварительной загрузки — это строковый идентификатор, который вы создаете для идентификации конфигурации предварительной загрузки рекламы. Если вашему приложению требуется несколько конфигураций таргетинга для одного и того же идентификатора рекламного блока, передайте пользовательский строковый идентификатор.
Получите и покажите предварительно загруженную рекламу.
Чтобы показать рекламу, вызовите метод pollAd() . GMA Next-Gen SDK получает доступную рекламу и автоматически предварительно загружает следующую рекламу в фоновом режиме. Если рекламы нет, GMA Next-Gen SDK не возвращает никакой рекламы.
Когда у вас есть доступный объект объявления, вызовите метод show для его отображения. В следующем примере показано, как получить и показать предварительно загруженное объявление:
Котлин
Java
Не вызывайте метод pollAd() до тех пор, пока не будете готовы показать рекламу. Чтобы прочитать информацию об ответе на объявление, не показывая его, см. раздел «Чтение информации об ответе» .
Слушайте рекламные события
Перед показом рекламы отслеживайте события, связанные с рекламой. В следующем примере показано, как зарегистрировать обратные вызовы для событий, связанных с рекламой:
Котлин
// Listen for ad events. val ad = interstitialAd if (ad == null) { Log.e(TAG, "Interstitial ad is not ready yet.") return } ad.adEventCallback = object : InterstitialAdEventCallback { override fun onAdShowedFullScreenContent() { // Interstitial ad did show. } override fun onAdDismissedFullScreenContent() { // Interstitial ad did dismiss. interstitialAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // Interstitial ad failed to show. Log.e(TAG, "Interstitial ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // Interstitial ad did record an impression. } override fun onAdClicked() { // Interstitial ad did record a click. } }
Java
// Listen for ad events. if (interstitialAd == null) { Log.e(TAG, "Interstitial ad is not ready yet."); return; } interstitialAd.setAdEventCallback( new InterstitialAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // Interstitial ad did show. } @Override public void onAdDismissedFullScreenContent() { // Interstitial ad did dismiss. interstitialAd = null; } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { // Interstitial ad failed to show. Log.e(TAG, "Interstitial ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // Interstitial ad did record an impression. } @Override public void onAdClicked() { // Interstitial ad did record a click. } });
Необязательно: Отслеживать события предварительной загрузки
При запуске предварительной загрузки рекламы зарегистрируйтесь для получения уведомлений о событиях предварительной загрузки, чтобы получать оповещения об успешной предварительной загрузке рекламы, сбое предварительной загрузки или исчерпании рекламного кэша.
В следующем примере показано, как зарегистрироваться для участия в событиях предварительной загрузки рекламы:
Котлин
val preloadCallback = // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback. object : PreloadCallback { override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) { Log.d( TAG, ("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"), ) } override fun onAdsExhausted(preloadId: String) { Log.i(TAG, "Interstitial preload ad $preloadId is not available") // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted. } override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) { Log.i(TAG, "Interstitial preload ad $preloadId is available") } } val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
Java
PreloadCallback preloadCallback = // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback. new PreloadCallback() { @Override public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) { Log.d( TAG, String.format( "Interstitial preload ad %s failed to load with error: %s", preloadId, adError.getMessage())); // [Optional] Get the error response info for additional details. // ResponseInfo responseInfo = adError.getResponseInfo(); } @Override public void onAdsExhausted(@NonNull String preloadId) { Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available"); // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted. } @Override public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) { Log.i(TAG, "Interstitial preload ad " + preloadId + " is available"); } }; AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
Если реклама не загружается, GMA Next-Gen SDK автоматически предварительно загружает рекламу и повторяет неудачные запросы для получения предварительно загруженных конфигураций.
(Необязательно): Проверьте доступность рекламы.
Если вам нужно узнать, доступна ли реклама, проверьте её доступность. В следующем примере показано, как проверить доступность предварительно загруженной рекламы:
Котлин
private fun isAdAvailable(adUnitId: String): Boolean { return InterstitialAdPreloader.isAdAvailable(adUnitId) }
Java
private boolean isAdAvailable(String adUnitId) { return InterstitialAdPreloader.isAdAvailable(adUnitId); }
Необязательно: укажите размер буфера.
Размер буфера определяет количество предварительно загруженных рекламных объявлений, хранящихся в памяти. По умолчанию Google оптимизирует размер буфера для баланса между потреблением памяти и задержкой показа рекламы. Вы можете установить собственный размер буфера, чтобы увеличить количество рекламных объявлений, хранящихся в памяти. Мы рекомендуем максимальный размер буфера в четыре объявления.
В следующем примере показано, как установить размер буфера в четыре предварительно загруженных рекламных объявления:
Котлин
val adRequest = AdRequest.Builder(adUnitId).build() // Maintain small or default buffer size unless rapid transitions are expected. val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2) InterstitialAdPreloader.start(adUnitId, preloadConfig)
Java
// Maintain small or default buffer size unless rapid transitions are expected. AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2); InterstitialAdPreloader.start(adUnitId, preloadConfig);
Ограничения предварительной загрузки кэша
GMA Next-Gen SDK устанавливает общеприложениевое ограничение на общее количество предварительно загруженных рекламных объявлений по всем рекламным блокам и идентификаторам предварительной загрузки:
- Ограничение по умолчанию: Google хранит в памяти максимум 6 предварительно загруженных объявлений. Это ограничение действует для всех форматов и идентификаторов предварительной загрузки.
- Мы рекомендуем устанавливать размер буфера равным 2 или 3 на каждый идентификатор предварительной загрузки.
(Необязательно) Остановить предварительную загрузку рекламы
Если вам не нужно снова показывать рекламу с определенным идентификатором предварительной загрузки в рамках текущей сессии, вы можете остановить предварительную загрузку рекламы. Чтобы остановить загрузку рекламы с определенным идентификатором предварительной загрузки, вызовите метод destroy() с указанием идентификатора предварительной загрузки. Вызов метода destroy() удаляет из кэша всю предварительно загруженную рекламу, связанную с этим идентификатором.
Следующий пример показывает, как остановить предварительную загрузку рекламы:
Котлин
private fun stopPreloading(adUnitId: String) { // Stops the preloading and destroy preloaded ads. InterstitialAdPreloader.destroy(adUnitId) }
Java
private void stopPreloading(String adUnitId) { // Stops the preloading and destroy preloaded ads. InterstitialAdPreloader.destroy(adUnitId); }
Необязательно: ознакомьтесь с информацией об ответе.
Прочитайте информацию об ответе следующего предварительно загруженного объявления, не удаляя объявление из кэша.
В следующем примере показано, как считывать информацию о следующем предварительно загруженном рекламном ответе:
Котлин
val responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId) if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info.") return } Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")
Java
ResponseInfo responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId); if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info."); return; } Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());