Нативная реклама
Это гибкий рекламный формат, который вы можете адаптировать под UI вашего приложения.
Вы можете использовать наше демо приложение в качестве примера по интеграции.
Демо приложение
Интеграция
Native AdQueue — это инструмент для подключения и управления нативной рекламой в Appodeal SDK. Вам больше не придется загружать нативную рекламу вручную. Достаточно указать в настройках AdQueue количество нужных вам объявлений, и она будут загружены автоматически.
При использовании AdQueue обратите внимание на следующее: если ваше приложение загрузит больше объявлений, чем сможет использовать, рекламная сеть может снизить eCPM или ограничить для вас загрузку нативной рекламы.
- Swift
- Objective C
import Appodeal
class ViewController: UIViewController {
var adQueue : APDNativeAdQueue!
}
#import <Appodeal/Appodeal.h>
@interface YourViewController : UIViewController
@property (nonatomic, strong) APDNativeAdQueue* nativeAdQueue;
@end
- Все поля нативного объявления, помеченные как обязательные, должны отображаться.
- Каждое рекламное объявление должно быть помечено соответствующим знаком или маркером, чтобы явно указывать на свой рекламный характер. Например "Ad" или "Sponsored".
- Изображения, предоставляемые для размещения, могут быть масштабированы для соответствия размерам рекламного места, однако запрещается значительно искажать или обрезать изображения.
Настройки Нативной Рекламы
В adQueue.settings
вы можете указать следующие параметры для нативной
рекламы в вашем приложении:
Название настройки adQueue.settings | Тип | Назначение | Допустимые значения |
---|---|---|---|
type | APDNativeAdType | Тип нативной рекламы | APDNativeAdTypeAuto APDNativeAdTypeVideo APDNativeAdTypeVideo |
adViewClass | Class APDNativeAdView | Класс шаблона | Default template 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
Соотношение сторон для нативной видеорекламы — 16:9, размер файла каждого ролика около 1-3 Мб.
В Аppodeal SDK существует два типа нативных видеороликов:
- skippable - если установлен флаг “skippable”, видео можно пропустить через 5 секунд после его начала;
- muted - если установлен флаг “muted”, то видео будет проигрываться без звука.
Кэширование Нативной Рекламы
Нативные объявления начнут загружаться, когда будет создан экземпляр класса APDNativeAdQueue. Вам не нужно контролировать жизненный цикл загрузки. Но если вы используете одно из закешированных нативных объявлений, вам нужно иметь сильную ссылку на него в течение всего времени презентации нативной рекламы. Нативное объявление не имеет сильной ссылки на View, а View не имеет сильной ссылки на нативное объявление. Если приложение потеряло ссылку на нативное объявление после презентации его на экране, далее нативное объявление не будет отслеживать и реагировать на события.
Методы Обратного Вызова
Методы обратного вызова позволяют отслеживать различные события в жизненном цикле рекламного блока, например, момент, когда пользователь нажал на рекламу или закрыл ее. Для их вызова установите значение делегата:
- Добавьте
APDNativeAdQueueDelegate
и APDNativeAdPresentationDelegate в header-файл:
- Swift
- Objective C
class YourViewController: APDNativeAdQueueDelegate, APDNativeAdPresentationDelegate { }
@interface YourViewController : UIViewController <APDNativeAdQueueDelegate, APDNativeAdPresentationDelegate>
- Установите делегат:
- Swift
- Objective C
// Loading callbacks delegate
self.adQueue.delegate = self
// Presentation callbacks delegate
self.currentAd.delegate = self
// Loading callbacks delegate
self.adQueue.delegate = self;
// Presentation callbacks delegate
self.currentAd.delegate = self;
- Добавьте следующие функции:
- Swift
- Objective C
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) {}
}
- (void)adQueueAdIsAvailable:(APDNativeAdQueue *)adQueue ofCount:(NSUInteger)count {
}
- (void)adQueue:(APDNativeAdQueue *)adQueue failedWithError:(NSError *)error {
}
- (void)nativeAdWillLogImpression:(APDNativeAd *)nativeAd {
}
- (void)nativeAdWillLogUserInteraction:(APDNativeAd *)nativeAd {
}
Все функции обратного вызова вызываются в главном потоке.
Использование Шаблонов Для Нативной Рекламы
Для использования своих шаблонов укажите в
настройках 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
// Optional
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-файл для шаблона.
Все view должны содержаться в иерархии единого superview
.
Если YourNativeAdViewTemplate
наследуется
от UITableViewCell
(UICollectionViewCell)
, то эти view должны
содержаться в иерархии contentView
.