Démarrez avec Vungle - SDK Android v. 5

Contenu

Configuration nécessaire

  • Android 3.0 (Honeycomb - API version 11) ou supérieur
  • Java 1.7 - Pour des raisons de compatibilité avec Android 5.+, JDK 7 est nécessaire
  • Java 1.8 - Pour des raisons de compatibilité avec Android 7.+, JDK 8 est nécessaire

Étape 1. Inclure le SDK Vungle dans votre projet

Le SDK Vungle est disponible de deux manières : sous forme d'AAR via Maven ou via le téléchargement manuel.

Option 1. Inclure le SDK Vungle sous forme d'AAR via Maven

Ouvrez le fichier build.gradle niveau du projet, et ajoutez l'URL Maven dans la section tous les projets.

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

Ouvrez le fichier build.gradle au niveau de l'application, et ajoutez les dépendances compilées dans la section dépendances.

dependencies {
	…
	compile 'com.github.vungle:vungle-android-sdk:5.1.0'
	…
}

Si vous incluez le SDK Vungle via Maven, vous pouvez ignorer " Étape 2. Mettre à jour AndroidManifest.xml. "

Option 2. Télécharger le SDK Vungle SDK et l'inclure dans votre application

Téléchargez le SDK Vungle et ajoutez-le à votre bibliothèque de projet.

image2.png

Ouvrez le fichier build.gradle au niveau du projet, et mettez à jour la section dépôts.

allprojects {
    repositories {
        jcenter()
    }
}

Ouvrez le fichier build.gradle au niveau de l'application, et ajoutez d'autres dépendances dans la section dépendances.

android{
...
    packagingOptions{
        exclude 'META-INF/rxjava.properties'
    }
...
}

dependencies {
    …
    compile 'com.squareup.retrofit2:converter-gson:2.2.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.2.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
    compile files('libs/dagger-2.7.jar')
    compile files('libs/javax.inject-1.jar')
    compile files('libs/eventbus-2.2.1.jar')
    compile files('libs/publisher-sdk-android-5.3.0.jar')
    compile files('libs/rxjava-1.2.0.jar')
    … 
}

Si vous incluez manuellement le SDK Vungle via Maven, passez à " Étape 2. Mettre à jour AndroidManifest.xml. "

Étape 2. Mettre à jour AndroidManifest.xml

Ajoutez les lignes suivantes à votre AndroidManifest.xml, en attribuant le nom de l'élément de l'application au nom de la classe de votre application pour 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" />
<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”/>
>

Étape 3. Initialiser le SDK Vungle

Remarque : un emplacement par défaut est créé automatiquement pour chaque application. Vous devez fournir son ID de référence de l'emplacement lors de l'étape d'initialisation que vous envisagiez ou non de profiter de ses fonctions. Si vous créez plusieurs emplacements, fournissez tous les ID de référence.

Démarrage de l'application

Initialisez le SDK Publisher Vungle dans la première activité de votre application avec l'ID de référence de l'emplacement actif que vous souhaitez utiliser dans l'application. Le SDK sera initialisé de façon asynchrone et renverra une fonction de rappel au VungleInitListener fourni dans init.

public class FirstActivity extends android.app.Activity {

  // obtenir l'instance VunglePub
  final VunglePub vunglePub = VunglePub.getInstance();

  // retirer votre App ID de la page principale de l'application sur le tableau de bord Vungle après avoir configuré votre application
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

       // initialiser le SDK Publisher avec l'id d'application, la liste d'id de référence de l'emplacement et le gestionnaire de la fonction de rappel init
  	vunglePub.init(this, app_id, new String[] { placementID1, placementID2, placementID3 }, new VungleInitListener() {

            @Override
            public void onSuccess() {
            }
            @Override
            public void onFailure(Throwable e){

            }
        });

Chaque activité

En outre, il outrepasse les méthodes onPause et onResume dans chaque activité (y compris la première) pour assurer que le SDK Vungle Android et bien à jour quand votre application gagne ou perd du focus.

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();
  }
}

Étape 4. Définir les écouteurs

Le SDK Vungle crée plusieurs événements que vous pouvez gérer par programmation en implémentant des classes VungleAdEventListener et en les enregistrant à l'aide de clearAndSetEventListeners. N'oubliez pas de supprimer l'eventListener lorsque vous n'en avez plus besoin, afin d'éviter les pertes de mémoire.

vunglePub.clearAndSetEventListeners(vungleDefaultListener, vungleSecondListener);

Étape 5. Charger et jouer une publicité

Lorsque le SDK Vungle est initialisé avec succès, vous pouvez charger votre emplacement et jouer la publicité lorsqu'elle est prête. Si vous définissez le VungleAdEventListener, ce dernier notifiera la fonction de rappel onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) lorsque la publicité sera prête à être jouée.

public class GameActivity extends android.app.Activity {

