Начало работы с Vungle – Windows SDK v.2.0+

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

Примеры кода в этом руководстве приводятся на языке C#, однако мы предоставляем файлы примеров приложений sample на C#, C++, Visual Basic и DirectX+XAML из нашего репозитория GitHub.

Содержание

Перед началом работы

  • Это руководство предназначено для Vungle Windows SDK 2.0 и более поздних версий. Руководство по интеграции для Vungle Windows SDK версии 1.3.16 и более ранних версий приводится здесь: Get Started with Vungle – Windows SDK v. 1.0 – v.1.3.16 (Начало работы с Vungle – Windows SDK v. 1.0 – v.1.3.16).
  • Для интеграции требуется учетная запись Vungle. Если у вас ее нет, создайте ее.
  • Если вы этого еще не сделали, перейдите на панель управления и добавьте приложение в свою учетную запись. Чтобы узнать, как настраиваются размещения на панели управления Vungle, ознакомьтесь со статьей Setting Up and Reporting on Placements (Настройка размещений и отчеты по ним).
  • При разработке продуктов для Windows 8.1 and Windows Phone 8.1 следует использовать Visual Studio 2015, поскольку в Visual Studio 2017 поддержка этих версий прекращена.
  • Кнопка Back (Назад) поддерживается на мобильных устройствах, но не на ПК (для его клавиатуры). Это может приводить к различиям в поведении и взаимодействии с пользователем для сборок UWP.
  • Если в режиме тестирования не было возвращено ни одного объявления, переключите свое приложение в активный режим.

Скачайте пакет SDK и добавьте VungleSDK в свой проект

  1. Скачайте пакет Vungle Windows SDK из панели управления Vungle.
  2. Извлеките архив.
  3. В Visual Studio создайте новый проект с помощью шаблона, соответствующего вашему приложению и языку программирования.
  4. Добавьте ссылку в свой проект на загруженный вами файл Vungle Windows SDK.
  5. Убедитесь, что в вашем проекте имеется возможность internetClient в файле package.appxmanifest, как показано ниже:
    <Capabilities>
    ...
    <Capability Name="internetClient" />
    ...
    </Capabilities>
  6. Импортируйте пространство имен VungleSDK.
    using VungleSDK;
    

Получите экземпляр VungleAd

Экземпляр VungleAd принимает два параметра: строку для идентификатора вашего приложения Vungle и массив строк для идентификаторов размещений. Вы можете использовать только те идентификаторы, которые уже были включены вами при получении данного экземпляра. Если вы не включили одно размещение с автоматическим кэшированием, пакет SDK автоматически назначит одно из размещений без автоматического кэширования в качестве размещения с автоматическим кэшированием.

VungleAd sdkInstance;

string appID = “app_id”;
string[] placementArray = new string[]
{
  “placement_id_1”,
  “placement_id_2”,
  “placement_id_3”
};
sdkInstance = AdFactory.GetInstance(appID, placementArray);

В примере выше замените app_id на идентификатор вашего приложения Vungle и placement_id_# на идентификаторы размещений, которые будут использоваться в вашем проекте. Чтобы ускорить запуск автоматического кэширования, мы рекомендуем вам выполнять эти шаги инициализации до тех пор, пока ваше приложение не завершит загрузку критически важных компонентов.

Создание и регистрация обработчика событий

Создайте обработчик событий для события OnAdPlayableChanged. Этот обработчик событий вызывается, когда изменяется статус доступности рекламы. Вы можете указать, какое размещение активирует событие, выбрав e.Placement.

// Обработчик событий для события OnAdPlayableChanged
private async void SdkInstance_OnAdPlayableChanged(object sender, AdPlayableEventArgs e)
{
  // e.Placement – идентификатор размещения в строке
  // Запустить асинхронно в потоке пользовательского интерфейса
  await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
    new DispatchedHandler(() => methodToRun(e.Placement)));
}

Зарегистрируйте этот обработчик событий для события OnAdPlayableChanged.

sdkInstance.OnAdPlayableChanged += SdkInstance_OnAdPlayableChanged;

Загрузка рекламы для размещения

Для размещений, не являющихся размещениями с автоматическим кэшированием, необходимо сначала вызвать LoadAd, чтобы предоставить достаточно времени для скачивания рекламных ресурсов, а затем подождать вызова OnAdPlayableChanged:

sdkInstance.LoadAd(“placement_id”);

Примечание. Размещение с автоматическим кэшированием будет пытаться скачать новый рекламный ресурс сразу же после вызова PlayAdAsync, поэтому вызывать LoadAd не требуется.

Пример кода:

