Нативные объявления – это объекты объявлений, которые показываются пользователям с помощью компонентов интерфейса, встроенных в платформу. Они показываются в тех же типах представлений, которые вы уже используете для создания макетов, и могут быть отформатированы в соответствии с визуальным дизайном вашего приложения.
Когда нативное объявление загружается, ваше приложение получает объект объявления, содержащий его объекты, и именно приложение, а не 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. В следующем примере показано, как включить аппаратное ускорение для всего приложения, но отключить его для одного объекта activity:
<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>
Подробнее о том, как управлять аппаратным ускорением, рассказывается в руководстве по аппаратному ускорению. Обратите внимание, что отдельные просмотры объявлений нельзя включить для аппаратного ускорения, если отключена функция "Действия". Поэтому для нее должно быть включено аппаратное ускорение.
Показ объявления
После загрузки объявления его нужно показать пользователям. Подробнее о том, как это сделать, рассказывается в руководстве по расширенным функциям нативных объявлений.