  // obtenir l'instance 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); } } }

Notez que pour l'emplacement mis en cache automatiquement, vous n'avez pas besoin d'appeler loadAd car le SDK charge automatiquement une publicité après l'initialisation. Nous vous recommandons de choisir les emplacements les plus consultés comme sélection mise en cache automatiquement.

Pour définir si un utilisateur peut fermer une publicité, utilisez les options d'affichage forcé dans le tableau de bord Vungle.

Remarque : le mode test n'est pas encore pris en charge sous SDK v.5.1.

Paramètres avancés

Services Google Play (facultatif)

L'intégration des services Google Play dans votre projet permet à Vungle d'offrir une expérience personnalisée à l'utilisateur final, mais elle n'est pas obligatoire. Nous recommandons l'utilisation de la version 8.4.0 ou supérieure.

Pour inclure les services Google Play, nous recommandons le guide d'installation Google. Dans votre application, assurez-vous que l'appareil dispose d'une version mise à jour des services Google Play. Le SDK Vungle utilise de manière facultative l'emplacement et l'API des publicités provenant des services Google Play.

  • google.android.gms:play-services-location:11.0.1
  • google.android.gms:play-services-ads:11.0.1
  • Pour les services play jusqu'à 7.8.0 : conservez la bibliothèque de support
  • Pour les services play à partir de 8.4.0 : la bibliothèque de support n'est pas obligatoire

Nous avons compilé avec succès notre SDK autonome avec les versions suivantes des services Google Play : 7.8.0, 8.4.0, 9.8.0, 10.2.4, 11.0.1.

Limite de la méthode Dalvik 65K

Le fait d'ajouter un SDK Vungle Android 5.1.0 à votre projet ajoutera 6 557 méthodes, à l'exception des autres dépendances obligatoires. Nous envisageons de réduire le nombre de méthodes dans notre pipeline de projets, et il s'agit de la limite actuelle. Tenez compte des suggestions suivantes pour réduire le nombre total de méthodes ajoutées à votre projet.

  • Compilation Gradle sélective : le SDK des services Google Play Services (GPS) possède environ 20K méthodes. Si votre projet utilise des GPS, il existe une option pour compiler de manière sélective le SDK GPS obligatoire pour votre projet.
    • com.google.android.gms:play-services-location:11.0.1
    • com.google.android.gms:play-services-ads:11.0.1

  • ProGuard: Vous pouvez activer ProGuard pour diminuer le code de votre projet. Cela permettra de rejeter les classes inutilisées au moment de la compilation pour que le nombre de méthodes soit aussi petit que possible. Vous pouvez l'activer en spécifiant midifyEnabled true in build.gradle pour un type de build approprié et en fournissant les règles pour conserver les classes requises par votre projet. 

  • Multidex : si vous avez toujours un nombre de méthodes supérieur à 65K, l'activation de multiDex peut être la seule solution fournie par Google. Vous devez configurer votre projet sur multiDex une seule fois, mais cela impactera l'heure de démarrage du build et de l'application.

Proguard

Si vous utilisez Proguard, ajoutez les règles suivantes à votre fichier de configuration 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 *; }

# Retrofit
-dontwarn okio.**
-dontwarn retrofit2.Platform$Java8

L'interface EventListener

Les méthodes disponibles pour manipuler le VungleAdEventListener sont répertoriées ci-dessous :

Méthode

Description

clearAndSetEventListeners(VungleEventListener..)

Efface les EventListeners enregistrés et ajoute les eventListeners d'entrée.

clearEventListeners( )

Efface tous les EventListeners

removeEventListeners(VungleEventListener..)

Supprime les EventListeners d'entrée.

addEventListeners(VungleEventListener..)

Ajoute l'entrée eventListeners

API d'appel du délégué VungleAdEventListener :

public class FirstActivity extends android.app.Activity {
  ...

  private final VungleAdEventListener vungleListener = new VungleAdEventListener(){

    @Override
   public void onAdEnd(String placementReferenceId, boolean wasSuccessfulView, boolean wasCallToActionClicked) {
        // Appelé lorsque l'utilisateur quitte la publicité et que le contrôle est restitué à votre application        
        // si wasSuccessfulView est true, l'utilisateur a regardé la publicité et doit recevoir une récompense       
        // (s'il s'agissait d'une publicité à récompense).
        // si wasCallToActionClicked est true, l'utilisateur a cliqué sur le bouton d'appel à l'action
        // dans la publicité.    
      }

    @Override
    public void onAdStart(String placemetReferenceId) {
        // Appelé avant la lecture d'une publicité
    }

    @Override
    public void onUnableToPlayAd(String placementReferenceId, String reason) {
        // Appelé après que playAd(placementId, adConfig) a été incapable de lire la publicité       
     }

    @Override
  public void onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) {
        // Notifie la disponibilité de la publicité pour l'emplacement indiqué
  // Il peut y avoir des notifications multiples
    }
  };

  @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 fournit également VunlgeInitListner pour la mise à jour de l'événement d'initialisation du SDK.

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