private void OnLevelStart(Object sender, RoutedEventArgs e)
{
  sdkInstance.LoadAd(“placement_id”);
}

Воспроизведение рекламы

Запустите рекламу в конфигурации по умолчанию:

sdkInstance.PlayAdAsync(new AdConfig(), “placement_id”);

Пример кода:

private async void OnLevelComplete(Object sender, RoutedEventArgs e)
{
  await sdkInstance.PlayAdAsync(new AdConfig(), “placement_id”);
}

Вы можете дополнительно настроить воспроизводимые объявления, предоставив параметры объекту AdConfig.

Пример кода:

private async void PlayCustomizedAd(Object sender, RoutedEventArgs e)
{
  AdConfig adConfig = new AdConfig();

  adConfig.Orientation = DisplayOrientations.Portrait;
  adConfig.SoundEnabled = false;
  
  await sdkInstance.PlayAdAsync(adConfig, placement2);
}

Параметры настройки

В экземпляре объекта AdConfig доступны следующие свойства:

Параметры

Значение по умолчанию/
Тип

Описание

Orientation

AutoRotate

DisplayOrientations

Orientation.AutoRotate (по умолчанию) обеспечивает, чтобы рекламное объявление автоматически поворачивалось в зависимости от ориентации устройства.

Orientation.Portrait обеспечивает, чтобы рекламное объявление воспроизводилось только в книжной ориентации.

Orientation.Landscape обеспечивает, чтобы рекламное объявление воспроизводилось только в альбомной ориентации.

Примечание. Этот параметр применим только к рекламе для мобильных устройств.

SoundEnabled

true

bool

Задает начальное состояние звука для рекламного объявления.

Если указано true (по умолчанию), используются громкость и настройки звука устройства.

Если указано false, видео начинает воспроизводиться с отключенным звуком, но пользователь может это изменить.

BackButtonImmediatelyEnabled

false

bool

Если указано true, пользователь может незамедлительно закрыть объявление с помощью кнопки «Назад».

При значении false (по умолчанию) пользователь не может использовать кнопку «Назад» для выхода из объявления, пока не покажется кнопка «Закрыть» на экране.

Примечание. Этот параметр применим только к рекламе для мобильных устройств.

UserId

null

строка

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

Примечание. Этот параметр применим только к размещениям с вознаграждением.

IncentivizedDialogTitle

"Close this ad?" (Закрыть это объявление?)

строка

Задает заголовок диалога подтверждения при пропуске стимулированной рекламы.

Примечание. Этот параметр применим только к размещениям с вознаграждением.

IncentivizedDialogBody

"Пропустить эту рекламу? Чтобы претендовать на вознаграждение, вы должны завершить просмотр."

строка

Задает текст диалога подтверждения при пропуске стимулированной рекламы.

Примечание. Этот параметр применим только к размещениям с вознаграждением.

IncentivizedDialogCloseButton

"Закрыть"

 

строка

Задает текст кнопки 'cancel' диалога подтверждения при пропуске стимулированной рекламы.

Примечание. Этот параметр применим только к размещениям с вознаграждением.

IncentivizedDialogContinueButton

"Продолжить"

строка

Задает текст кнопки 'keep watching' диалога подтверждения при пропуске стимулированной рекламы.

Примечание. Этот параметр неприменим, если реклама не является стимулированной.

Incentivized

-

УСТАРЕЛО

Вы можете задать конфигурацию с вознаграждением на уровне размещений из панели управления. См. статью Setting Up and Reporting on Placements (Настройка размещений и отчеты по ним).


Примечание.
Параметры для диалогов SoundEnabled и стимулированной рекламы для рекламы с динамическим шаблоном и представлением Flex доступны на панели управления для конфигурации. Программируемая конфигурация будет применяться только к традиционной рекламе.

Отображение кнопки "Закрыть"

Чтобы управлять возможностью пользователя закрывать объявление, используйте параметры принудительного просмотра в расширенных настройках вашего приложения на панели управления Vungle.

Создание обработчиков событий

Пакет Windows SDK формирует несколько событий, которыми можно управлять программно. Вы можете использовать эти обработчики событий для управления возможностями своего приложения, такими как приостановка или возобновление фоновой музыки.

Замечание о потоке пользовательского интерфейса

Прослушиватели событий выполняются в фоновом потоке, поэтому любые взаимодействия или обновления пользовательского интерфейса, вызванные прослушивателем событий, должны быть перед выполнением переданы в основной поток пользовательского интерфейса. Вот один из способов, позволяющих это сделать:

await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
new DispatchedHandler(() =>
{ // Этот блок будет выполняться в потоке пользовательского интерфейса
} );

Обработчики событий VungleAd

Обработчики событий

Описание

