Нативная реклама — это рекламные активы, которые представляются пользователям через компоненты пользовательского интерфейса, которые являются собственными для платформы. Они отображаются с использованием тех же типов представлений, с которыми вы уже создаете свои макеты, и могут быть отформатированы в соответствии с визуальным дизайном вашего приложения.
При загрузке нативной рекламы ваше приложение получает объект рекламы, содержащий ее активы, и приложение, а не Google Mobile Ads SDK, затем отвечает за их отображение.
В целом успешная реализация нативной рекламы состоит из двух частей: загрузка объявления с помощью SDK и последующее отображение рекламного контента в вашем приложении.
На этой странице показано, как использовать SDK для загрузки нативной рекламы . Совет: узнайте больше о нативной рекламе в нашем руководстве по нативной рекламе .
Вы также можете ознакомиться с историями успеха некоторых клиентов: пример 1 , пример 2 .
Предпосылки
- Заполните руководство по началу работы .
Всегда проводите тестирование с помощью тестовых объявлений
При создании и тестировании приложений обязательно используйте тестовые объявления, а не реальные, производственные объявления.
Самый простой способ загрузить тестовую рекламу — использовать наш специальный идентификатор тестового рекламного блока для нативной рекламы на Android:
ca-app-pub-3940256099942544/2247696110
Он был специально настроен для возврата тестовых объявлений для каждого запроса, и вы можете использовать его в своих собственных приложениях при кодировании, тестировании и отладке. Просто убедитесь, что вы заменили его на свой собственный идентификатор рекламного блока перед публикацией приложения.
Дополнительную информацию о работе тестовых объявлений Google Mobile Ads SDK см. в разделе Тестовые объявления .
Загрузить рекламу
Нативная реклама загружается с помощью класса AdLoader
, который имеет свой собственный класс Builder
для настройки во время создания. Добавляя слушателей к AdLoader
при его создании, приложение указы��а��т, к��кие типы нативной рекламы оно готово получать. Затем 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.
}
})
.withNativeAdOptions(NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build()
Метод forNativeAd()
отвечает за подготовку AdLoader
для формата NativeAd
. Когда реклама успешно загружена, вызывается метод onNativeAdLoaded()
объекта слушателя.
Настройте 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 будут отличаться друг от друга, хотя уникальность объявлений из зарезервированного инвентаря или от сторонних покупателей не гарантируется.
Не используйте метод loadAds()
, если вы используете посредничество, поскольку запросы на несколько нативных объявлений в настоящее время не работают для идентификаторов рекламных блоков, настроенных для посредничества.
Обратные вызовы
После вызова 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()
Лучшие практики
Соблюдайте эти правила при загрузке объявлений.
Приложения, использующие нативную рекламу в списке, должны предварительно кэшировать список рекламы.
При предварительном кэшировании рекламы очистите кэш и перезагрузите страницу через час.
- Не вызывайте
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>
См. руководство по HW-ускорению для получения дополнительной информации о параметрах управления аппаратным ускорением. Обратите внимание, что отдельные просмотры рекламы не могут быть включены для аппаратного ускорения, если Activity отключено, поэтому само Activity должно иметь включенное аппаратное ускорение.
Покажите свою рекламу
После загрузки рекламы вам остается только отобразить ее вашим пользователям. Перейдите к нашему руководству Native Advanced, чтобы узнать, как это сделать.
,Нативная реклама — это рекламные активы, которые представляются пользователям через компоненты пользовательского интерфейса, которые являются собственными для платформы. Они отображаются с использованием тех же типов представлений, с которыми вы уже создаете свои макеты, и могут быть отформатированы в соответствии с визуальным дизайном вашего приложения.
При загрузке нативной рекламы ваше приложение получает объект рекламы, содержащий ее активы, и приложение, а не Google Mobile Ads SDK, ��атем отвечает за их отображение.
В целом успешная реализация нативной рекламы состоит из двух частей: загрузка объявления с помощью SDK и последующее отображение рекламного контента в вашем приложении.
На этой странице показано, как использовать SDK для загрузки нативной рекламы . Совет: узнайте больше о нативной рекламе в нашем руководстве по нативной рекламе .
Вы также можете ознакомиться с историями успеха некоторых клиентов: пример 1 , пример 2 .
Предпосылки
- Заполните руководство по началу работы .
Всегда проводите тестирование с помощью тестовых объявлений
При создании и тестировании приложений обязательно используйте тестовые объявления, а не реальные, производственные объявления.
Самый простой способ загрузить тестовую рекламу — использовать наш специальный идентификатор тестового рекламного блока для нативной рекламы на Android:
ca-app-pub-3940256099942544/2247696110
Он был специально настроен для возврата тестовых объявлений для каждого запроса, и вы можете использовать его в своих собственных приложениях при кодировании, тестировании и отладке. Просто убедитесь, что вы заменили его на свой собственный идентификатор рекламного блока перед публикацией приложения.
Дополнительную информацию о работе тестовых объявлений Google Mobile Ads SDK см. в разделе Тестовые объявления .
Загрузить рекламу
Нативная реклама загружается с помощью класса AdLoader
, который имеет свой собственный класс Builder
для настройки во ��ремя создания. Добавляя слушателей к AdLoader
при его создании, приложение указывает, какие типы нативной рекламы оно готово получать. Затем 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.
}
})
.withNativeAdOptions(NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build()
Метод forNativeAd()
отвечает за подготовку AdLoader
для формата NativeAd
. Когда реклама успешно загружена, вызывается метод onNativeAdLoaded()
объекта слушателя.
Настройте 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 будут отличаться друг от друга, хотя уникальность объявлений из зарезервированного инвентаря или от сторонних покупателей не гарантируется.
Не используйте метод loadAds()
, если вы используете посредничество, поскольку запросы на несколько нативных объявлений в настоящее время не работают для идентификаторов рекламных блоков, настроенных для посредничества.
Обратные вызовы
После вызова 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()
Лучшие практики
Соблюдайте эти правила при загрузке объявлений.
Приложения, использующие нативную рекламу в списке, должны предварительно кэшировать список рекламы.
При пред��арительном кэшировании р��кламы очистите кэш и перезагрузите страницу через час.
- Не вызывайте
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>
См. руководство по HW-ускорению для получения дополнительной информации о параметрах управления аппаратным ускорением. Обратите внимание, что отдельные просмотры рекламы не могут быть включены для аппаратного ускорения, если Activity отключено, поэтому само Activity должно иметь включенное аппаратное ускорение.
Покажите свою рекламу
После загрузки рекламы вам остается только отобразить ��е ваш��м поль��ователям. Перейдите к нашему руководству Native Advanced, чтобы узнать, как это сделать.