Перейти к основному содержимому
Версия: 3.4.0

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

Это гибкий рекламный формат, который вы можете адаптировать под UI вашего приложения.

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

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

Интеграция

Native AdQueue — это инструмент для подключения и управления нативной рекламой в Appodeal SDK. Вам больше не придется загружать нативную рекламу вручную. Достаточно указать в настройках AdQueue количество нужных вам объявлений, и она будут загружены автоматически.

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

import Appodeal
class ViewController: UIViewController {
var adQueue : APDNativeAdQueue!
}

Требования к нативной рекламе
  • Все поля нативного объявления, помеченные как обязательные, должны отображаться.
  • Каждое рекламное объявление должно быть помечено соответствующим знаком или маркером, чтобы явно указывать на свой рекламный характер. Например "Ad" или "Sponsored".
  • Изображения, предоставляемые для размещения, могут быть масштабированы для соответствия размерам рекламного места, однако запрещается значительно искажать или обрезать изображения.

Настройки Нативной Рекламы

В adQueue.settings вы можете указать следующие параметры для нативной рекламы в вашем приложении:

Название настройки adQueue.settingsТипНазначениеДопустимые значения
typeAPDNativeAdTypeТип нативной рекламыAPDNativeAdTypeAuto APDNativeAdTypeVideo APDNativeAdTypeVideo
adViewClassClass APDNativeAdViewКласс шаблонаDefault template APDDefaultNativeAdView.class
autocacheMaskAPDNativeResourceAutocacheMaskМаска для кэширования медиа-файловКэширование иконок: (APDNativeResourceAutocacheIcon): 1, Кэширование изображений и видео: (APDNativeResourceAutocacheMedia): 2, Кэширование всех медиа-файлов: 3

Инициализация Определенного Типа Нативной Рекламы

Appodeal SDK поддерживает как видео, так и статичную нативную рекламу.

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

class ViewController: UIViewController {
var adQueue : APDNativeAdQueue!
override func viewDidLoad() {
super.viewDidLoad()
adQueue.settings.adViewClass = TemplateClass.self
adQueue.settings.autocacheMask = [.icon, .media]
adQueue.settings.type = .novideo

adQueue.loadAd()
}
}

Для подключения нативной видеорекламы, используйте следующий код:

class ViewController: UIViewController {
var adQueue : APDNativeAdQueue!
override func viewDidLoad() {
super.viewDidLoad()
adQueue.settings.adViewClass = TemplateClass.self
adQueue.settings.autocacheMask = [.icon, .media]
adQueue.settings.type = .video

adQueue.loadAd()
}
}

Соотношение сторон для нативной видеорекламы — 16:9, размер файла каждого ролика около 1-3 Мб.

В Аppodeal SDK существует два типа нативных видеороликов:

  • skippable - если установлен флаг “skippable”, видео можно пропустить через 5 секунд после его начала;
  • muted - если установлен флаг “muted”, то видео будет проигрываться без звука.

Кэширование Нативной Рекламы

Нативные объявления начнут загружаться, когда будет создан экземпляр класса APDNativeAdQueue. Вам не нужно контролировать жизненный цикл загрузки. Но если вы используете одно из закешированных нативных объявлений, вам нужно иметь сильную ссылку на него в течение всего времени презентации нативной рекламы. Нативное объявление не имеет сильной ссылки на View, а View не имеет сильной ссылки на нативное объявление. Если приложение потеряло ссылку на нативное объявление после презентации его на экране, далее нативное объявление не будет отслеживать и реагировать на события.

Методы Обратного Вызова

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

  1. Добавьте APDNativeAdQueueDelegate и APDNativeAdPresentationDelegate в header-файл:
class YourViewController: APDNativeAdQueueDelegate, APDNativeAdPresentationDelegate { }

  1. Установите делегат:
// Loading callbacks delegate
self.adQueue.delegate = self
// Presentation callbacks delegate
self.currentAd.delegate = self

  1. Добавьте следующие функции:
extension MainViewController : APDNativeAdPresentationDelegate {
func nativeAdWillLogImpression(_ nativeAd: APDNativeAd!) {}
func nativeAdWillLogUserInteraction(_ nativeAd: APDNativeAd!) {}
}

extension MainViewController : APDNativeAdQueueDelegate {
func adQueue(_ adQueue: APDNativeAdQueue!, failedWithError error: Error!) {}
func adQueueAdIsAvailable(_ adQueue: APDNativeAdQueue!, ofCount count: UInt) {}
}

подсказка

Все функции обратного вызова вызываются в главном потоке.

Использование Шаблонов Для Нативной Рекламы

Для использования своих шаблонов укажите в настройках adQueue.setting.adViewClass класс шаблона следующим образом:

adQueue.settings.adViewClass = YourNativeAdViewTemplate.self

Объекты, указанные в протоколе:

