Нативная реклама — это рекламные ресурсы, которые представляются пользователям через компоненты пользовательского интерфейса, встроенные в платформу. Они отображаются с использованием тех же типов представлений, с помощью которых вы уже создаете свои макеты, и могут быть отформатированы в соответствии с визуальным дизайном взаимодействия с пользователем, в котором они живут. С точки зрения программирования это означает, что когда нативное объявление загружается, ваше приложение получает объект NativeAd
, содержащий его активы, и затем приложение (а не Google Mobile Ads SDK) отвечает за их отображение.
Вообще говоря, успешное внедрение нативной рекламы состоит из двух частей: загрузка рекламы с помощью SDK и последующее отображение рекламного контента в вашем приложении.
Эта страница посвящена использованию SDK для загрузки нативной рекламы.
Предпосылки
- Заполните руководство по началу работы.
Реализация
Нативные объявления загружаются с помощью класса AdLoader
, у которого есть собственный класс Builder
для его настройки во время создания. Добавляя прослушиватели в AdLoader
при его создании, приложение указывает, какие типы нативной рекламы оно готово получать. Затем AdLoader
запрашивает только эти типы.
Создайте загрузчик рекламы
В следующем коде показано, как создать AdLoader
, который может загружать нативную рекламу:
Ява
AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { // Show the ad. } }) .withAdListener(new AdListener() { @Override public void onAdFailedToLoad(LoadAdError adError) { // Handle the failure by logging, altering the UI, and so on. } }) .withNativeAdOptions(new NativeAdOptions.Builder() // Methods in the NativeAdOptions.Builder class can be // used here to specify individual options settings. .build()) .build();
Котлин
val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { ad : NativeAd -> // Show the ad. } .withAdListener(object : AdListener() { override fun onAdFailedToLoad(adError: LoadAdError) { // Handle the failure by logging, altering the UI, and so on. } }) .withNativeAdOptions(NativeAdOptions.Builder() // Methods in the NativeAdOptions.Builder class can be // used here to specify individual options settings. .build()) .build()
Подготовьтесь к формату NativeAd
Первый метод выше отвечает за подготовку AdLoader
для формата NativeAd
:
-
forNativeAd()
- Вызов этого метода настраивает
AdLoader
для запроса нативных объявлений. Когда объявление успешно загружено, вызывается методonNativeAdLoaded()
объекта слушателя.
Когда AdLoader
делает запрос объявления, Google выбирает и возвращает объявление, которое максимизирует доход издателя.
Настройте AdListener с помощью AdLoader (необязательно)
Во время создания AdLoader
выше функция withAdListener
устанавливает AdListener
. Метод принимает AdListener
в качестве единственного параметра, который получает обратные вызовы от AdLoader
когда происходят события жизненного цикла рекламы:
Ява
.withAdListener(new AdListener() { // AdListener callbacks can be overridden here. })
Котлин
.withAdListener(object : AdListener() { // AdListener callbacks can be overridden here. })
Загрузить объявления
После того, как вы закончили создание AdLoader
, пришло время использовать его для загрузки рекламы. Для этого доступны два метода: loadAd()
и loadAds()
.
-
loadAd()
- Этот метод отправляет запрос на одно объявление. :
Ява
adLoader.loadAd(new AdRequest.Builder().build());
Котлин
adLoader.loadAd(AdRequest.Builder().build())
-
loadAds()
- Этот метод отправляет запрос на несколько объявлений (до пяти):
Ява
adLoader.loadAds(new AdRequest.Builder().build(), 3);
Котлин
adLoader.loadAds(AdRequest.Builder().build(), 3)
Оба этих метода принимают в качестве первого параметра объект AdRequest
. Это тот же класс AdRequest
, который используется баннерами и межстраничными объявлениями, и вы можете использовать методы класса AdRequest
для добавления информации о таргетинге , как и в случае с другими форматами объявлений.
loadAds()
принимает дополнительный параметр: количество объявлений, которые SDK должен попытаться загрузить по запросу. Это число ограничено пятью, и не гарантируется, что SDK вернет точное количество запрошенных объявлений.
Все возвращенные объявления Google будут отличаться друг от друга. Уникальность объявлений от зарезервированного инвентаря или сторонних покупателей, в том числе покупателей, настроенных для каскадного посредничества или назначения ставок, не гарантируется.
Обратные вызовы
После вызова loadAd()
выполняется один обратный вызов для ранее определенных методов прослушивателя, чтобы доставить собственный рекламный объект или сообщить об ошибке.
После вызова loadAds()
несколько таких обратных вызовов (не менее одного и не более, чем количество запрошенных объявлений). Приложения, запрашивающие несколько объявлений, должны вызывать AdLoader.isLoading()
в своих реализациях обратного вызова, чтобы определить, завершен ли процесс загрузки.
Вот пример, показывающий, как проверить isLoading()
в onNativeAdLoaded()
:
Ява
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { ... // some code that displays the ad. ... if (adLoader.isLoading()) { // The AdLoader is still loading ads. // Expect more adLoaded or onAdFailedToLoad callbacks. } else { // The AdLoader has finished loading ads. } } }).build(); adLoader.loadAds(new AdRequest.Builder().build(), 3);
Котлин
lateinit var adLoader: AdLoader ... adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { ... // some code that displays the ad. ... if (adLoader.isLoading) { // The AdLoader is still loading ads. // Expect more adLoaded or onAdFailedToLoad callbacks. } else { // The AdLoader has finished loading ads. } }.build() adLoader.loadAds(AdRequest.Builder().build(), 3)
Освобождение ресурсов
Обязательно используйте метод destroy()
для загруженных нативных объявлений. Это освобождает используемые ресурсы и предотвращает утечки памяти.
Убедитесь, что все ссылки NativeAd
уничтожены в onDestroy()
вашей активности.
В onNativeAdLoaded
обязательно уничтожьте все существующие нативные объявления, ссылки на которые будут разыменованы.
Еще одна ключевая проверка — уничтожена ли активность, и если да, вызовите destroy()
для возвращенного объявления и немедленно вернитесь:
Ява
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { // If this callback occurs after the activity is destroyed, you // must call destroy and return or you may get a memory leak. // Note `isDestroyed()` is a method on Activity. if (isDestroyed()) { nativeAd.destroy(); return; } ... } }).build();
Котлин
lateinit var adLoader: AdLoader ... adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { nativeAd -> // If this callback occurs after the activity is destroyed, you // must call destroy and return or you may get a memory leak. // Note `isDestroyed` is a method on Activity. if (isDestroyed) { nativeAd.destroy() return@forNativeAd } ... }.build()
Всегда тестируйте тестовые объявления
При создании и тестировании своих приложений убедитесь, что вы используете тестовую рекламу, а не живую производственную рекламу. Невыполнение этого требования может привести к приостановке действия вашей учетной записи.
Самый простой способ загрузить тестовые объявления — использовать наш специальный идентификатор тестового рекламного блока для Native Advanced на Android:
ca-app-pub-3940256099942544/2247696110
Он был специально настроен для возврата тестовых объявлений для каждого запроса, и вы можете использовать его в своих собственных приложениях при написании кода, тестировании и отладке. Просто убедитесь, что вы заменили его собственным идентификатором рекламного блока, прежде чем публиковать свое приложение.
Дополнительные сведения о том, как работают тестовые объявления Mobile Ads SDK, см. в разделе Тестовые объявления .
Когда запрашивать рекламу
Приложения, отображающие нативную рекламу, могут запросить их до того, как они будут фактически показаны. Во многих случаях это рекомендуемая практика. Например, приложение, отображающее список элементов с нативной рекламой, может загружать нативную рекламу для всего списка, зная, что некоторые из них будут показаны только после того, как пользователь прокрутит представление, а некоторые могут не отображаться вообще.
Аппаратное ускорение для видеорекламы
Чтобы видеообъявления успешно отображались в ваших нативных рекламных представлениях, необходимо включить аппаратное ускорение .
Аппаратное ускорение включено по умолчанию, но некоторые приложения могут отключить его. Если это относится к вашему приложению, мы рекомендуем включить аппаратное ускорение для классов действий, использующих рекламу.
Включение аппаратного ускорения
Если ваше приложение не ведет себя должным образом при глобальном включении аппаратного ускорения, вы также можете контролировать его для отдельных действий. Чтобы включить или отключить аппаратное ускорение, вы можете использовать атрибут 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>
Дополнительные сведения о возможностях управления аппаратным ускорением см. в руководстве по аппаратному ускорению. Обратите внимание, что аппаратное ускорение нельзя включить для отдельных просмотров объявлений, если действие отключено, поэтому для самого действия должно быть включено аппаратное ускорение.
Показать нативную рекламу
После того, как вы загрузили объявление, все, что вам остается, — это показать его своим пользователям. Перейдите к нашему руководству Native Advanced, чтобы узнать, как это сделать.
,
Нативная реклама — это рекламные ресурсы, которые представляются пользователям через компоненты пользовательского интерфейса, встроенные в платформу. Они отображаются с использованием тех же типов представлений, с помощью которых вы уже создаете свои макеты, и могут быть отформатированы в соответствии с визуальным дизайном взаимодействия с пользователем, в котором они живут. С точки зрения программирования это означает, что когда нативное объявление загружается, ваше приложение получает объект NativeAd
, содержащий его активы, и затем приложение (а не Google Mobile Ads SDK) отвечает за их отображение.
Вообще говоря, успешное внедрение нативной рекламы состоит из двух частей: загрузка рекламы с помощью SDK и последующее отображение рекламного контента в вашем приложении.
Эта страница посвящена использованию SDK для загрузки нативной рекламы.
Предпосылки
- Заполните руководство по началу работы.
Реализация
Нативные объявления загружаются с помощью класса AdLoader
, у которого есть собственный класс Builder
для его настройки во время создания. Добавляя прослушиватели в AdLoader
при его создании, приложение указывает, какие типы нативной рекламы оно готово получать. Затем AdLoader
запрашивает только эти типы.
Создайте загрузчик рекламы
В следующем коде показано, как создать AdLoader
, который может загружать нативную рекламу:
Ява
AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { // Show the ad. } }) .withAdListener(new AdListener() { @Override public void onAdFailedToLoad(LoadAdError adError) { // Handle the failure by logging, altering the UI, and so on. } }) .withNativeAdOptions(new NativeAdOptions.Builder() // Methods in the NativeAdOptions.Builder class can be // used here to specify individual options settings. .build()) .build();
Котлин
val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { ad : NativeAd -> // Show the ad. } .withAdListener(object : AdListener() { override fun onAdFailedToLoad(adError: LoadAdError) { // Handle the failure by logging, altering the UI, and so on. } }) .withNativeAdOptions(NativeAdOptions.Builder() // Methods in the NativeAdOptions.Builder class can be // used here to specify individual options settings. .build()) .build()
Подготовьтесь к формату NativeAd
Первый метод выше отвечает за подготовку AdLoader
для формата NativeAd
:
-
forNativeAd()
- Вызов этого метода настраивает
AdLoader
для запроса нативных объявлений. Когда объявление успешно загружено, вызывается методonNativeAdLoaded()
объекта слушателя.
Когда AdLoader
делает запрос объявления, Google выбирает и возвращает объявление, которое максимизирует доход издателя.
Настройте AdListener с помощью AdLoader (необязательно)
Во время создания AdLoader
выше функция withAdListener
устанавливает AdListener
. Метод принимает AdListener
в качестве единственного параметра, который получает обратные вызовы от AdLoader
когда происходят события жизненного цикла рекламы:
Ява
.withAdListener(new AdListener() { // AdListener callbacks can be overridden here. })
Котлин
.withAdListener(object : AdListener() { // AdListener callbacks can be overridden here. })
Загрузить объявления
После того, как вы закончили создание AdLoader
, пришло время использовать его для загрузки рекламы. Для этого доступны два метода: loadAd()
и loadAds()
.
-
loadAd()
- Этот метод отправляет запрос на одно объявление. :
Ява
adLoader.loadAd(new AdRequest.Builder().build());
Котлин
adLoader.loadAd(AdRequest.Builder().build())
-
loadAds()
- Этот метод отправляет запрос на несколько объявлений (до пяти):
Ява
adLoader.loadAds(new AdRequest.Builder().build(), 3);
Котлин
adLoader.loadAds(AdRequest.Builder().build(), 3)
Оба этих метода принимают в качестве первого параметра объект AdRequest
. Это тот же класс AdRequest
, который используется баннерами и межстраничными объявлениями, и вы можете использовать методы класса AdRequest
для добавления информации о таргетинге , как и в случае с другими форматами объявлений.
loadAds()
принимает дополнительный параметр: количество объявлений, которые SDK должен попытаться загрузить по запросу. Это число ограничено пятью, и не гарантируется, что SDK вернет точное количество запрошенных объявлений.
Все возвращенные объявления Google будут отличаться друг от друга. Уникальность объявлений от зарезервированного инвентаря или сторонних покупателей, в том числе покупателей, настроенных для каскадного посредничества или назначения ставок, не гарантируется.
Обратные вызовы
После вызова loadAd()
выполняется один обратный вызов для ранее определенных методов прослушивателя, чтобы доставить собственный рекламный объект или сообщить об ошибке.
После вызова loadAds()
несколько таких обратных вызовов (не менее одного и не более, чем количество запрошенных объявлений). Приложения, запрашивающие несколько объявлений, должны вызывать AdLoader.isLoading()
в своих реализациях обратного вызова, чтобы определить, завершен ли процесс загрузки.
Вот пример, показывающий, как проверить isLoading()
в onNativeAdLoaded()
:
Ява
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { ... // some code that displays the ad. ... if (adLoader.isLoading()) { // The AdLoader is still loading ads. // Expect more adLoaded or onAdFailedToLoad callbacks. } else { // The AdLoader has finished loading ads. } } }).build(); adLoader.loadAds(new AdRequest.Builder().build(), 3);
Котлин
lateinit var adLoader: AdLoader ... adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { ... // some code that displays the ad. ... if (adLoader.isLoading) { // The AdLoader is still loading ads. // Expect more adLoaded or onAdFailedToLoad callbacks. } else { // The AdLoader has finished loading ads. } }.build() adLoader.loadAds(AdRequest.Builder().build(), 3)
Освобождение ресурсов
Обязательно используйте метод destroy()
для загруженных нативных объявлений. Это освобождает используемые ресурсы и предотвращает утечки памяти.
Убедитесь, что все ссылки NativeAd
уничтожены в onDestroy()
вашей активности.
В onNativeAdLoaded
обязательно уничтожьте все существующие нативные объявления, ссылки на которые будут разыменованы.
Еще одна ключевая проверка — уничтожена ли активность, и если да, вызовите destroy()
для возвращенного объявления и немедленно вернитесь:
Ява
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd nativeAd) { // If this callback occurs after the activity is destroyed, you // must call destroy and return or you may get a memory leak. // Note `isDestroyed()` is a method on Activity. if (isDestroyed()) { nativeAd.destroy(); return; } ... } }).build();
Котлин
lateinit var adLoader: AdLoader ... adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd { nativeAd -> // If this callback occurs after the activity is destroyed, you // must call destroy and return or you may get a memory leak. // Note `isDestroyed` is a method on Activity. if (isDestroyed) { nativeAd.destroy() return@forNativeAd } ... }.build()
Всегда тестируйте тестовые объявления
При создании и тестировании своих приложений убедитесь, что вы используете тестовую рекламу, а не живую производственную рекламу. Невыполнение этого требования может привести к приостановке действия вашей учетной записи.
Самый простой способ загрузить тестовые объявления — использовать наш специальный идентификатор тестового рекламного блока для Native Advanced на Android:
ca-app-pub-3940256099942544/2247696110
Он был специально настроен для возврата тестовых объявлений для каждого запроса, и вы можете использовать его в своих собственных приложениях при написании кода, тестировании и отладке. Просто убедитесь, что вы заменили его собственным идентификатором рекламного блока, прежде чем публиковать свое приложение.
Дополнительные сведения о том, как работают тестовые объявления Mobile Ads SDK, см. в разделе Тестовые объявления .
Когда запрашивать рекламу
Приложения, отображающие нативную рекламу, могут запросить их до того, как они будут фактически показаны. Во многих случаях это рекомендуемая практика. Например, приложение, отображающее список элементов с нативной рекламой, может загружать нативную рекламу для всего списка, зная, что некоторые из них будут показаны только после того, как пользователь прокрутит представление, а некоторые могут не отображаться вообще.
Аппаратное ускорение для видеорекламы
Чтобы видеообъявления успешно отображались в ваших нативных рекламных представлениях, необходимо включить аппаратное ускорение .
Аппаратное ускорение включено по умолчанию, но некоторые приложения могут отключить его. Если это относится к вашему приложению, мы рекомендуем включить аппаратное ускорение для классов действий, использующих рекламу.
Включение аппаратного ускорения
Если ваше приложение не ведет себя должным образом при глобальном включении аппаратного ускорения, вы также можете контролировать его для отдельных действий. Чтобы включить или отключить аппаратное ускорение, вы можете использовать атрибут 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>
Дополнительные сведения о возможностях управления аппаратным ускорением см. в руководстве по аппаратному ускорению. Обратите внимание, что аппаратное ускорение нельзя включить для отдельных просмотров объявлений, если действие отключено, поэтому для самого действия должно быть включено аппаратное ускорение.
Показать нативную рекламу
После того, как вы загрузили объявление, все, что вам остается, — это показать его своим пользователям. Перейдите к нашему руководству Native Advanced, чтобы узнать, как это сделать.