Нативные объявления – это объекты объявлений, которые показываются пользователям через компоненты интерфейса, нативные для платформы. Они показываются в тех же типах представлений, которые вы уже используете для создания макетов, и могут быть отформатированы в соответствии с визуальным оформлением вашего приложения.
При загрузке нативного объявления приложение получает объект объявления, содержащий его объекты, и за их показ отвечает приложение, а не Google Mobile Ads SDK (Legacy).
В целом успешное внедрение нативных объявлений состоит из двух частей: загрузка объявления с помощью SDK и последующий показ рекламного контента в приложении.
В этой статье рассказывается, как использовать SDK для загрузки нативных объявлений. Совет. Подробную информацию о нативных объявлениях можно найти в нашем пособии.
Вы также можете ознакомиться с историями успеха наших клиентов: история успеха 1, история успеха 2.
Требования
Прежде чем продолжить, настройте Google Mobile Ads SDK (Legacy).
Всегда используйте тестовые объявления
При создании и тестировании приложений используйте тестовые объявления, а не реальные.
Проще всего загрузить тестовые объявления, используя специальный идентификатор тестового рекламного блока для нативных объявлений на Android:
ca-app-pub-3940256099942544/2247696110
Он специально настроен так, чтобы возвращать тестовые объявления для каждого запроса. Вы можете использовать его в своих приложениях при написании кода, тестировании и отладке. Перед публикацией приложения не забудьте заменить его на идентификатор своего рекламного блока.
Подробнее о тестовых объявлениях Google Mobile Ads SDK (Legacy) рассказывается в статье Как включить тестовые объявления.
Загрузка объявлений
Нативные объявления загружаются с помощью класса AdLoader, который содержит собственный класс Builder, позволяющий настраивать его при создании. Добавляя прослушиватели в AdLoader при создании, приложение указывает, какие типы нативных объявлений оно готово получать. Затем AdLoader запрашивает только эти типы.
Создание AdLoader
В приведенном ниже примере кода показано, как создать объект AdLoader, который может загружать нативные объявления.
Java
Kotlin
Замените AD_UNIT_ID идентификатором тестового устройства.
Метод forNativeAd() отвечает за подготовку AdLoader для формата NativeAd.
Когда объявление загружено, вызывается метод onNativeAdLoaded() объекта прослушивателя.
Как настроить AdListener с помощью AdLoader (необязательно)
При создании AdLoader функция withAdListener задает AdListener для загрузчика. В качестве единственного параметра метод принимает объект AdListener, который получает обратные вызовы от AdLoader при возникновении событий жизненного цикла объявления:
Java
adLoaderBuilder.withAdListener(
// Override AdListener callbacks here.
new AdListener() {});
Kotlin
adLoaderBuilder.withAdListener(
// Override AdListener callbacks here.
object : AdListener() {}
)
Запросить объявления
После того как вы создали AdLoader, вы можете использовать его для запроса объявлений.
Для этого есть два метода: loadAd() и loadAds().
loadAd()
Этот метод отправляет запрос на одно объявление.
Java
adLoader.loadAd(new AdRequest.Builder().build());
Kotlin
adLoader.loadAd(AdRequest.Builder().build())
loadAds()
Этот метод отправляет запрос на несколько объявлений (до пяти):
Java
// Load three native ads.
adLoader.loadAds(new AdRequest.Builder().build(), 3);
Kotlin
// Load three native ads.
adLoader.loadAds(AdRequest.Builder().build(), 3)
Оба метода принимают объект AdRequest в качестве первого параметра. Этот же класс AdRequest используется для баннеров и межстраничных объявлений. Вы можете использовать методы класса AdRequest, чтобы добавить информацию о таргетинге, как и в случае с другими форматами объявлений.
Загрузка нескольких объявлений (необязательно)
Метод loadAds() принимает дополнительный параметр – количество объявлений, которые SDK должен попытаться загрузить по запросу. Максимальное количество объявлений – пять. Нет гарантии, что SDK вернет именно то количество объявлений, которое было запрошено.
Все возвращенные объявления Google будут отличаться друг от друга, однако уникальность объявлений из зарезервированного инвентаря или от сторонних покупателей не гарантируется.
Не используйте метод loadAds(), если вы используете медиацию, поскольку запросы нескольких нативных объявлений не работают для идентификаторов рекламных блоков, настроенных для медиации.
Обратные вызовы
После вызова loadAd() выполняется один обратный вызов ранее определенных методов прослушивателя, чтобы предоставить объект нативного объявления или сообщить об ошибке.
После вызова loadAds() выполняется несколько таких обратных вызовов (не менее одного и не более количества запрошенных объявлений). Приложения, запрашивающие несколько объявлений, должны вызывать AdLoader.isLoading() в своих реализациях обратного вызова, чтобы определить, завершился ли процесс загрузки.
Ниже показано, как проверить isLoading() в обратном вызове onNativeAdLoaded().
Java
adLoaderBuilder
.forNativeAd(
nativeAd -> {
// This callback is invoked when a native ad is successfully loaded.
})
.build();
Kotlin
adLoaderBuilder
.forNativeAd { nativeAd ->
// This callback is invoked when a native ad is successfully loaded.
}
.build()
Освобождение ресурсов
Обязательно используйте метод destroy() для загруженных нативных объявлений. Это освобождает
используемые ресурсы и предотвращает утечки памяти.
Убедитесь, что все ссылки на NativeAd удалены в методе onDestroy().
В обратном вызове onNativeAdLoaded удалите все существующие нативные объявления, на которые не будет ссылок.
Ещё одна важная проверка – уничтожено ли действие. Если да, вызовите destroy() для возвращенного объявления и сразу же верните его.
Java
nativeAd.destroy();
Kotlin
nativeAd.destroy()
Рекомендации
При загрузке объявлений следуйте приведенным ниже правилам.
Если в приложении нативные объявления показываются в списке, то этот список должен кешироваться заранее.
При предварительном кешировании объявлений очищайте кеш и перезагружайте его через час.
- Не вызывайте
loadAd()илиloadAds()дляAdLoader, пока не завершится загрузка первого запроса.
Кешируйте только необходимые нативные объявления. Например, при предварительном кешировании кешируйте только те объявления, которые сразу видны на экране. Нативные объявления занимают много памяти, и их кеширование без удаления приводит к чрезмерному использованию памяти.
Удаляйте нативные объявления, когда они больше не используются.
Аппаратное ускорение для видеообъявлений
Чтобы видеообъявления корректно показывались в нативных рекламных блоках, необходимо включить аппаратное ускорение.
Аппаратное ускорение включено по умолчанию, но некоторые приложения могут его отключать. Если это относится к вашему приложению, рекомендуем включить аппаратное ускорение для классов Activity, в которых показывается реклама.
Включение аппаратного ускорения
Если приложение работает некорректно, когда аппаратное ускорение включено на глобальном уровне, вы можете управлять им для отдельных действий. Чтобы включить или отключить аппаратное ускорение, используйте атрибут android:hardwareAccelerated для элементов <application> и <activity> в файле AndroidManifest.xml. В следующем примере аппаратное ускорение включено для всего приложения, но отключено для одного действия:
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
<!-- For activities that don't use ads, hardwareAcceleration can be false. -->
<activity android:hardwareAccelerated="false" />
</application>
Дополнительную информацию о настройках аппаратного ускорения можно найти в руководстве по аппаратному ускорению. Обратите внимание, что аппаратное ускорение нельзя включить для отдельных объявлений, если оно отключено для действия.
Показ объявления
После загрузки объявления остается только показать его пользователям. Дополнительную информацию можно найти в статьях Расширенные нативные объявления и Полноэкранные нативные объявления.