OnInitCompleted

Вызывается сразу же после завершения инициализации SDK. Вы можете проверить, имеется ли реклама, загруженная из предыдущего сеанса, или же загрузить рекламу для размещений.

OnAdPlayableChanged

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

OnAdStart

Вызывается перед воспроизведением объявления. Вы можете выполнять такие действия, как, например, приостановка фоновой музыки.

OnAdEnd

Вызывается, когда пользователь закрывает последний кадр и управление возвращается в приложение. Если значением IsCompletedView или CallToActionClicked является true, пользователь просмотрел рекламу или нажал кнопку скачивания в рекламном объявлении. В этом случае, если данное объявление было с вознаграждением, пользователь должен получить вознаграждение. Вы можете выполнять такие действия, как, например, восстановление возможностей приложения.

Diagnostic

Вызывается, когда для SDK требуется распечатка журналов диагностики.

Пример кода:

//Регистрация обработчиков событий
sdkInstance.OnInitCompleted     += SdkInstance_OnInitCompleted;
sdkInstance.OnAdPlayableChanged += SdkInstance_OnAdPlayableChanged;
sdkInstance.OnAdStart           += SdkInstance_OnAdStart;
sdkInstance.OnAdEnd             += SdkInstance_OnAdEnd;
sdkInstance.Diagnostic          += SdkInstance_Diagnostic;

...

// OnInitCompleted
//   e.Initialized – true, если инициализация выполнена успешно, false – если произошел сбой
//   e.ErrorMessage – причина сбоя, когда значение e.Initialized равно false
private async void SdkInstance_OnInitCompleted(object sender, ConfigEventArgs e)
{
  var placementsInfo = "OnInitCompleted: " + e.Initialized;
  // Инициализация выполнена успешно
  if (e.Initialized == true)
  {
    // Распечатка списка размещений
    for (var i = 0; i < e.Placements.Length; i++)
    {
      placementsInfo += "\n\tPlacement" + (i + 1) + ": " + e.Placements[i].ReferenceId;
      if (e.Placements[i].IsAutoCached == true)
        placementsInfo += " (Auto-Cached)";
    }
  }
  // Сбой инициализации
  else
  {
    placementsInfo += "\n\t" + e.ErrorMessage;
  }
  System.Diagnostics.Debug.WriteLine(placementsInfo);
  await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() =>
    NotifyInitialization(e.Initialized)));
}

// OnAdPlayableAdPlayable
//   e.AdPlayable – true если реклама доступна для воспроизведения, false – в противном случае
//   e.Placement  идентификатор размещения в строке
private async void SdkInstance_OnAdPlayableChanged(object sender, AdPlayableEventArgs e)
{
  System.Diagnostics.Debug.WriteLine("OnAdPlayable(" + e.Placement + ") - " + e.AdPlayable);
  await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() =>
    NotifyWatcher(e.AdPlayable, e.Placement)));
}

// OnAdStart
//   e.Id – идентификатор приложения Vungle в строке
//   e.Placement  – идентификатор размещения в строке
private void SdkInstance_OnAdStart(object sender, AdEventArgs e)
{
  System.Diagnostics.Debug.WriteLine("OnAdStart(" + e.Id + "): " + e.Placement);
}

// OnAdEnd
//   e.Id – идентификатор приложения Vungle в строке
//   e.Placement  – идентификатор размещения в строке
//   e.IsCompletedView- true, когда было просмотрено не менее 80 % видеоролика
//   e.CallToActionClicked – true, когда пользователь нажал кнопку скачивания в последнем кадре
//   e.WatchedDuration – УСТАРЕЛО
private void SdkInstance_OnAdEnd(object sender, AdEndEventArgs e)
{
  System.Diagnostics.Debug.WriteLine("OnVideoEnd(" + e.Id + "): "
    + "\n\tPlacement: " + e.Placement
    + "\n\tIsCompletedView: " + e.IsCompletedView
    + "\n\tCallToActionClicked: " + e.CallToActionClicked
    + "\n\tWatchedDuration: " + e.WatchedDuration);
}

// Обработчик событий вызывается, когда для SDK требуется распечатка журналов диагностики
private void SdkInstance_Diagnostic(object sender, DiagnosticLogEvent e)
{
  System.Diagnostics.Debug.WriteLine("Diagnostic - "
+ e.Level + " "
+ e.Type + " "
+ e.Exception + " "
+ e.Message); } // УСТАРЕЛО – используйте вместо этого SdkInstance_OnAdEnd() private void SdkInstance_OnVideoView(object sender, AdViewEventArgs e) { }
Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 1 из 1
Еще есть вопросы? Отправить запрос

Комментарии