Introducción al SDK de Vungle (Android o Amazon) v. 5

Utilice este artículo para integrar el SDK de Vungle para Android o Amazon. A partir de la v.5.3.2 de nuestro SDK para Android, Vungle admite Amazon OS 5.4 y superiores como plataforma. Los pasos para integrar el SDK para Amazon son los mismos que para Android.

Contenido

Requisitos

  • Android 4.0 (Ice Cream Sandwich - API version 14) o posterior
  • Java 1.7: para fines de compatibilidad con Android 5.+, se necesita el JDK 7
  • Java 1.8: para fines de compatibilidad con Android 7.+, se necesita el JDK 8

Paso 1. Incluya el SDK de Vungle en su proyecto

El SDK de Vungle está disponible de dos maneras: como una AAR con Maven o mediante descarga manual directa.

Opción 1. Incluir el SDK de Vungle como una AAR con Maven

Abra el archivo build.gradle en el nivel del proyecto y añada la URL de Maven en la sección allprojects (todos los proyectos).

allprojects { repositories { maven { url 'https://jitpack.io' } } }

Abra el archivo app-level build.gradle de su aplicación y agregue las dependencias de compilación en la sección Dependencies (dependencias).

dependencies { … compile 'com.github.vungle:vungle-android-sdk:5.3.2'
compile 'com.google.android.gms:play-services-basement:11.0.4' //This library is optional, but if used, use version 11.0.1 and up only compile 'com.google.android.gms:play-services-location:11.0.4' //This library is optional, but if used, use version 11.0.1 and up only
… }

Si incluye el SDK de Vungle con Maven, puede omitir el “Paso 2. Actualice AndroidManifest.xml.”

Opción 2. Descargar el SDK de Vungle e incluirlo en su aplicación

Descargue el SDK de Vungle, descomprímalo, diríjase a la carpeta libs, copie todos los archivos .jar y añádalo a la biblioteca de su proyecto.

Screen_Shot_2017-10-05_at_2.51.15_PM.png

Abra el archivo project-level build.gradle y actualice la sección repositories (repositorios).

allprojects { repositories { jcenter() } }

Abra el archivo build.gradle en el nivel de la aplicación para su aplicación y añada otras dependencias en la sección Dependencies (dependencias).