protocol APDNativeAdView {
func titleLabel() -> UILabel
func callToActionLabel() -> UILabel
// Optional
func descriptionLabel() -> UILabel
func iconView() -> UIImageView
func mediaContainerView() -> UIView
func contentRatingLabel() -> UILabel
func adChoicesView() -> UIView
func setRating(_ rating: NSNumber)
static func nib() -> UINib
}

Объекты, указанные в протоколе:

  • titleLabel - контейнер для заголовка текста;
  • callToActionLabel - контейнер для текста призыва к действию;
  • descriptionLabel - контейнер для текста описания;
  • iconView - контейнер для иконки;
  • mediaContainerView - контейнер для медиа-файлов (изображений и видео);
  • contentRatingLabel - контейнер для отображения рейтинга контента;
  • adChoicesView - контейнер для блока adChoice;
  • rating - контейнер для отображения рейтинга приложения;
  • nib - nib-файл для шаблона.
Обратите внимание:

Все view должны содержаться в иерархии единого superview. Если YourNativeAdViewTemplate наследуется от UITableViewCell(UICollectionViewCell), то эти view должны содержаться в иерархии contentView.

Получение Всей Нативной Рекламы Из Native AdQueue

import UIKit
import Appodeal

class ViewController: UIViewController {

@IBOutlet weak var nativeAdView: UIView!
var nativeAdQueue: APDNativeAdQueue!
var nativeArray: [APDNativeAd] = []

override func viewDidLoad() {
super.viewDidLoad()
nativeAdQueue = APDNativeAdQueue()
nativeAdQueue.settings = APDNativeAdSettings.default()
nativeAdQueue.settings.adViewClass = CustomNativeAdView.self
nativeAdQueue.delegate = self
nativeAdQueue.settings.autocacheMask = [.icon, .media]

nativeAdQueue.loadAd()
}

@IBAction func presentNativeAd(_ sender: Any) {
let nativeAd = nativeArray.first
if let nativeAd = nativeAd {
nativeAd.delegate = self
do {
let adView = try nativeAd.getViewForPlacement("default", withRootViewController: self)
adView.frame = nativeAdView.bounds
nativeAdView.addSubview(adView)
} catch {
print("error")
}
}
}
}

extension ViewController: APDNativeAdQueueDelegate, APDNativeAdPresentationDelegate {
func adQueueAdIsAvailable(_ adQueue: APDNativeAdQueue, ofCount count: UInt) {
if nativeArray.count > 0 {
return
} else {
nativeArray.append(contentsOf: adQueue.getNativeAds(ofCount: 1))
nativeArray.map{( $0.delegate = self )}
}
}
}

Объект Native Ad

В Appodeal SDK объект NativeAd обладает характеристиками, указанными ниже. Все характеристики с пометкой “Обязательный” должны отображаться в интерфейсе приложения.

Название методаОбязательный?Описание
*NSString titleОбязательныйЗаголовок нативного объявление. Должно отображаться минимум 25 символов названия. Вы можете добавить многоточие в конце строки, если заголовок длиннее.
*NSString subtitleВспомогательныйПодзаголовок нативной рекламы.
*NSString descriptionTextВспомогательныйОписание нативного объявления. Оптимальная длина: до 75 символов. Если текст длиннее, добавьте многоточие в конце описания.
*NSString callToActionTextОбязательныйПризыв к действию. Должен отображаться без усечения на видимой кнопке.
*NSString contentRatingВспомогательныйОграничение по возрасту.
*NSNumber starRatingВспомогательныйРейтинг приложения в диапазоне [0-5].
*APDImage mainImageВспомогательныйBitmap изображения. В рекламном объявлении содержатся и иконка, и изображение. Обязательно использование хотя бы одного из этих элементов. Устаревший метод. Вместо него для автоматического показа изображений и видео следует использовать NativeMediaView.
*APDImage iconImageОбязательныйBitmap иконки. В рекламном объявлении содержатся и иконка, и изображение. Обязательно использование хотя бы одного из этих элементов.
*UIView adChoicesViewОбязательныйView. Если метод не возвращает null, иконка провайдера обязательно должна быть отображена в любом углу рекламного объявления. Используется только для AdChoices в Facebook.

Распространенные Ошибки При Работе С Нативными Объявлениями

  • Нет атрибута объявления или иконки AdChoices

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

  • Отсутствие обязательных элементов объявлений

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

    • заголовок;
    • кнопку для действия;
    • иконку атрибута рекламы или иконку AdChoices;
    • изображение, видео или иконку.
  • Изменение элементов нативных объявлений

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

  • Наложение элементов нативных объявлений друг на друга

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

Получение Прогнозируемого eCPM

Этот метод возвращает ожидаемый eCPM для загруженного креатива. Цена высчитывается из исторических данных для конкретного рекламного блока.

Appodeal.predictedEcpm(for: .nativeAd)

Проверка Инициализации

Appodeal.isInitialized(for: .nativeAd)

Возвращает true, если Нативная реклама была проинициализирована.

Отслеживание Показа

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

В случае успешного показа вы увидите следующий лог:

[Appodeal *.*.*] [debug] [impression] Impression <APDImpression: 0x600002953b10> succesfully tracked