Перейти к основному содержимому

Нативная реклама

Нативная реклама — это гибкий тип рекламы. Вы можете адаптировать отображение к своему пользовательскому интерфейсу, подготовив шаблон.

к сведению

Appodeal предоставляет 4 варианта реализации макета нативных объявлений: 3 шаблона + ваша пользовательская реализация. Все они наследуются от одного и того же класса NativeAdView.

NativeAdView состоит из следующих компонентов:

  1. NativeIconView - Иконка нативного объявления.
  2. AdAttributionView - Индикатор рекламы. Это TextView с надписью "Реклама".
  3. TitleVIew - Заголовок нативного объявления.
  4. DescriptionView - Текстовое описание нативного объявления.
  5. RatingBarView - Рейтинг приложения в диапазоне [0-5].
  6. NativeMediaView - Медиаконтент нативного объявления.
  7. CallToActionView - Кнопка для клика.
  8. AdChoiceView - Специальный рекламный значок, предоставленный рекламной сетью.

Реализация шаблонов:

Для их отображения все, что вам нужно сделать, это:

  1. Создать программно или в файле макета один из классов шаблонов View

Классы шаблонов нативных представлений:

  • NativeAdViewNewsFeed
  • NativeAdViewAppWall
  • NativeAdViewContentStream

NativeAdView для пользовательской реализации:

Для его отображения все, что вам нужно сделать, это:

  1. Создать класс NativeAdVIew программно или в файле макета.
  2. Внутри созданного NativeAdViewрасположить все необходимые View/IconView/MediaView для отображения в любом стиле, который вы предпочитаете.
  3. Привязать программно или в файле макета все необходимые View/IconView/MediaView.

Нативное представление для пользовательской реализации:

  • NativeAdView

Руководство по интеграции

  1. Создайте программно или в файле макета один из классов шаблонов View:
<com.appodeal.ads.nativead.NativeAdViewNewsFeed
android:id="@+id/native_news_feed"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<com.appodeal.ads.nativead.NativeAdViewAppWall
android:id="@+id/native_app_wall"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<com.appodeal.ads.nativead.NativeAdViewContentStream
android:id="@+id/native_content_stream"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
  1. Получите экземпляр представления из макета ИЛИ добавьте программно созданный ViewTemplate в иерархию ваших представлений:
val newsFeedView = findViewById<NativeAdViewNewsFeed>(R.id.native_news_feed);
val appWallView = findViewById<NativeAdViewAppWall>(R.id.native_app_wall);
val contentStreamView = findViewById<NativeAdViewContentStream>(R.id.native_content_stream);

rootView.addView(newsFeedView)
rootView.addView(appWallView)
rootView.addView(contentStreamView)
  1. Когда NativeAd загружен, просто зарегистрируйте его
if (Appodeal.isLoaded(Appodeal.NATIVE)) {
newsFeedView.registerView(Appodeal.getNativeAdCount(1))
}
  1. Когда отображение завершено и вы больше не планируете использовать NativeAdView, вам следует вызвать метод destroy:
nativeAdView.destroy()

Проверить, загружено ли объявление

Чтобы проверить, загружен ли хотя бы 1 экземпляр NativeAd, используйте метод:

Appodeal.isLoaded(Appodeal.NATIVE)

Чтобы узнать, сколько экземпляров NativeAd загружено, используйте метод:

val nativeAmount = Appodeal.getAvailableNativeAdsCount()
примечание

По умолчанию Appodeal SDK с включенным AutoCache загружает по 2 экземпляра NativeAd

подсказка

Мы рекомендуем всегда проверять, доступно ли объявление, прежде чем пытаться его показать.

Получить загруженные нативные объявления

Чтобы получить загруженные нативные объявления, используйте следующий метод:

val nativeAds: List<NativeAd> = Appodeal.getNativeAds(amount)
осторожно

Как только вы получаете объявления, они удаляются из кэша нашего SDK.

Отображение

Чтобы отобразить NativeAd, вам необходимо вызвать следующий код:

NativeAdView.registerView(nativeAd: NativeAd)
осторожно

SDK не может показывать рекламу без сетевого подключения!

NativeAdView.registerView() возвращает булево значение, указывающее, был ли вызов метода show передан соответствующему SDK.