android{ ... packagingOptions{ exclude 'META-INF/rxjava.properties' } ... } dependencies { … compile files('libs/adapter-rxjava-2.2.0.jar') compile files('libs/converter-gson-2.2.0.jar') compile files('libs/dagger-2.7.jar') compile files('libs/eventbus-2.2.1.jar') compile files('libs/gson-2.7.jar') compile files('libs/javax.inject-1.jar') compile files('libs/okhttp-3.6.0.jar') compile files('libs/okio-1.11.0.jar') compile files('libs/publisher-sdk-android-5.3.2.jar') compile files('libs/retrofit-2.2.0.jar') compile files('libs/rxjava-1.2.0.jar') compile 'com.google.android.gms:play-services-basement:11.0.4' //use version 11.0.1 and up only compile 'com.google.android.gms:play-services-location:11.0.4' //use version 11.0.1 and up only … } 

Si incluye el SDK de Vungle manualmente, pase al “Paso 2. Actualice AndroidManifest.xml.”

Paso 2. Actualice AndroidManifest.xml

Añada las siguientes líneas a su archivo AndroidManifest.xml y asigne el nombre de elemento de la aplicación a su nombre de clase de la aplicación para Multidex:

<!-- Required permissions for caching and ad operations to work -->
<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 to enable better geo-targeting of ads (recommended) -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<application
android:name=".(YourApplicationName)"
...
<activity android:name="com.vungle.publisher.VideoFullScreenAdActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>

<activity android:name="com.vungle.publisher.MraidFullScreenAdActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>

<activity android:name="com.vungle.publisher.FlexViewAdActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
>

Paso 3. Inicialice el SDK de Vungle

Nota: Se crea automáticamente una ubicación por defecto para cada aplicación. Debe proporcionar la id. de referencia de la ubicación en este paso de la inicialización independientemente de si desea aprovechar la funcionalidad de las ubicaciones. Si crea varias ubicaciones, proporcione todas las id. de referencia.

Inicio de la aplicación

Inicialice el SDK de Vungle Publisher en la primera actividad de sus aplicaciones con las id. de referencia de ubicación activas que desea usar en la aplicación. El SDK se iniciará de manera asíncrona y devolverá una devolución de llamada al VungleInitListener que se proporciona en el init.

Nota: Si se invoca el método init con un id. de aplicación incorrecta, el SDK de Vungle no se inicializará y no activará una devolución de llamada onFailure. Si se invoca al método init con un id. de ubicación incorrecta, el SDK de Vungle se inicializará, pero la colocación no podrá cargar anuncios y siempre devolverá “false” para isAdPlayable. Tampoco activamos una devolución de llamada onFailure para una id. de ubicación incorrecta.

public class FirstActivity extends android.app.Activity { // get the VunglePub instance final VunglePub vunglePub = VunglePub.getInstance(); // get your App ID from the app's main page on the Vungle Dashboard after setting up your app @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // initialize Publisher SDK with app id, placement reference id list and init callback handler vunglePub.init(this, app_id, new String[] { placementID1, placementID2, placementID3 }, new VungleInitListener() { @Override public void onSuccess() { } @Override public void onFailure(Throwable e){ } }); } }

Cada Actividad

Además, anule los métodos onPause y onResume en cada actividad (incluso la primera) para asegurarse de que el SDK de Vungle para Android esté correctamente actualizado cuando su aplicación mantenga o pierda precisión.

public class EachActivity extends android.app.Activity { // get the VunglePub instance final VunglePub vunglePub = VunglePub.getInstance(); ... @Override protected void onPause() { super.onPause(); vunglePub.onPause(); } @Override protected void onResume() { super.onResume(); vunglePub.onResume(); } }

Paso 4. Establezca los detectores

El SDK de Vungle genera varios eventos que usted puede controlar de manera programática al implementar las clases VungleAdEventListener y registrarlas usando clearAndSetEventListeners. Recuerde eliminar el detector de eventos cuando ya no lo necesite para evitar pérdidas de memoria.

vunglePub.clearAndSetEventListeners(vungleDefaultListener, vungleSecondListener);

Paso 5. Cargue y reproduzca un anuncio

Después de inicializar el SDK de Vungle correctamente, puede cargar su ubicación y reproducir el anuncio cuando esté listo. Si establece el VungleAdEventListener, este le notificará a través de la onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) devolución de llamada cuando un anuncio esté listo para reproducirse.

public class GameActivity extends android.app.Activity { // get the VunglePub instance final VunglePub vunglePub = VunglePub.getInstance(); final String placementIdForLevel = "your placement reference id"; private void onLevelStart() {() { vunglePub.loadAd(placementIdForLevel); } private void onLevelComplete() { if (vunglePub.isAdPlayable(placementIdForLevel)) { vunglePub.playAd(placementIdForLevel, globalAdConfig); } } }

Tenga en cuenta que en el caso de la ubicación que se almacena en caché automáticamente, no es necesario invocar loadAd debido a que el SDK cargará automáticamente un anuncio después de la inicialización. Recomendamos seleccionar la ubicación más vista como la ubicación de almacenamiento automático en caché.

Para definir si un usuario cuenta con la opción de salir de un anuncio, use las opciones de visualización forzada en el panel de control de Vungle.

Configuración avanzada

Servicios de Google Play (Opcional)

Incluir los servicios de Google Play a su proyecto le permite a Vungle ofrecer una experiencia de anuncio más personalizada al usuario final, pero no es obligatorio. Recomendamos utilizar la versión 8.4.0 o superior.

Para incluir los servicios de Google Play recomendamos la guía de configuración de Google. En su aplicación, asegúrese de que el dispositivo tenga una versión lo suficientemente actualizada de los servicios de Google Play. Es posible que el SDK de Vungle utilice la ubicación y la API de los anuncios de los servicios de Google Play.

  • google.android.gms:play-services-location:11.0.1
  • google.android.gms:play-services-ads:11.0.1
  • Para Play-Services 7.8.0 e inferiores: conserve la biblioteca de soporte
  • Para play-services 8.4.0 y superior: la biblioteca de soporte no es obligatoria

Compilamos correctamente nuestro SDK independiente para permitir la compilación con las siguientes versiones de los servicios de Google Play: 7.8.0, 8.4.0, 9.8.0, 10.2.4, 11.0.1.

Límite de 65,000 métodos de Dalvik

Añadir el SDK 5.1.0 de Vungle para Android a su proyecto añadirá 6,557 métodos, excepto las dependencias necesarias. Planeamos reducir la cantidad de métodos en la canalización de nuestros proyectos y este es el límite actual. Tenga en cuenta las siguientes sugerencias para reducir la cantidad total de métodos que se agregan a su proyecto.

  • Compilación selectiva de Gradle: el SDK de los servicios de Google Play (GPS) cuenta con aproximadamente 20,000 métodos. Si su proyecto utiliza los GPS, es posible compilar de manera selectiva el SDK de los GPS que requiere su proyecto.
    • com.google.android.gms:play-services-location:11.0.1
    • com.google.android.gms:play-services-ads:11.0.1

  • ProGuard: Puede habilitar ProGuard para compactar el código de su proyecto. Descartará las clases no utilizadas en el momento de la compilación para que el número total de métodos sea lo más pequeño posible. Puede habilitarlo especificando minifyEnabled true en build.gradle para el tipo de compilación apropiado y proporcionando las reglas para mantener las clases requeridas por su proyecto.

  • Multidex: si continúa con una cantidad de métodos mayor a 65,000, es posible que multiDex sea la única solución que proporcione Google. Solo debe configurar su proyecto una vez para utilizar multiDex, pero afectará el tiempo de inicio de la compilación y de la aplicación.

Proguard

Si utiliza Proguard, añada las siguientes reglas a su archivo de configuración de ProGuard:

# Vungle -dontwarn com.vungle.** -dontnote com.vungle.** -keep class com.vungle.** { *; } -keep class javax.inject.* # GreenRobot -dontwarn de.greenrobot.event.util.** # RxJava -dontwarn rx.internal.util.unsafe.** -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { long producerIndex; long consumerIndex; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { rx.internal.util.atomic.LinkedQueueNode producerNode; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef { rx.internal.util.atomic.LinkedQueueNode consumerNode; } -keep class rx.schedulers.Schedulers { public static <methods>; } -keep class rx.schedulers.ImmediateScheduler { public <methods>; } -keep class rx.schedulers.TestScheduler { public <methods>; } -keep class rx.schedulers.Schedulers { public static ** test(); }
# MOAT -dontwarn com.moat.** -keep class com.moat.** { public protected private *; }
# Retrofit -dontwarn okio.** -dontwarn retrofit2.Platform$Java8

La interfaz del EventListener

Los métodos disponibles para manipular el VungleAdEventListener se detallan en la lista a continuación:

Método

Descripción

clearAndSetEventListeners(VungleEventListener..)

Elimina los Detectores de Eventos registrados y luego agrega los Detectores de Eventos de entrada.

clearEventListeners( )

Elimina todos los EventListeners

removeEventListeners(VungleEventListener..)

Elimina los Detector de eventos de entrada.

addEventListeners(VungleEventListener..)

Añade eventListeners de entrada

API de invocación de delegado de VungleAdEventListener:

public class FirstActivity extends android.app.Activity { private final VungleAdEventListener vungleListener = new VungleAdEventListener(){ @Override public void onAdEnd(String placementReferenceId, boolean wasSuccessfulView, boolean wasCallToActionClicked) { // Called when user exits the ad and control is returned to your application // if wasSuccessfulView is true, the user watched the ad and should be rewarded // (if this was a rewarded ad). // if wasCallToActionClicked is true, the user clicked the call to action // button in the ad. } @Override public void onAdStart(String placementReferenceId) { // Called before playing an ad } @Override public void onUnableToPlayAd(String placementReferenceId, String reason) { // Called after playAd(placementId, adConfig) is unable to play the ad } @Override public void onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) { // Notifies ad availability for the indicated placement // There can be duplicate notifications } }; @Override public void onDestroy() { vunglePub.clearEventListeners(); super.onDestroy(); }; }

Nota sobre el subproceso de la IU

Las devoluciones de llamadas se ejecutan en un subproceso en segundo plano, así que todas las interacciones o actualizaciones de la interfaz del usuario (IU) que resultan de una devolución de llamada del evento deben pasar al subproceso principal de la IU antes de ejecutarse. Las dos maneras comunes de ejecutar su código en el subproceso de la IU son:

Opciones de configuración

Configuración global de anuncios

Después de invocar init, también debe configurar el objeto global AdConfig. Por defecto, puede usar el objeto AdConfig cada vez que invoca a playAd. Además, este objeto le permite establecer opciones que se aplicarán automáticamente a todos los anuncios que reproduzca.

public class FirstActivity extends android.app.Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); vunglePub.init(this, app_id, placement_list, new VungleInitListener() { @Override public void onSuccess() { // get a reference to the global AdConfig object final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig(); // For a full description of available options, see the 'Config Object'section. globalAdConfig.setSoundEnabled(true); } @Override public void onFailure(Throwable e) { } }); } } 

Configuración individual de anuncios

Debe usar un objeto AdConfig cada vez que invoca playAd. Pero puede personalizar cada anuncio individual que reproduzca proporcionando un nuevo objeto AdConfig a playAd. Si ha establecido opciones en la configuración global de anuncios, esas opciones quedarán anuladas por las opciones proporcionadas en AdConfig. Pase un AdConfig de anulación de la siguiente manera:

public class GameActivity extends android.app.Activity { … private void onLevelComplete() { // create a new AdConfig object final AdConfig overrideConfig = new AdConfig(); overrideConfig.setSoundEnabled(false); // the overrideConfig object will only affect this ad play. vunglePub.playAd(yourPlacementId, overrideConfig); } }

El objeto AdConfig

El control manual AdConfig cuenta con una colección de opciones que pueden configurarse para una reproducción individual del anuncio publicitario.

Nota: Los anuncios con recompensa se mencionan en algunos casos como anuncios incentivados; ambos términos se refieren siempre al mismo tipo de anuncio publicitario. En el código del SDK y en nuestra API de informes, usamos el término “anuncios incentivados”.

Las opciones disponibles se detallan en la lista a continuación:

Método

Por defecto

Descripción

setOrientation

Orientation.matchVideo

Orientation.autoRotate indica que el anuncio girará automáticamente según la orientación del dispositivo.

Orientation.matchVideo indica que el anuncio se reproducirá en la mejor orientación para el video (generalmente horizontal).

setSoundEnabled

true (verdadero)

Establece el estado del sonido inicial para el anuncio. Si es verdadero, el audio respeta el volumen y los ajustes de sonido del dispositivo. Si es falso, el video comienza en silencio, pero el usuario puede modificarlo.

setBackButtonImmediatelyEnabled

false (falso)

Si es verdadero, el usuario tiene la posibilidad de salir inmediatamente de un anuncio usando el botón para retroceder. Si es falso, el usuario no podrá usar el botón para retroceder para salir del anuncio hasta que el botón para cerrar se muestre en la pantalla.

setImmersiveMode

false (falso)

Habilita o deshabilita el modo inmersivo en dispositivos KitKat+

setIncentivizedUserId

ninguno

Establece el identificador único del usuario (user id) que se pasará a su aplicación con el fin de verificar si el usuario debe recibir una recompensa por ver un anuncio incentivado. No disponible si el anuncio no está incentivado.

 

setIncentivizedCancelDialogTitle

"¿Cerrar video?"

Establece el título del cuadro de diálogo de confirmación al omitir un anuncio incentivado. No disponible si el anuncio no está incentivado.

setIncentivizedCancelDialogBodyText

“Si cierra este video anticipadamente, no ganará su recompensa. ¿Está seguro?”

Establece el cuerpo del cuadro de diálogo de confirmación al omitir un anuncio incentivado. No disponible si el anuncio no está incentivado.

setIncentivizedCancelDialogCloseButtonText

"Cerrar video"

Establece el texto del botón “Cancelar” del cuadro de diálogo de confirmación al omitir un anuncio incentivado. No disponible si el anuncio no está incentivado.

setIncentivizedCancelDialogKeepWatchingButtonText

"Continuar viendo"

Establece el texto del botón de “continuar mirando” del cuadro de diálogo de confirmación al omitir un anuncio incentivado. No disponible si el anuncio no está incentivado.

setTransitionAnimationEnabled

false (falso)

Activa o desactiva la animación de transición de fragmentos estándar

setOrdinalViewCount(int)

null (nulo)

Si recibe informes de datos ordinales de Vungle, use este campo para pasar el ordinal de mediación. Este es un número entero que indica el orden en que se mostró este anuncio en la sesión del juego (por ejemplo, si ya se mostraron dos anuncios en esta sesión, y este anuncio de Vungle se mostró tercero, pase “3”). Lea más sobre datos ordinales aquí.

getOrdinalViewCount

ninguno

Use esto para obtener el valor que pasó a través de setOrdinalViewCount.

setFlexViewCloseTimeInSec

ninguno

Esta es la cantidad de segundos que reproducirán los videos Flex View antes de que se cierren automáticamente.

Anuncios de Flex View

Para cerrar mediante programación un anuncio de Flex View, use el objeto vunglePub.

vunglePub.closeFlexViewAd(placementID2);

Notas adicionales

Android Studios tiene un problema conocido en el que puede producir el bloqueo (“cuelgue“) que se muestra a continuación. Si tiene la versión más reciente de Android Studios Instant Run, deshabilite Android Studios Instant Run para eliminar este bloqueo.

1-20 13:53:03.649 27642-27828/com.publisher.sample W/GooglePlayServicesUtil: Google Play services out of date. Requires 10240000 but found 9879438 
11-20 13:53:03.659 27642-27828/com.publisher.sample W/VungleDevice: Google Play Services not available: SERVICE_VERSION_UPDATE_REQUIRED
11-20 13:53:05.679 27642-27642/com.publisher.sample D/Event: No subscribers registered for event class com.vungle.publisher.lu
11-20 13:53:05.679 27642-27642/com.publisher.sample D/Event: No subscribers registered for event class de.greenrobot.event.NoSubscriberEvent
¿Tiene más preguntas? Enviar una solicitud

Comentarios