Remarque relative au fil IU

Les fonctions de rappel sont exécutées sur un fil en arrière-plan ; ainsi, toute interaction d'IU ou mise à jour résultant d'une fonction de rappel d'événement doit être transmise au fil d'IU principal avant son exécution. Voici deux méthodes courantes pour exécuter votre code sur le fil d'IU :

Options de configuration

Configuration de publicité globale

Après avoir appelé init, vous devez également configurer l'objet global AdConfig. Par défaut, vous pouvez utiliser cet objet AdConfig dans chaque appel playAd. Cet objet vous permet également de définir des options qui seront automatiquement appliquées à chaque publicité que vous lisez.

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() {
				// obtenir une référence vers l'objet AdConfig global 
				final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig(); 
				// Pour obtenir la description complète des options disponibles, consultez la section Configuration de l'objet. 
				globalAdConfig.setSoundEnabled(true);
			}
			@Override
			public void onFailure(Throwable e){

			}
		}); 
	...
	} 
}

Configuration de publicité individuelle

Un objet Adconfig doit être utilisé à tout moment en appelant playAd.  Mais, vous pouvez personnaliser chaque publicité individuelle lue en fournissant un nouvel objet AdConfig à playAd. Si vous définissez des options dans la configuration de publicité globale, ces options seront remplacées par les options fournies. Transmettez un remplacement AdConfig grâce à l'approche suivante :

public class GameActivity extends android.app.Activity {
  …
private void onLevelComplete() {
      // créer un nouvel objet AdConfig
      final AdConfig overrideConfig = new AdConfig();

      overrideConfig.setSoundEnabled(false);

      // l'objet overrideConfig affectera la lecture de cette publicité uniquement.
      vunglePub.playAd(yourPlacementId, overrideConfig);
  }
}

L'objet AdConfig

Le remplacement AdConfig possède une collection d'options pouvant être définies pour la lecture d'une publicité individuelle. Les options disponibles sont décrites ci-dessous :

Méthode

Valeur par défaut

Description

setOrientation

Orientation.matchVideo

Orientation.autoRotate indique que la publicité pivotera automatiquement avec l'orientation du périphérique.

Orientation.matchVideo indique que la publicité se jouera dans la meilleure orientation pour la vidéo (généralement au format paysage).

setSoundEnabled

true

Définit l'état du son au début de la publicité. Si la valeur est true, l'audio respecte les paramètres de volume et de son de l'appareil. Si la valeur est false, la vidéo se lance en mode muet mais l'utilisateur peut activer le son.

setBackButtonImmediatelyEnabled

false

Si la valeur est true, cette option permet à l'utilisateur de quitter immédiatement une publicité grâce au bouton de retour. Si la valeur est false, l'utilisateur ne peut pas utiliser le bouton de retour pour quitter la publicité, jusqu'à ce que le bouton de fermeture à l'écran s'affiche.

setImmersiveMode

false

Active ou désactive le mode immersif sur les appareils KitKat+

setIncentivizedUserId

none

Définit l'ID utilisateur unique à transmettre à votre application pour vérifier que cet utilisateur doit être récompensé pour avoir regardé une publicité qui répond au mécanisme d'incitation. Non disponible si la publicité ne répond pas au mécanisme d'incitation.

setIncentivizedCancelDialogTitle

"Fermer la vidéo ?"

Définit le titre de la boîte de dialogue de confirmation lorsqu'une publicité qui répond au mécanisme d'incitation est ignorée. Non disponible si la publicité ne répond pas au mécanisme d'incitation.

setIncentivizedCancelDialogBodyText

"Le fait de fermer cette vidéo vous empêchera de recevoir votre récompense. Êtes-vous sûr(e) ?"

Définit le corps de la boîte de dialogue de confirmation lorsqu'une publicité qui répond au mécanisme d'incitation est ignorée. Non disponible si la publicité ne répond pas au mécanisme d'incitation.

setIncentivizedCancelDialogCloseButtonText

"Fermer la vidéo"

Définit le texte du « bouton d'annulation » lorsqu'une publicité qui répond au mécanisme d'incitation est ignorée. Non disponible si la publicité ne répond pas au mécanisme d'incitation.

setIncentivizedCancelDialogKeepWatchingButtonText

"Continuer à regarder"

Définit le texte du « bouton continuer à regarder » de la boîte de dialogue de confirmation lorsqu'une publicité qui répond au mécanisme d'incitation est ignorée. Non disponible si la publicité ne répond pas au mécanisme d'incitation.

setTransitionAnimationEnabled

false

Active ou désactive l'animation de transition de fragment standard

 

Vous avez d’autres questions ? Envoyer une demande

Commentaires