к сведению

До вызова метода registerView(nativeAd), NativeAdView находится в состоянии visibility == GONE. После вызова состояние автоматически изменится на visibility == VISIBLE.

Вам не нужно изменять состояние видимости, Appodeal SDK делает это автоматически.

После вызова destroy(), состояние автоматически изменится на visibility == GONE.

подсказка

NativeAdView и его преемники имеют встроенный атрибут tools:visibility="visible" поэтому представление будет отображаться в вашей разметке IDE во время разработки.

Размещения

Appodeal SDK позволяет помечать каждое впечатление различными размещениями. Чтобы использовать размещения, вам необходимо создать их в Панели управления Appodeal. Подробнее о размещениях.

Чтобы показать объявление с размещением, вам нужно вызвать метод show:

NativeAdView.registerView(nativeAd: NativeAd, yourPlacementName: String)
к сведению

Если загруженное объявление не может быть показано для конкретного размещения, ничего не будет показано.

Если включено автоматическое кэширование, SDK начнет кэшировать другое объявление, что может повлиять на частоту показов. Чтобы сохранить загруженное объявление для будущего использования (например, для другого размещения), проверьте, может ли объявление быть показано, прежде чем вызывать метод show:

if (NativeAd.canShow(context: Context, yourPlacementName: String)) {
NativeAdView.registerView(nativeAd: NativeAd, yourPlacementName: String)
}

Вы можете настроить логику показов для каждого размещения.

к сведению

Если у вас нет размещений или вы вызываете NativeAdView.registerView с несуществующим размещением, показ будет помечен как 'default', и будут применены его настройки.

примечание

Настройки размещения влияют ТОЛЬКО на показ рекламы, а не на загрузку или кэширование.

Отмена регистрации View

Чтобы отменить регистрацию представления для отображения текущего зарегистрированного нативного объявления, используйте метод:

NativeAdView.unregisterView()
примечание

Метод UnregisterView не скрывает NativeAdView. Он приостанавливает отслеживание показа нативного объявления.

подсказка

UnregisterView имеет смысл использовать, например, если NativeAdView выходит за пределы экрана при прокрутке в списке или временно перекрывается другим View/Fragment/Activity

Удаление

Чтобы удалить представление нативного объявления и выполнить все необходимые очистки, а также скрыть NativeAdView, используйте метод:

NativeAdView.destroy()
к сведению

Этот метод следует вызывать, когда нативное объявление больше не требуется.

Также при вызове destroy() запускается логика unregisterView.

Распространенные ошибки

  • Нет adAttributionView

Большинство рекламных сетей требуют от издателей добавлять специальную пометку к нативному объявлению, чтобы пользователи не спутали их с контентом. Вот почему вы всегда должны убедиться, что нативные объявления в вашем приложении имеют атрибуцию рекламы (например, «Реклама») или значок AdChoices.

  • Отсутствие необходимых элементов нативной рекламы

Каждое нативное объявление должно содержать:

  • titleView TextView;

  • кнопку callToActionView;

  • adAttribution TextView;

  • NativeIconView или NativeMedaiaView.

  • Изменение элементов нативной рекламы

Рекламодатели ожидают, что их объявления будут отображаться четко и без каких-либо изменений. Вы можете масштабировать кнопки и изображения, но не должны обрезать, закрывать или искажать их.

  • Наложение элементов нативной рекламы друг на друга

Убедитесь, что все элементы нативного объявления видны и не наложены друг на друга.

Требования к нативным объявлениям:

  • Все поля нативной рекламы, отмеченные как обязательные, должны быть отображены.
  • Изображения могут быть изменены для соответствия вашему рекламному пространству, но не должны быть значительно искажены или обрезаны.

Проверка видимости

Вы всегда можете проверить в логах, был ли отслежен показ и видно ли ваше объявление.

Вы увидите лог Native [Notify Shown], если показ был успешно отслежен.

Appodeal  com.example.app  D Native [Notify Shown]

Вы можете использовать наше демо-приложение в качестве примера проекта.

Демо-приложение


Если вы хотите использовать расширенную интеграцию нативной рекламы, подробную документацию вы можете найти здесь