Межстраничные объявления – это полноэкранные объявления, которые закрывают интерфейс приложения, пока пользователь не закроет их. Обычно такая реклама показывается при естественных переходах между разделами приложения или уровнями игры. Когда в приложении показывается межстраничное объявление, пользователь может нажать на него и перейти на целевую страницу или закрыть его и вернуться в приложение. Пример из практики.
В этом руководстве рассказывается, как интегрировать межстраничные объявления в приложения для Android и iOS с помощью Google Mobile Ads C++ SDK.
Требования
- Нажмите Начать.
- (Только для Android) Опыт работы со ссылками JNI
jobject(см. советы по JNI для Android).
Всегда используйте тестовые объявления
При создании и тестировании приложений используйте тестовые объявления, а не реальные. В противном случае ваш аккаунт может быть заблокирован.
Проще всего загрузить тестовые объявления, используя идентификатор тестового рекламного блока для межстраничных объявлений. Он зависит от платформы устройства:
- Android:
ca-app-pub-3940256099942544/1033173712 - iOS:
ca-app-pub-3940256099942544/4411468910
Они специально настроены так, чтобы возвращать тестовые объявления по каждому запросу. Вы можете использовать их в своих приложениях при написании кода, тестировании и отладке. Не забудьте заменить его идентификатором своего рекламного блока перед публикацией приложения.
Подробнее о том, как работают тестовые объявления Mobile Ads SDK, читайте в статье Тестовые объявления.
Реализация
Основные этапы интеграции межстраничных объявлений:
- Загрузите объявление.
- Зарегистрируйте обратные вызовы.
- Покажите объявление и обработайте события его жизненного цикла.
Настроить InterstitialAd
Межстраничные объявления показываются в объектах InterstitialAd, поэтому первый шаг к интеграции таких объявлений в приложение – создать и инициализировать объект InterstitialAd.
Добавьте в код C++ приложения следующий заголовок:
#include "firebase/gma/interstial_ad.h"
Объявите и создайте экземпляр объекта
InterstitialAd:firebase::gma::InterstitialAd* interstitial_ad; interstitial_ad = new firebase::gma::InterstitialAd();
Инициализируйте экземпляр
InterstitialAd, используя родительское представление, приведенное к типуAdParent. Родительский элемент просмотра – это ссылка JNIjobjectна AndroidActivityили указатель на iOSUIView.// my_ad_parent is a jobject reference to an Android Activity or // a pointer to an iOS UIView. firebase::gma::AdParent ad_parent = static_cast<firebase::gma::AdParent>(my_ad_parent); firebase::Future<void> result = interstitial_ad->Initialize(ad_parent);Вместо того чтобы сохранять future в качестве переменной, вы можете периодически проверять статус операции инициализации, вызывая
InitializeLastResult()для объектаInterstitialAd. Это может быть полезно для отслеживания процесса инициализации в глобальном игровом цикле.// Monitor the status of the future in your game loop: firebase::Future<void> result = interstitial_ad->InitializeLastResult(); if (result.status() == firebase::kFutureStatusComplete) { // Initialization completed. if(future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization successful. } else { // An error has occurred. } } else { // Initialization on-going. }
Подробнее о том, как работать с firebase::Future, читайте в статье Как использовать Futures для отслеживания статуса выполнения вызовов методов.
Загрузка объявления
Объявление загружается с помощью метода LoadAd() объекта InterstitialAd. Для метода load необходимо инициализировать объект InterstitialAd, а также иметь идентификатор рекламного блока и объект AdRequest. Возвращается объект firebase::Future, который можно использовать для отслеживания состояния и результата операции загрузки.
В приведенном ниже коде показано, как загрузить объявление после успешной инициализации InterstitialAd.
firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = interstitial_ad->LoadAd(interstitial_ad_unit_id, ad_request);
Регистрация обратных вызовов
Чтобы получать уведомления о показе межстраничных объявлений и событиях жизненного цикла, необходимо расширить класс FullScreenContentListener. Собственный подкласс FullScreenContentListener можно зарегистрировать с помощью метода InterstitialAd::SetFullScreenContentListener(). Он будет получать обратные вызовы при успешном или неуспешном показе объявления, а также при его закрытии.
В приведенном ниже коде показано, как расширить класс и назначить его объявлению.
class ExampleFullScreenContentListener : public firebase::gma::FullScreenContentListener { public: ExampleFullScreenContentListener() {} void OnAdClicked() override { // This method is invoked when the user clicks the ad. } void OnAdDismissedFullScreenContent() override { // This method is invoked when the ad dismisses full screen content. } void OnAdFailedToShowFullScreenContent(const AdError& error) override { // This method is invoked when the ad failed to show full screen content. // Details about the error are contained within the AdError parameter. } void OnAdImpression() override { // This method is invoked when an impression is recorded for an ad. } void OnAdShowedFullScreenContent() override { // This method is invoked when the ad showed its full screen content. } }; ExampleFullScreenContentListener* full_screen_content_listener = new ExampleFullScreenContentListener(); interstitial_ad->SetFullScreenContentListener(full_screen_content_listener);
InterstitialAd – это одноразовый объект. Это означает, что после показа межстраничного объявления оно не может быть показано снова. Рекомендуется загружать следующее межстраничное объявление в методе OnAdDismissedFullScreenContent() класса FullScreenContentListener, чтобы оно начало загружаться сразу после закрытия предыдущего.
Показ объявления
Межстраничные объявления должны показываться во время естественных пауз в работе приложения, например между уровнями игры или после выполнения задачи.
FullScreenContentListener можно использовать, чтобы определить, когда объявление было показано в полноэкранном режиме, а future, возвращаемый Show(), также сигнализирует об успешном показе объявления.
firebase::Future<void> result = interstitial_ad->Show();
Рекомендации
- Подумайте, подходят ли межстраничные объявления для вашего приложения.
- Межстраничные объявления лучше всего подходят для приложений с естественными переходами между экранами. Например, переходом может быть выполнение задачи в приложении, такой как отправка изображения или завершение игрового уровня. Поскольку пользователь ожидает перерыва в действии, межстраничное объявление не помешает ему. Подумайте, в какие моменты лучше показывать межстраничные объявления и как на них будут реагировать пользователи.
- Не забудьте приостановить действие при показе межстраничного объявления.
- Существует несколько типов межстраничных объявлений: текстовые, графические, видеообъявления и т. д. Важно, чтобы при показе межстраничного объявления приложение приостанавливало использование некоторых ресурсов, чтобы их могло использовать объявление. Например, при вызове межстраничного объявления необходимо приостановить воспроизведение звука в приложении. Возобновить его можно с помощью метода
OnAdDismissedFullScreenContentустановленного объектаFullScreenContentListener, который будет вызван, когда пользователь закончит взаимодействовать с объявлением. Кроме того, на время показа объявления рекомендуется приостанавливать выполнение ресурсоемких задач, например игрового цикла. Это позволит избежать задержек в воспроизведении видео и графики. - Убедитесь, что страница загружается достаточно быстро.
- Важно не только показывать межстраничные объявления в подходящий момент, но и сделать так, чтобы пользователю не приходилось ждать их загрузки. Загрузка объявления до его показа гарантирует, что в нужный момент в приложении будет готово полностью загруженное межстраничное объявление.
- Не показывайте пользователю слишком много объявлений.
- Увеличение частоты показа межстраничных объявлений может показаться отличным способом повысить доход, но это также может ухудшить удобство для пользователей и снизить CTR. Убедитесь, что реклама не показывается слишком часто и не мешает пользователям работать с приложением.
- Не используйте объект Future, возвращаемый методом load, для показа межстраничного объявления.
- Это может быть неудобно для пользователей. Вместо этого загружайте объявление заранее.
Дополнительные ресурсы
Пример на GitHub
- Посмотрите исходный код нашего примера приложения на GitHub.
Видеоуроки Mobile Ads Garage
Истории успеха
Дальнейшие действия
- Если вы ещё этого не сделали, создайте собственный межстраничный рекламный блок в интерфейсе AdMob.
- Подробнее о таргетинге объявлений и правилах в отношении межстраничных объявлений…