Empiece a utilizar el SDK v.5 de Vungle para Android

Use este artículo para integrar el SDK de Vungle para Android o Amazon. En la v.5.3.0 de nuestro SDK de Android, Vungle es compatible con Amazon OS 5.4 y superiores como plataforma. Los pasos para integrar el SDK de Amazon son los mismos que los utilizados 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.

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

Abra el archivo build.gradle en el nivel de la aplicación para su aplicación y añada las dependencias de compilación en la sección dependencies.

dependencies {
    …
    compile 'com.github.vungle:vungle-android-sdk:5.3.0'
compile 'com.google.android.gms:play-services-basement:11.4.0'  //use version 11.0.1 and up only compile 'com.google.android.gms:play-services-location:11.4.0'  //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 Vungle SDK, 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 build.gradle en el nivel del proyecto y actualice la sección repositories.

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.

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.0.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.4.0'  //use version 11.0.1 and up only
    compile 'com.google.android.gms:play-services-location:11.4.0'  //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: una ubicación por defecto se crea automáticamente 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.

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";
    final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig();
 
    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 inferior: 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 reducir el código de su proyecto. Desechará las clases que no se utilicen cuando se realice la compilación para reducir la cantidad total de métodos al máximo. Puede habilitarlo especificando minifyEnabled true en build.gradle para garantizar el tipo de compilación adecuada y proporcionando las reglas para conservar las clases necesarias para 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();
  };
}

Vungle también proporciona VunlgeInitListner para la actualización de los eventos de inicialización del SDK.

public void onSuccess();
public void onFailure(Throwable error);

Nota sobre el subproceso de la UI

Las devoluciones de llamadas se ejecutan en un subproceso en segundo plano, así que todas las interacciones o actualizaciones de la interfaz del usuario que resultan de una devolución de llamada del evento deben pasar al subproceso principal de la interfaz del usuario antes de ejecutarse. Las dos maneras comunes de ejecutar su código en el subproceso de UI 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 de SDK y en nuestro API de reportes, 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 de rotará automáticamente según la orientación del dispositivo.

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

setSoundEnabled

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

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

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 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 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 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 continuar viendo' del diálogo de confirmación al omitir un anuncio incentivado. No disponible si el anuncio no está incentivado.

setTransitionAnimationEnabled

falso

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

 

¿Tiene más preguntas? Enviar una solicitud

Comentarios