Реклама С Наградой За Просмотр
Реклама с наградой за просмотр - инициируемый пользователем тип рекламы. Позволяет конечным пользователям получить внутриигровые награды в обмен на просмотр видеорекламы.
Вы можете использовать наше демо приложение в качестве примера по интеграции.
Демо приложение (Бета)
Ручное Кэширование
Для большего контроля над загрузкой видеорекламы с вознаграждением используйте ручное кеширование. Ручное кеширование для видео с вознаграждением может быть полезно для улучшения процента показанной рекламы или уменьшения нагрузки SDK на у стройство, когда кешируются несколько типов объявлений.
- Для отключения автоматического кеширования для видео с вознаграждением используйте следующий код перед инициализацией Appodeal SDK:
- UPM Дистрибуция
- Manual Дистрибуция
Appodeal.SetAutoCache(AppodealAdType.RewardedVideo, false);
Appodeal.setAutoCache(Appodeal.REWARDED_VIDEO, false);
- Для кеширования видео с вознаграждением вызовите следующий метод:
- UPM Дистрибуция
- Manual Дистрибуция
Appodeal.Cache(AppodealAdType.RewardedVideo);
Appodeal.cache(Appodeal.REWARDED_VIDEO);
Проверка Загрузки
Вы можете проверить статус загрузки перед показом. Этот метод возвращает bool
значение, указывающее, загружено ли
рекламное объявление.
- UPM Дистрибуция
- Manual Дистрибуция
Appodeal.IsLoaded(AppodealAdType.RewardedVideo);
Appodeal.isLoaded(Appodeal.REWARDED_VIDEO);
Мы рекомендуем всегда проверять загружено ли видео с вознаграждением, прежде чем пытаться его показать.
Пример:
- UPM Дистрибуция
- Manual Дистрибуция
if(Appodeal.IsLoaded(AppodealAdType.RewardedVideo)) {
Appodeal.Show(AppodealShowStyle.RewardedVideo);
}
if(Appodeal.isLoaded(Appodeal.REWARDED_VIDEO)) {
Appodeal.show(Appodeal.REWARDED_VIDEO);
}
Отображение
Для отображения видео с вознаграждением, используйте следующий код:
- UPM Дистрибуция
- Manual Дистрибуция
Appodeal.Show(AppodealShowStyle.RewardedVideo);
Appodeal.show(Appodeal.REWARDED_VIDEO);
Методы Обратного Вызова
Методы обратного вызова позволяют отслеживать различные события в жизненном цикле рекламного блока, к примеру, момент, когда пользователь нажал на рекламу или закрыл ее. Для использования этих методов выполните следующие действия:
- UPM Дистрибуция
- Manual Дистрибуция
Подпишитесь на желаемое событие видео с вознаграждением используя один из методов из нашей инструкции. (вы можете подписаться на любое событие, которое захотите)
AppodealCallbacks.RewardedVideo.OnLoaded += (sender, args) => { };
Ниже перечислены все существующие ивенты для видео с вознаграждением:
public void SomeMethod()
{
AppodealCallbacks.RewardedVideo.OnLoaded += OnRewardedVideoLoaded;
AppodealCallbacks.RewardedVideo.OnFailedToLoad += OnRewardedVideoFailedToLoad;
AppodealCallbacks.RewardedVideo.OnShown += OnRewardedVideoShown;
AppodealCallbacks.RewardedVideo.OnShowFailed += OnRewardedVideoShowFailed;
AppodealCallbacks.RewardedVideo.OnClosed += OnRewardedVideoClosed;
AppodealCallbacks.RewardedVideo.OnFinished += OnRewardedVideoFinished;
AppodealCallbacks.RewardedVideo.OnClicked += OnRewardedVideoClicked;
AppodealCallbacks.RewardedVideo.OnExpired += OnRewardedVideoExpired;
}
#region RewardedVideoAd Callbacks
//Called when rewarded video was loaded (precache flag shows if the loaded ad is precache).
private void OnRewardedVideoLoaded(object sender, AdLoadedEventArgs e)
{
Debug.Log($"[APDUnity] [Callback] OnRewardedVideoLoaded(bool isPrecache:{e.IsPrecache})");
}
// Called when rewarded video failed to load
private void OnRewardedVideoFailedToLoad(object sender, EventArgs e)
{
Debug.Log("[APDUnity] [Callback] OnRewardedVideoFailedToLoad()");
}
// Called when rewarded video was loaded, but cannot be shown (internal network errors, placement settings, etc.)
private void OnRewardedVideoShowFailed(object sender, EventArgs e)
{
Debug.Log("[APDUnity] [Callback] OnRewardedVideoShowFailed()");
}
// Called when rewarded video is shown
private void OnRewardedVideoShown(object sender, EventArgs e)
{
Debug.Log("[APDUnity] [Callback] OnRewardedVideoShown()");
}
// Called when rewarded video is closed
private void OnRewardedVideoClosed(object sender, RewardedVideoClosedEventArgs e)
{
Debug.Log($"[APDUnity] [Callback] OnRewardedVideoClosed(bool finished:{e.Finished})");
}
// Called when rewarded video is viewed until the end
private void OnRewardedVideoFinished(object sender, RewardedVideoFinishedEventArgs e)
{
Debug.Log($"[APDUnity] [Callback] OnRewardedVideoFinished(double amount:{e.Amount}, string name:{e.Currency})");
}
// Called when rewarded video is clicked
private void OnRewardedVideoClicked(object sender, EventArgs e)
{
Debug.Log("[APDUnity] [Callback] OnRewardedVideoClicked()");
}
//Called when rewarded video is expired and can not be shown
private void OnRewardedVideoExpired(object sender, EventArgs e)
{
Debug.Log("[APDUnity] [Callback] OnRewardedVideoExpired()");
}
#endregion
- Наследуйте ваш класс от
IRewardedVideoAdListener
:
class SomeClassName : IRewardedVideoAdListener {}
- Реализуйте все методы обратного вызова:
#region Rewarded Video callback handlers
//Called when rewarded video was loaded (precache flag shows if the loaded ad is precache).
public void onRewardedVideoLoaded(bool isPrecache)
{
Debug.Log("RewardedVideo loaded");
}
// Called when rewarded video failed to load
public void onRewardedVideoFailedToLoad()
{
Debug.Log("RewardedVideo failed to load");
}
// Called when rewarded video was loaded, but cannot be shown (internal network errors, placement settings, etc.)
public void onRewardedVideoShowFailed()
{
Debug.Log("RewardedVideo show failed");
}
// Called when rewarded video is shown
public void onRewardedVideoShown()
{
Debug.Log("RewardedVideo shown");
}
// Called when reward video is clicked
public void onRewardedVideoClicked()
{
Debug.Log("RewardedVideo clicked");
}
// Called when rewarded video is closed
public void onRewardedVideoClosed(bool finished)
{
Debug.Log("RewardedVideo closed");
}
// Called when rewarded video is viewed until the end
public void onRewardedVideoFinished(double amount, string name)
{
Debug.Log("RewardedVideo finished");
}
//Called when rewarded video is expired and can not be shown
public void onRewardedVideoExpired()
{
Debug.Log("RewardedVideo expired");
}
#endregion
- Затем вызовите следующий метод:
Appodeal.setRewardedVideoCallbacks(this);
Все методы обратного вызова вызываются в главных потоках Android/iOS, которые не совпадают с главным потоком Unity. Если вы хотите обрабатывать методы обратного вызова в главном потоке Unity, следуйте этой инструкции.
Плейсменты
Appodeal SDK позволяет помечать каждый показ указанным плейсментом. Для использования плейсментов вам необходимо сначала их создать в Appodeal Dashboard. Здесь можно найти больше информации о плейсментах.
Чтобы показывать рекламу с указанием плейсмента, используйте следующий метод:
- UPM Дистрибуция
- Manual Дистрибуция
Appodeal.Show(AppodealShowStyle.RewardedVideo, "placementName");
Appodeal.show(Appodeal.REWARDED_VIDEO, "placementName");
Если загруженное объявление не может быть показано для определенного плейсмента, ничего не будет показано. Если автоматическое кеширование включено, SDK начнет кэшировать другое объявление, что может повлиять на display rate. Чтобы сохранить загруженное объявление для использования в будущем (например, для другого места размещения), перед вызовом метода show проверьте, можно ли показывать объявление:
- UPM Дистрибуция
- Manual Дистрибуция
if(Appodeal.CanShow(AppodealAdType.RewardedVideo, "placementName")) {
Appodeal.Show(AppodealShowStyle.RewardedVideo, "placementName");
}
Вы можете настроить логику показа для каждого плейсмента.
Если у вас нет плейсментов, или вы вызовете метод Appodeal.Show()
с плейсментом, которого не существует,
показ будет помечен с использованием плейсмента default
, и будут применены его настройки.
if(Appodeal.canShow(Appodeal.REWARDED_VIDEO, "placementName")) {
Appodeal.show(Appodeal.REWARDED_VIDEO, "placementName");
}
Вы можете настроить логику показа для каждого плейсмента.
Если у вас нет плейсментов, или вы вызовете метод Appodeal.show()
с плейсментом, которого не существует,
показ будет помечен с использованием плейсмента default
, и будут применены его настройки.
Методы Обратного Вызова Server-to-Server
Для обеспечения безопасности вашей внутриигровой экономики мы предлагаем использовать методы обратного вызова S2S. Для проверки каждой награды на вашем сервере настройте URL обратного вызова, который будет получать информацию о вознаграждении. Appodeal будет передавать вам информацию о пользователе для проверки и регулировки баланса пользователя.
-
Создайте URL на вашем сервере, который будет получать информацию о вознаграждении.
-
Укажите созданный URL и ключ безопасности в настройках вашего приложения на панели управления.
-
Обратный вызов о вознаграждениях будет отсыласться на в аш URL при помощи GET-запроса с двумя параметрами:
{http:/example.com/reward}?data1={data1}&data2={data2}
-
Ваш URL должен расшифровать данные и проверить их.
-
Проверьте
impression_id
на уникальность и сохраните его в системе, чтобы предотвратить дублирование транзакций.
Для установки идентификатора пользователя используйте следущюий метод до инициализации SDK:
- UPM Дистрибуция
- Manual Дистрибуция
Appodeal.SetUserId("user#123");
Appodeal.setUserId("user#123");
Мы предлагаем примеры реализации на 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.
Получение Награды Для Плейсмента
Этот метод возвращает заданную в настройках приложения награду для указанного плейсмента в виде KeyValuePair
объекта
с типом награды и её количеством.
- UPM Дистрибуция
- Manual Дистрибуция
Appodeal.GetRewardParameters("placementName");
Appodeal.getRewardParameters("placementName");
Получение Прогнозируемого eCPM
Этот метод возвращает ожидаемую эффективную цену за тысячу показов для закешированного объявления. Сумма рассчитывается на основе исторических данных для текущего рекламного блока.
- UPM Дистрибуция
- Manual Дистрибуция
Appodeal.GetPredictedEcpm(AppodealAdType.RewardedVideo);
Appodeal.getPredictedEcpm(Appodeal.REWARDED_VIDEO);
Отключение Звука В Видео Рекламе
Если на устройстве пользователя отключена громкость звонка, вы можете также отключить для него звук в видео рекламе, используя следующий метод:
- UPM Дистрибуция
- Manual Дистрибуция
Appodeal.MuteVideosIfCallsMuted(true);
Appodeal.muteVideosIfCallsMuted(true);