Empiece a utilizar el SDK v. 5.1 + de Vungle para Android

Contenido

Requisitos

  • Android 3.0 (Honeycomb - API versión 11) 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.1.0'
	…
}

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 y añádalo a la biblioteca de su proyecto.

image2.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.

dependencies {
	…
	compile('javax.inject:javax.inject:1',
       		 'com.google.dagger:dagger:2.7',
        		'de.greenrobot:eventbus:2.2.1',
        		'io.reactivex:rxjava:1.2.0',
        		'io.reactivex:rxandroid:1.2.1')

	compile files('libs/publisher-sdk-android-5.1.0.jar’)
	…
}

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:

<!-- permissions to download and cache video ads for playback --> 
<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" />
<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 {

  // obtenga la instancia VunglePub
  final VunglePub vunglePub = VunglePub.getInstance();

  // obtenga la ID de su aplicación en la página principal de la aplicación en el Panel de control de Vungle después de configurar su aplicación
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

       // inicialice el SDK de Publisher con la ID de la aplicación, una lista de ID de referencia de ubicación y un controlador de devolución de llamada de init
  	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

Luego de inicializar el SDK de Vungle correctamente, puede cargar su ubicación y reproducir el anuncio cuando esté listo. Si establece el VungleAdEventListener, no enviará notificaciones mediante la devolución de llamada onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) cuando el anuncio esté listo para reproducirse.

public class GameActivity extends android.app.Activity {

  // obtenga la instancia VunglePub
  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 luego 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.

Nota: SDK aún no admite el modo de prueba v.5.1.

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 midifyEnabled 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 ; }
-keep class rx.schedulers.ImmediateScheduler { public ; }
-keep class rx.schedulers.TestScheduler { public ; }
-keep class rx.schedulers.Schedulers { public static ** test(); }

# MOAT
-dontwarn com.moat.**
-keep class com.moat.** {
   public protected private *;
}

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) {
        // Se invoca cuando el usuario sale del anuncio y se devuelve el control a la aplicación        
        // Si wasSuccessfulView es verdadero, el usuario miró el anuncio y debe recibir una recompensa       
        // (si este fue un anuncio con recompensa).
        // Si wasCallToActionClicked es verdadero, el usuario hizo clic en la llamada de acción
        // botón en el anuncio.    
      }

    @Override
    public void onAdStart(String placemetReferenceId) {
        // Invocado antes de reproducir un anuncio
    }

    @Override
    public void onUnableToPlayAd(String placementReferenceId, String reason) {
        // Invocado después de que playAd(placementId, adConfig) no pueda reproducir el anuncio       
     }

    @Override
  public void onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) {
        // Notifica la disponibilidad del anuncio en la ubicación indicada
  // Es posible incluir notificaciones duplicadas
    }
  };

  @Override
  public void onCreate(Bundle savedInstanceState) {
      ...

      vunglePub.init(this, app_id, placement_id_list, initCallback);
      vunglePub.clearAndSetEventListeners(vungleListener);

  };

 @Override
  public void onDestroy() {
      ...
      vunglePub.clearEventListeners();
      super.onDestroy();

  };
}</>pre

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 el 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() {
				// obtenga una referencia al objeto AdConfig global 
				final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig(); 
				// Para obtener una descripción completa de las opciones disponibles, consulte la sección "objeto Config". 
				globalAdConfig.setSoundEnabled(true);
			}
			@Override
			public void onFailure(Throwable e){

			}
		}); 
	...
	} 
}

Configuración individual de anuncios

Siempre que se invoque playAd, se debe usar un objeto Adconfig.  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 sobrescritas por las opciones proporcionadas. Pase un objeto AdConfig de anulación de la siguiente manera:

public class GameActivity extends android.app.Activity {
  …
private void onLevelComplete() {
      // cree un nuevo objeto AdConfig
      final AdConfig overrideConfig = new AdConfig();

      overrideConfig.setSoundEnabled(false);

      // el objeto overrideConfig solo afectará la reproducción de este anuncio.
      vunglePub.playAd(yourPlacementId, overrideConfig);
  }
}

El objeto AdConfig

El objeto AdConfig de anulación cuenta con una colección de opciones que pueden establecerse para una reproducción individual del anuncio. 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