Нативная реклама
Нативная реклама — это гибкий тип рекламы. Вы можете адаптировать отображение к своему пользовательскому интерфейсу, подготовив шаблон.
Интеграция
Native AdQueue — это инструмент для реализации и управления нативной рекламой в Appodeal SDK. Вам больше не нужно загружать нативную рекламу вручную. Все, что вам нужно сделать, это установить объект AdQueue, и он будет автоматически загружать новые элементы.
Будьте осторожны при использовании AdQueue: если ваше приложение загружает слишком много рекламы, но не может ее использовать, рекламная с еть может либо снизить стоимость каждого показа для вас, либо ограничить вашу возможность загружать нативную рекламу.
- Swift
- Objective C
import Appodeal
class ViewController: UIViewController {
var adQueue : APDNativeAdQueue!
}
#import <Appodeal/Appodeal.h>
@interface YourViewController : UIViewController
@property (nonatomic, strong) APDNativeAdQueue* nativeAdQueue;
@end
- Все поля нативной рекламы, помеченные как обязательные, должны быть отображены.
- Каждое объявление должно иметь знак, четко указывающий, что это реклама. Например, "Реклама" или "Спонсировано".
- Предоставленные изображения могут быть изменены для соответствия вашему рекламному пространству, но не должны быть значительно искажены или обрезаны.
Настройка параметров нативной рекламы
В adQueue.settings вы можете установить следующие параметры для нативной рекламы, отображаемой в вашем приложении:
| Название параметра adQueue.settings | Тип | Назначение | Возможные значения |
|---|---|---|---|
| type | APDNativeAdType | Тип нативной рекламы | APDNativeAdTypeAuto APDNativeAdTypeVideo APDNativeAdTypeVideo |
| adViewClass | Class APDNativeAdView | Класс шаблона | Шаблон по умолчанию APDDefaultNativeAdView.class |
| autocacheMask | APDNativeResourceAutocacheMask | Маска для кэширования медиафайлов | Кэширование иконок: (APDNativeResourceAutocacheIcon): 1, Кэширование изображений и видео (APDNativeResourceAutocacheMedia): 2, Кэширование всех медиафайлов: 3 |
Инициализация определенного типа нативной рекламы
Appodeal SDK предоставляет как статические, так и видеотипы нативной рекламы.
Чтобы реализовать статическую нативную рекламу в вашем приложении, используйте следующий код:
- Swift
- Objective C
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()
}
}
- (void)viewDidLoad {
self.nativeAdQueue = [APDNativeAdQueue new];
self.nativeAdQueue.settings.type = APDNativeAdTypeNoVideo;
self.nativeAdQueue.settings.adViewClass = APDDefaultNativeAdView.class;
self.nativeAdQueue.settings.autocacheMask = APDNativeResourceAutocacheIcon | APDNativeResourceAutocacheMedia;
[adQueue loadAd];
}
Чтобы реализовать нативную видеорекламу, используйте следующий код:
- Swift
- Objective C
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()
}
}
#import <Appodeal/Appodeal.h>
@interface YourViewController : UIViewController
@property (nonatomic, strong) APDNativeAdQueue* nativeAdQueue;
@property (nonatomic, strong) UIView * nativeAdView;
@end
@implementation YourViewController
- (void)viewDidLoad {
self.nativeAdQueue = [[APDNativeAdQueue alloc] init];
self.nativeAdQueue.settings.type = APDNativeAdTypeVideo;
self.nativeAdQueue.settings.adViewClass = APDDefaultNativeAdView.class;
self.nativeAdQueue.delegate = self;
self.nativeAdQueue.settings.autocacheMask = APDNativeResourceAutocacheIcon | APDNativeResourceAutocacheMedia;
[self.nativeAdQueue loadAd];
}
@end
Соотношение сторон нативной видеорекламы в Appodeal SDK составляет 16:9, размер файла около 1-3 МБ.
В Appodeal SDK существуют два типа нативной видеорекламы:
- skippable - если установлен флаг “skippable”, видео может быть пропущено через 5 секунд;
- muted - если установлен флаг “muted”, видео будет воспроизводиться без звука.
Использование пользовательских шаблонов нативной рекламы
Чтобы использовать ваши пользовательские шаблоны для нативной рекламы, просто укажите ваш класс шаблона в adQueue.setting.adViewClass следующим образом:
- Swift
- Objective C
adQueue.settings.adViewClass = YourNativeAdViewTemplate.self
adQueue.settings.adViewClass = YourNativeAdViewTemplate.class;
Ваш класс шаблона должен соответствовать следующему протоколу:
- Swift
- Objective C
protocol APDNativeAdView {
func titleLabel() -> UILabel
func callToActionLabel() -> UILabel
// Необязательно
func descriptionLabel() -> UILabel
func iconView() -> UIImageView
func mediaContainerView() -> UIView
func contentRatingLabel() -> UILabel
func adChoicesView() -> UIView
func setRating(_ rating: NSNumber)
static func nib() -> UINib
}
@protocol APDNativeAdView <NSObject>
- (nonnull UILabel *)titleLabel;
- (nonnull UILabel *)callToActionLabel;
@optional
- (nonnull UILabel *)descriptionLabel;
- (nonnull UIImageView *)iconView;
- (nonnull UIView *)mediaContainerView;
- (nonnull UILabel *)contentRatingLabel;
- (nonnull UIView *)adChoicesView;
- (void)setRating:(nonnull NSNumber *)rating;
+ (nonnull UINib *)nib;
@end
Объекты, упомянутые в этом протоколе:
titleLabel- контейнер для текста заголовка;callToActionLabel- контейнер для текста призыва к действию;descriptionLabel- контейнер для текста описания;iconView- контейнер для изображения иконки;mediaContainerView- контейнер для медиафайлов (изображений и видеофайлов);contentRatingLabel- контейнер для отображения рейтинга контента;adChoicesView- контейнер для отображения adChoice;rating- контейнер для отображения рейтинга приложения;nib- nib-файл для шаблона.
Все представления должны быть заключены в одном superview.
Если YourNativeAdViewTemplate наследуется от UITableViewCell(UICollectionViewCell), эти представления должны содержаться в иерархии contentView.
Получить все нативные объявления из Native AdQueue
- Swift
- Objective C
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 )}
}
}
}
#import "ViewController.h"
#import <Appodeal/Appodeal.h>
#import <Appodeal/APDNativeAdQueue.h>
#import "CustomNativeAdView.h"
@interface ViewController ()<APDNativeAdQueueDelegate, APDNativeAdPresentationDelegate>
@property (strong, nonatomic) IBOutlet UIView *nativeAdView;
@property (nonatomic, strong) APDNativeAdQueue* nativeAdQueue;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.nativeAdQueue = [[APDNativeAdQueue alloc] init];
self.nativeAdQueue.settings = [APDNativeAdSettings defaultSettings];
self.nativeAdQueue.settings.adViewClass = [CustomNativeAdView class];
self.nativeAdQueue.delegate = self;
self.nativeAdQueue.settings.autocacheMask = APDNativeResourceAutocacheIcon | APDNativeResourceAutocacheMedia;
[self.nativeAdQueue loadAd];
[Appodeal setLogLevel:APDLogLevelVerbose];
}
- (void)presentNative:(id)sender {
APDNativeAd * nativeAd = [[self.nativeAdQueue getNativeAdsOfCount:1] firstObject];
nativeAd.delegate = self;
CustomNativeAdView * adview = [nativeAd getAdViewForController:self];
[self.nativeAdView addSubview:adview];
adview.frame = self.nativeAdView.bounds;
}
@end
Объект Native Ad
Объекты NativeAd имеют следующие характеристики в Appodeal SDK. Все поля, помеченные как "Обязательные", должны быть отображены:
| Название поля | Обязательно | Описание |
|---|---|---|
| *NSString title | Обязательно | Заголовок нативного объявления. Должно отображаться не менее 25 символов заголовка. В конце можно доба вить многоточие, если заголовок длиннее. |
| *NSString subtitle | Опционально | Подзаголовок нативного объявления |
| *NSString descriptionText | Опционально | Текстовое описание нативного объявления. Если вы решили отобразить описание, вы должны отображать не менее 75 символов. В конце можно добавить многоточие. |
| *NSString callToActionText | Обязательно | Текст призыва к действию. Должен отображаться на видимой кнопке без усечения. |
| *NSString contentRating | Опционально | Рейтинг контента. |
| *NSNumber starRating | Опционально | Приложение в диапазоне [0-5]. |
| *APDImage mainImage | Опционально | Битмап изображения. Объект объявления содержит как иконку, так и изображение. Обязательно использовать хотя бы один из этих элементов. Устаревший метод. Вместо него следует использовать NativeMediaView для отображения изображений или видео. |
| *APDImage iconImage | Обязательно | Битмап иконки. Объект объявления содержит как иконку, так и изображение. Обязательно использовать хотя бы один из этих элементов. |
| *UIView adChoicesView | Обязательно | View. Если он не возвращает null, обязательно отображать иконку провайдера в любом углу нативного объявления. Используется некоторыми сетями для отображения AdChoices или иконки конфиденциальности. |
Распространенные ошибки с нативной рекламой
-
Отсутствие атрибуции рекламы или значка AdChoices
Большинство рекламных сетей требуют от издателей добавлять специальную пометку к нативной рекламе, чтобы пользователи не спутали ее с контентом. Вот почему вы всегда должны убедиться, что нативная реклама в вашем приложении имеет атрибуцию рекламы (например, «Реклама») или значок AdChoices.
-
Отсутствие необходимых элементов нативной рекламы
Каждое нативное объявление должно содержать:
- заголовок;
- кнопку призыва к действию;
- атрибуцию рекламы или значок AdChoices;
- иконку, изображение или видео.
-
Изменение элементов нативной рекламы
Рекламодатели ожидают, что их объявления будут отображаться четко и без каких-либо изменений. Вы можете масштабировать кнопки и изображения, но не должны обрезать, закрывать или искажать их.
-
Наложение элементов нативной рекламы друг на друга
Убедитесь, что все элементы нативной рекламы видны и не перекрываются.
Вы можете использовать наше демо-приложение в качестве примера проекта.
Демо-приложение
Если вы хотите использовать расширенную интеграцию нативной рекламы, подробную документацию вы можете найти здесь