Реклама с наградой за просмотр
Рекламный формат, в котором пользователи получают награду, если досмотрели видео до конца.
Вы можете использовать наше демо приложение в качестве примера по интеграции.
Демо приложение
Ручное Кэширование
По умолчанию включен автоматический режим загрузки рекламных креативов: Appodeal SDK начинает загрузку полноэкранной рекламы сразу после инициализации SDK.
Следующий рекламный креатив начинает загружаться после того, как был закрыт предыдущий.
Для отключения автоматического режима загрузки для Видео используйте следующий код перед инициализацией SDK:
- Swift
- Objective-C
Appodeal.setAutocache(false, types: .rewardedVideo)
[Appodeal setAutocache: NO types:AppodealAdTypeRewardedVideo];
Проверка Загрузки
Вы можете проверить статус загрузки перед показом. Этот метод возвращает булевое значение, которое указывает, была ли загружена реклама.
- Swift
- Objective-C
Appodeal.isReadyForShow(with: .rewardedVideo)
[Appodeal isReadyForShowWithStyle: AppodealShowStyleRewardedVideo];
Мы рекомендуем проверять статус загрузки перед показом рекламы.
Отображение
- Swift
- Objective-C
Appodeal.showAd(.rewardedVideo, rootViewController: self)
[Appodeal showAd:AppodealShowStyleRewardedVideo rootViewController:self];
Если вам необходимо больше контроля над Видео с наградой за просмотр, используйте ручное кеширование. Ручное кеширование для Видео может быть полезным для увеличения display rate или уменьшения количества загружаемой рекламы, если вы используете несколько рекламных типов в вашем приложении. Для загрузки Видео с наградой за просмотр используйте:
- Swift
- Objective-C
Appodeal.cacheAd(.rewardedVideo)
[Appodeal cacheAd:AppodealAdTypeRewardedVideo];
Более подробную информацию о ручном кешировании вы можете найти в нашем FAQ.
Методы Обратного Вызова
Методы обратного вызова позволяют отслеживать различные события в жизненном цикле рекламного блока, например, момент, когда пользователь нажал на рекламу или закрыл ее. Для их вызова установите следующее значение делегата:
- Swift
- Objective-C
// set delegate
Appodeal.setRewardedVideoDelegate(self)
// set delegate
[Appodeal setRewardedVideoDelegate:self];
Обы чно класс, который работает с видео с наградой за просмотр,
одновременно является и классом делегата, поэтому в качестве свойства
делегата можно указать self
.
Теперь вы можете использовать следующие методы обратного вызова:
- Swift
- Objective-C
extension YourViewController: AppodealRewardedVideoDelegate {
// Method called when rewarded video loads
//
// - Parameter precache: If precache is YES it means that precached ad loaded
func rewardedVideoDidLoadAdIsPrecache(_ precache: Bool) {
}
// Method called if rewarded video mediation failed
func rewardedVideoDidFailToLoadAd() {
}
// Method called if rewarded mediation was successful, but ready ad network can't show ad or
// ad presentation was too frequent according to your placement settings
//
// - Parameter error: Error object that indicates error reason
func rewardedVideoDidFailToPresentWithError(_ error: Error) {
}
// Method called after rewarded video start displaying
func rewardedVideoDidPresent() {
}
// Method called before rewarded video leaves screen
//
// - Parameter wasFullyWatched: boolean flag indicated that user watch video fully
func rewardedVideoWillDismissAndWasFullyWatched(_ wasFullyWatched: Bool) {
}
// Method called after fully watch of video
//
// - Warning: After call this method rewarded video can stay on screen and show postbanner
// - Parameters:
// - rewardAmount: Amount of app curency tuned via Appodeal Dashboard
// - rewardName: Name of app currency tuned via Appodeal Dashboard
func rewardedVideoDidFinish(_ rewardAmount: Float, name rewardName: String?) {
}
// Method is called when rewarded video is clicked
func rewardedVideoDidClick() {
}
// Method called when rewardedVideo did expire and can not be shown
func rewardedVideoDidExpired() {
}
}
- (void)rewardedVideoDidLoadAdIsPrecache:(BOOL)precache {
// rewarded video was loaded
}
- (void)rewardedVideoDidFailToLoadAd {
// rewarded video ad failed to load
}
- (void)rewardedVideoDidFailToPresentWithError:(NSError *)error {
// rewarded video ad was loaded but failed to present due to ad netwotk error,
// placement settings or invalid creative.
// Error object that indicates error reason
}
- (void)rewardedVideoDidPresent {
// rewarded video was presented
}
- (void)rewardedVideoWillDismissAndWasFullyWatched:(BOOL)wasFullyWatched {
// rewarded video was closed.
// wasFullyWatched boolean flag indicated that user watch video fully
}
- (void)rewardedVideoDidFinish:(float)rewardAmount name:(NSString *)rewardName {
// rewarded video finished with some reward
}
- (void)rewardedVideoDidClick {
// Method is called when rewarded video is clicked
}
- (void)rewardedVideoDidExpired {
// rewarded video did expire and could not be shown
}
Все функции обратного вызова вызываются в главном потоке.
Плейсменты
Appodeal SDK позволяет вам отмечать показы различными тегами с помощью плейсментов. Для использования данной функции вам необходимо создать плейсмент в настройках вашего приложения. Больше информации о плейсментах в нашем руководстве.
- Swift
- Objective-C
Appodeal.showAd(.rewardedVideo, forPlacement: placement, rootViewController: self)
[Appodeal showAd:AppodealShowStyleRewardedVideo forPlacement:placement rootViewController:self];
Если загруженный креатив не может быть показан для настроек выбранного плейсмента, показа не будет. Если включен автоматический режим загрузки рекламных креативов, SDK начнет грузить новый рекламный креатив, что может повлиять на display rate вашего приложения. В подобных случаях мы рекомендуем проверять возможность показа с помощью метода canShow:
- Swift
- Objective-C
Appodeal.canShow(.rewardedVideo, forPlacement: placement)
[Appodeal canShow:AppodealAdTypeRewardedVideo forPlacement:placement];
Вы можете настраивать логику показа для каждого плейсмента.
Если в приложении нет настроенных плейсментов, или вы пробуете показать рекламу для плейсмента, который не существует в настройках вашего приложения, каждый показ будет записан в плейсмент с именем 'default' и будут применены его настройки.
Настройки плейсментов влияют только на показ рекламы и не влияют на ее загрузку.
Методы Обратного Вызова Server-to-Server
Для обеспечения безопасности вашей внутриигровой экономики мы предлагаем использовать метод обратного вызова S2S. Для проверки каждой награды на вашем сервере настройте URL обратного вызова, который будет получать информацию о вознаграждении. Appodeal будет передавать вам информацию о пользователе для проверки и регулировки баланса пользователя.
-
Создайте URL на вашем сервере, который будет получать информацию о вознаграждении.
-
Укажите созданный URL и ключ безопасности в настройках вашего приложения на панели управления.
-
Обратный вызов о вознаграждениях будет отсыласться на ваш URL при помощи GET-запроса с двумя параметрами:
{http:/example.com/reward}?data1={data1}&data2={data2}
-
Ваш URL должен расшифровать данные и проверить их.
-
Проверьте
impression_id
на уникальность и сохраните его в своей системе, чтобы предотвратить дублирование транзакций.Для установки идентификатора пользователя используйте
Appodeal.getUserSettings(this).setUserId("User#123")
до инициализации SDK.
Мы предлагаем примеры реализации на Go, PHP, Ruby, Java, Node.js, Python 3 и C# для расшифровки данных. Если вам нужны примеры на других языках, пожалуйста, свяжитесь со службой поддержки.
-
Пример на PHP: reward.php.
-
Пример на Ruby: reward.rb.
-
Пример на Java: reward.java.
-
Пример на Node.js: reward.js .
-
Пример на Python 3: reward.py.
-
Пример на C#: reward.cs.
-
Пример на Go: reward.go.
Получение Награды Для Плейсмента
Для получения данных (валюта, имя и количество) указанного плейсмента
используйте метод rewardForPlacement:(NSString *)placement
:
- Swift
- Objective-C
let rewardCurrencyName = Appodeal.reward(forPlacement:"placement").currencyName
let rewardAmount = Appodeal.reward(forPlacement:"placement").amount
NSString *rewardCurrencyName = [[Appodeal rewardForPlacement:@"placement"] currencyName];
NSUInteger rewardAmount = [[Appodeal rewardForPlacement:@"placement"] amount];
Получение Прогнозируемого eCPM
Этот метод возвращает ожидаемый eCPM для загруженного креатива. Цена высчитывается из исторических данных для конкретного рекламного блока.
- Swift
- Objective-C
Appodeal.predictedEcpm(for: .rewardedVideo)
[Appodeal predictedEcpmForAdType: AppodealAdTypeRewardedVideo];
Проверка Инициализации
- Swift
- Objective-C
Appodeal.isInitialized(for: .rewardedVideo)
[Appodeal isInitalizedForAdType: AppodealAdTypeRewardedVideo];
Возвращает true, если Видео c наградой за просмотр было инициализировано.
Проверка Типа Кэширования
- Swift
- Objective-C
Appodeal.isAutocacheEnabled(.rewardedVideo)
[Appodeal isAutocacheEnabled: AppodealAdTypeRewardedVideo];
Возвращает true, если автоматическое кеширование включено для видео.
Отслеживание Показа
Вы всегда можете проверить в логах, был ли отслежен показ и видна ли в аша реклама.
В случае успешного показа вы увидите следующий лог:
[Appodeal *.*.*] [debug] [impression] Impression <APDImpression: 0x600002953b10> succesfully tracked