Начало работы с Vungle SDK v. 6 — Adobe AIR

Эти инструкции помогут вам интегрировать подключаемый модуль Adobe Air для Vungle в обычное приложение. Приведенный здесь исходный код доступен в нашем публичном репозитории на GitHub.

Содержание

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

  • Для расширения Vungle требуется Adobe AIR SDK 4.0 или более поздней версии. Чтобы получить инструкции по обновлению AIR SDK во Flash Builder или Flash Professional, см. раздел «Дополнительные примечания».

  • Если вы работаете с Android, для расширения Vungle AIR требуется установить JDK 6 или JDK 7 (в зависимости от используемой версии Flash) в системе разработки. Для запуска приложения требуется Android 3.0 (Honeycomb - версия API версии 11) или более поздняя версия.

  • Вы можете консультироваться с документацией по классу ActionScript 3.

  • Пример класса приложения приведен в файле example/VungleExample.as. (Если у вас Flash Professional и вы не знаете, как использовать класс документа, см. раздел Использование класса документа VungleExample.as в Animate или Flash Professional CS6 в конце данной статьи.
  • Аппаратное ускорение

    Аппаратное ускорение включено по умолчанию, если ваше целевой уровень API имеет значение 14 или выше. Этот параметр должен быть включен, чтобы SDK правильно отображал рекламу с динамическим шаблоном и Native Flex. Убедитесь, что этот параметр не имеет значение false в вашем проекте.

    <application android:hardwareAccelerated="true" ...>

 

GDPR: рекомендации по реализации

25 мая в Европейском союзе вступил в силу Общий регламент по защите данных (General Data Protection Regulation, GDPR). Разработчикам доступно два варианта соблюдения его требований.

  • Вариант 1 (рекомендуется): Издатель контролирует процесс согласия с GDPR на уровне пользователя, а затем сообщает о выборе пользователя Vungle. Для этого разработчики могут собирать данные о согласии пользователя, используя свой собственный механизм, а затем использовать API Vungle для обновления или запроса статуса согласия пользователя. Более подробная информация доступна в разделе «Рекомендованные инструкции по реализации GDPR».

  • Вариант 2: Разрешить Vungle обрабатывать требования. Vungle будет отображать диалоговое окно с запросом согласия перед воспроизведением рекламы для европейского пользователя и будет запоминать согласие или отказ пользователя для последующих показов.

Шаг 1. Добавление библиотеки расширений

Начните с создания нового мобильного проекта AIR и добавления нативного расширения. Вам нужно будет добавить два или три файла .ane:

  • com.vungle.extensions.Vungle.ane
  • com.vungle.extensions.android.AndroidSupportLib.ane
  • com.vungle.extensions.android.GooglePlayServices.ane (Если ваш проект предназначен для платформы Android, вам также может потребоваться добавить в свой проект библиотеку служб Google Play. Многие другие расширения включают эту библиотеку, поэтому она может уже присутствовать.)

Animate и Flash Professional CS6 или более поздней версии

  1. Создайте новый проект AIR для Android или iOS.
  2. Выберите Файл → Параметры публикации.
  3. Нажмите кнопку с изображением гаечного ключа около поля Сценарий со значением «Настройки ActionScript».
  4. На вкладке Путь к библиотеке нажмите Поиск файла нативного расширения (ANE) и выберите файл vungle.extensions.Vungle.ane. Нажмите ОК.
  5. Нажмите кнопку с изображением гаечного ключа около поля Цель со значением «Настройки проигрывателя».
  6. Если проект предназначен для платформы Android: на вкладке Разрешения включите 'INTERNET', 'WRITE_EXTERNAL_STORAGE' и 'ACCESS_NETWORK_STATE'.
  7. Установите флажок Вручную управлять разрешениями и дополнениями к манифесту этого приложения и нажмите кнопку ОК.
  8. Повторите шаги 1-7, в этот раз выбрав com.vungle.extensions.android.AndroidSupportLib.ane на шаге 4.
  9. Если проект предназначен для платформы Android и эта библиотека отсутствует, повторите шаги еще раз, но в этот раз выберите файл com.vungle.extensions.android.GooglePlayServices.ane на шаге 4.

Flash Builder 4.6 или более поздней версии

  1. В окне Свойства проекта в разделе Путь сборки Actionscript выберите Родные расширения.
  2. Выберите Добавить ANE... и перейдите к файлу vungle.extensions.Vungle.ane.
  3. Выберите Упаковка сборки Actionscript → Google Android.
  4. На вкладке Родные расширения установите флажок Упаковать рядом с расширением.
  5. Повторите шаги 1-2, в этот раз выбрав com.vungle.extensions.android.AndroidSupportLib.ane на шаге 2.
  6. При разработке для платформы iOS повторите действия 3 и 4 для цели «Apple iOS».

Шаг 2. Обновление дескриптора приложения

Для работы Vungle необходимо внести изменения в XML-файл приложения. Измените XML-файл, созданный с помощью среды IDE, следующим образом.

Примечание. Если у вас Flash Professional, необходимо выполнить описанные выше действия для добавления библиотеки расширений (см. раздел Animate и Flash Professional CS6 или более поздней версии), иначе Flash может отменить сделанные изменения.

  1. Укажите AIR SDK версии 4.0 (или более поздней) в файле дескриптора приложения:
    <application xmlns="http://ns.adobe.com/air/application/4.0">
  2. Добавьте в дескриптор ссылку на расширение.
    <extensions>
    <extensionID>com.vungle.extensions.Vungle</extensionID>
    <extensionID>com.vungle.extensions.android.AndroidSupportLib</extensionID>
    </extensions>
  3. При разработке для платформы Android может потребоваться также добавить в проект библиотеку сервисов Google Play. В этом случае добавьте также ее идентификатор расширения.
    <extensions>
    <extensionID>com.vungle.extensions.Vungle</extensionID>
    <extensionID>com.vungle.extensions.android.AndroidSupportLib</extensionID>
    <extensionID>com.vungle.extensions.android.GooglePlayServices</extensionID>
    </extensions>

Приложения AIR с целевой платформой Android

Если целевая платформа — Android, измените дополнения манифеста в XML-элементе android следующим образом:

  • включите разрешения INTERNET, WRITE_EXTERNAL_STORAGE и ACCESS_NETWORK_STATE;
  • добавьте определения действий VideoFullScreenAdActivity,MraidFullScreenAdActivity, и MraidFullScreenAdActivity;
  • добавьте тег метаданных версии google-play-services:
     <android>

    <manifestAdditions><![CDATA[

    <manifest android:installLocation="auto">

    <!--Required Permissions-->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <!--Optional Permissions-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:networkSecurityConfig="@xml/network_security_config" >
    <activity android:name=".MainActivity">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    <!-- Google Play Services -->
    <meta-data android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
    <!-- Vungle -->
    <activity
    android:name="com.vungle.warren.ui.VungleActivity"
    android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
    android:launchMode="singleTop"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    <!-- android-job -->
    <service
    android:name="com.evernote.android.job.v21.PlatformJobService"
    android:exported="false"
    android:permission="android.permission.BIND_JOB_SERVICE" />
    <service
    android:name="com.evernote.android.job.v14.PlatformAlarmService"
    android:exported="false"
    android:permission="android.permission.BIND_JOB_SERVICE" />
    <service
    android:name="com.evernote.android.job.v14.PlatformAlarmServiceExact"
    android:exported="false" />
    <receiver
    android:name="com.evernote.android.job.v14.PlatformAlarmReceiver"
    android:exported="false" >
    <intent-filter>
    <!-- Keep the filter for legacy intents -->
    <action android:name="com.evernote.android.job.v14.RUN_JOB" />
    <action android:name="net.vrallev.android.job.v14.RUN_JOB" />
    </intent-filter>
    </receiver>
    <receiver
    android:name="com.evernote.android.job.JobBootReceiver"
    android:exported="false" >
    <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
    <action android:name="android.intent.action.QUICKBOOT_POWERON" />
    <action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
    <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
    </intent-filter>
    </receiver>
    <service
    android:name="com.evernote.android.job.gcm.PlatformGcmService"
    android:enabled="false"
    android:exported="true"
    android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" >
    <intent-filter>
    <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
    </intent-filter>
    </service>
    <service
    android:name="com.evernote.android.job.JobRescheduleService"
    android:exported="false"
    android:permission="android.permission.BIND_JOB_SERVICE" />
    </application>

    </manifest>
    ]]></manifestAdditions>

     </android>

Шаг 3. Интеграция Vungle API

Для добавления Vungle API в приложение нужно добавить всего несколько строк в ActionScript.

Инициализация расширения Vungle

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

Инициализируйте API при запуске приложения.

  • Если у вас «чистый» ActionScript, используйте для этого конструктор класса документа.
  • Если у вас Flex, вызывайте событие initialize() основного класса.
  • Если вы используете Flash и код со шкалой времени, делайте это на 1-м кадре.
  1. Импортируйте классы API:
    import com.vungle.extensions.*; import com.vungle.extensions.events.*;
  2. Инициализируйте API, вызвав create() и передав строку идентификатора приложения и массив, содержащий идентификатор размещения приложения (идентификатор размещения приложения можно найти на панели инструментов Vungle). Если ваш проект предназначен для обеих платформ iOS и Android, укажите другой идентификатор приложения и его массив размещения на каждой платформе для метода create().

    Перенесите свой вызов Vungle.create() в try/catch, так как Vungle может вернуть ошибку во время процесса создания (например, расширение возвращает ошибку при запуске на настольном компьютере):
    try { // инициализация с идентификатором приложения Vungle.create("your_vungle_id", [“placement1”, “placement2”, “placement3”]); } catch (error:Error) { // не удается создать расширение. возможно, у вас платформа не iOS и не Android. }

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

Для воспроизведения рекламного объявления необходимо загрузить его для соответствующего размещения. Размещение с автоматическим кэшированием не требует вызова этого метода. SDK самостоятельно попытается загрузить размещение с автоматическим кэшированием.

Vungle.vungle.loadAd(“non_auto_cached_placement”);

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

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

If (Vungle.vungle.isAdAvailable(“placement_id”)) { Vungle.vungle.playAd(“placement_id”); }

Добавление прослушивателей событий

Расширение Vungle формирует следующие события: VungleEvent.AD_PLAYABLE, VungleEvent.AD_STARTED, VungleEvent.AD_FINISHED, VungleEvent.AD_FAILED, VungleEvent.AD_INIT и VungleEvent.AD_LOG.

  1. AD_PLAYABLE отправляется, когда реклама готова к воспроизведению.
    Vungle.vungle.addEventListener(VungleEvent.AD_PLAYABLE, onAdPlayable); function onAdPlayable(e:VungleEvent):void { if (e.isAdPlayable) { trace(“ad is playable for placement: “ + e.placement); Vungle.vungle.playAd(e.placement); } else { trace(“ad not playable for placement: “ + e.placement); } }
  2. События AD_STARTED и AD_FINISHED отправляются, когда реклама отображается и закрывается, соответственно:
    Vungle.vungle.addEventListener(VungleEvent.AD_STARTED, onAdStarted); Vungle.vungle.addEventListener(VungleEvent.AD_FINISHED, onAdFinished); function onAdStarted(e:VungleEvent):void { trace("ad displayed for placement: " + e.placement); } function onAdFinished(e:VungleEvent):void { trace("ad dismissed for placement: “ + e.placement + “, CTA = " + e.wasCallToActionClicked); if (e.wasSuccessfulView) { trace("counts a completed view - present reward."); } }
  3. AD_INIT отправляется, когда Vungle SDK завершает инициализацию.
    function onAdInit(e:VungleEvent):void { trace(“Vungle SDK is initialized: “ + e.isInitialized”); }
  4. AD_LOG отправляется, когда сообщение журнала отправляется Vungle SDK. Вы можете использовать его для отладки. Ведение журнала выполняется только в Vungle SDK для iOS, поэтому это событие является зависимым от платформы.
    Vungle.vungle.setLoggingEnabled(true); Vungle.vungle.addEventListener(VungleEvent.AD_LOG, onAdLog); private function onAdLog(e:VungleEvent):void { log("ad log: " + e.message); }

Другие параметры

Как вам уже известно, вы можете передать объект с параметрами конфигурации при вызове метода playAd().

Примечание. Рекламные объявления с вознаграждением в некоторых случаях называются рекламными объявлениями со стимулом, оба термина относятся к одному и тому же типу рекламных объявлений. В коде SDK и нашем интерфейсе Reporting API мы используем термин incentivized (со стимулом).

В VungleAdConfig доступны следующие свойства:

Параметр

Значение

Описание

orientation

VungleOrientation

Android

VungleOrientation.AUTO_ROTATE

VungleOrientation.ANDROID_MATCH_VIDEO

iOS

VungleOrientation.IOS_LANDSCAPE

VungleOrientation.IOS_PORTRAIT

soundEnabled

Логическое

При значении true (по умолчанию) звук во время показа видеорекламы будет включен (в соответствии с системными звуковыми настройками). При значении false видео будет воспроизводиться без звука. Обратите внимание, что пользователь может сам отключить или включить звук во время воспроизведения.

backButtonImmediatelyEnabled

Логическое

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

immersiveMode

Логическое

Только для Android. При значении true включается режим комфортного просмотра на устройствах KitKat+. Значение по умолчанию: false.

incentivizedUserId

Строка

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

flexViewCloseTimeInSec

Int

Используйте этот параметр, чтобы реклама Flex View закрывалась автоматически через указанное количество секунд.
Эта функция работает только с рекламой Flex View.

incentivizedCancelDialogTitle

Строка

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

 

Примечание. Этот параметр применим только к стандартной рекламе Vungle и неприменим к рекламе с динамическим шаблоном. Параметр, применяемый для рекламы с динамическим шаблоном, можно настроить на панели управления (с теми же параметрами).

incentivizedCancelDialogBodyText

incentivizedCancelDialogCloseButtonText

incentivizedCancelDialogKeepWatchingButtonText

Пример кода:

var adConfig:VungleAdConfig = new VungleAdConfig(); adConfig.orientation = VungleOrientation.ANDROID_MATCH_VIDEO | VungleOrientation.IOS_LANDSCAPE; adConfig.soundEnabled = false; android: { adConfig.backButtonImmediatelyEnabled = true; adConfig.immersiveMode = true; }; adConfig.incentivizedUserId = "vungle_test_user"; adConfig.incentivizedCancelDialogBodyText = "body_text"; adConfig.incentivizedCancelDialogCloseButtonText = "close_button_text"; adConfig.incentivizedCancelDialogKeepWatchingButtonText = "continue_button_text"; adConfig.incentivizedCancelDialogTitle = "title_text"; Vungle.vungle.playAd(placement, adConfig);

Глобальные значения по умолчанию

С помощью объекта глобальной конфигурации можно задать значения по умолчанию для параметров.

// set any configuration options you like VungleAdConfig.globalConfig.orientation = VungleOrientation.ANDROID_MATCH_VIDEO; VungleAdConfig.globalConfig.soundEnabled = false;

Теперь каждый новый объект VungleAdConfig будет создаваться с использованием этих значений по умолчанию. Глобальная конфигурация используется также при вызове метода playAd() без параметров.

Примечание. Когда приложение находится в режиме тестирования, скачивать рекламируемые приложения нельзя. Кроме того, на панели управления невозможно будет просмотреть количество показов. Это связано с тем, что тестовая реклама предназначена только для проверки правильности интеграции SDK. Эти функциональные возможности станут доступны после запуска приложения в активном режиме.

Реклама Flex Feed

Чтобы программно закрыть рекламу Flex View, вызовите функцию closeFlexViewAd после запуска рекламы:

Vungle.vungle.closeFlexViewAd(placement);

Эта функция работает только с рекламой Flex View и только на Vungle SDK iOS.

 

Дополнительные примечания

Рекомендованные инструкции по реализации GDPR

Чтобы использовать API Vungle для обновления или запроса статуса согласия пользователя (как рекомендовано в Варианте 1 в разделе GDPR: рекомендации по реализации Vungle), используйте следующие функции:

Обновление статуса согласия

Vungle.vungle.updateConsentStatus(VungleConsent.ENUMSTATE);

Возможные состояния:

Принято — VungleConsent.OPTED_IN // 1

Отклонено — VungleConsent.OPTED_OUT // 0

 

Получение текущего статуса согласия

//Возвращает перечисление VungleConsent

var status:int = Vungle.vungle.getConsentStatus();

 

Использование класса документа VungleExample.as в Animate или Flash Professional CS6

  1. Сначала создайте приложение и добавьте расширение (инструкции см. в разделах 1–3 данной статьи об интеграции).
  2. Скопируйте as-файл в папку, содержащую файлы с расширением .fla. Не копируйте содержимое файла на шкалу времени.
  3. Замените идентификаторы приложения и размещений в строке 20 идентификаторами своего приложения Vungle.
  4. В свойствах Flash в разделе Класс документа введите VungleExample и нажмите кнопку ОК.
  5. Соберите и установите приложение.

Установка новой версии AIR SDK (4.0 или более поздней) в Flash Professional CS6

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

  1. Распакуйте архив с пакетом AIR 4.0 или более поздней версии в папку на жестком диске.
  2. Запустите Flash Professional CS6.
  3. Выберите Справка → Управление AIR SDK....
  4. Нажмите кнопку + (плюс) и перейдите в папку с распакованным пакетом AIR SDK.
  5. Нажмите кнопку ОК.
  6. Выберите Файл → Параметры публикации.
  7. В раскрывающемся меню Цель выберите последнюю версию AIR SDK для iOS.

Установка новой версии AIR SDK (4.0 или более поздней) в Flash Builder

Найдите по этой ссылке последнюю версию AIR SDK. Если у вас уже установлен пакет AIR 4.0 или более поздней версии, можете пропустить этот шаг. Вы также можете воспользоваться последними инструкциями компании Adobe по обновлению пакетов AIR SDK для Flash Builder.

Ошибка Adobe Animate Invalid Input

Если появляется сообщение об ошибке, показанное на иллюстрации ниже, см. эту статью.

image2.png

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0
Еще есть вопросы? Отправить запрос

Комментарии