Démarrer avec Vungle - Android SDK version 5

Utilisez cet article afin d'intégrer le SDK Vungle pour Android ou Amazon. À partir de la version 5.3.0 de notre SDK Android, Vungle prend en charge Amazon OS 5.4 et version supérieure en tant que plateforme. Les étapes d'intégration du SDK Amazon sont les mêmes que pour Android.

Contenu

Configuration nécessaire

  • Android 4.0 (Ice Cream Sandwich - API version 14) ou version supérieure
  • 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.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 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, décompressez-le, accédez au dossier de bibliothèque, copiez tous les fichiers JAR et ajoutez-le à votre bibliothèque de projets.

Screen_Shot_2017-10-05_at_2.51.15_PM.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 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 vous incluez manuellement le SDK Vungle, 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 :

<!-- 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"/>
>

É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 {

  // 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){ }
        });
    }
}

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 regarder la publicité lorsqu'elle est prête. Si vous définissez le VungleAdEventListener, ce dernier signalera via la fonction de rappel onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) que la publicité sera prête à être lue.

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

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.

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 minifyEnabled true dans 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 <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

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

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 AdConfig global. 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() {
        // 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) { }
    });
  } 
}

Configuration de publicité individuelle

Vous devez utiliser un objet AdConfig chaque fois que vous appelez 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 globales seront remplacées par les options fournies dans AdConfig. Transmettez un remplacement AdConfig comme suit :

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

L'objet AdConfig

Le remplacement AdConfig possède une collection d'options pouvant être définies pour la lecture d'une publicité individuelle.

Remarque : Les publicités récompensées sont parfois nommées publicités répondant au mécanisme d'incitation ; les deux termes font toujours référence au même type de publicité. Dans le code SDK et dans notre API de création, nous utilisons le terme « répondant au mécanisme d'incitation ».

Les options disponibles sont répertoriées 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