Loslegen mit Vungle – Android SDK v. 5

Inhalt

Anforderungen

  • Android 3.0 (Honeycomb - API Version 11) oder neuer
  • Java 1.7 – Für die Kompatibilität mit Android 5.+ ist JDK 7 erforderlich
  • Java 1.8 – Für die Kompatibilität mit Android 7.+ ist JDK 8 erforderlich

Schritt 1. Das Vungle SDK in Ihr Projekt integrieren

Das Vungle SDK ist über zwei Methoden erhältlich: Als AAR über Maven oder als manueller Download.

Option 1. Das Vungle SDK als ein AAR über Maven hinzufügen

Öffnen Sie die Projekt-Ebene build.gradle und fügen Sie eine Maven-URL im Bereich alle Projekte hinzu.

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

Öffnen Sie die app-level build.gradle Datei für Ihre App und fügen Sie Abhängigkeiten für die Kompilierung im Bereich Abhängigkeiten hinzu.

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

Falls Sie das Vungle SDK über Maven integrieren, können Sie "Schritt 2. Aktualisieren AndroidManifest.xml" überspringen.

Option 2. Das Vungle SDK herunterladen und es in Ihre App integrieren

Laden Sie das Vungle SDK herunter und fügen Sie es zu Ihrer Projektbibliothek hinzu.

image2.png

Öffnen Sie die Projekt-Ebene build.gradle und aktualisieren Sie den Repositories-Bereich.

allprojects {
    repositories {
        jcenter()
    }
}

Öffnen Sie die Anwendungsebene build.gradle Datei für Ihre App und fügen Sie weitere Abhängigkeiten im Bereich Abhängigkeiten hinzu.

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')
    … 
}

Falls Sie das Vungle SDK manuell integrieren, können Sie zu "Schritt 2. Aktualisieren AndroidManifest.xml" fortfahren.

Schritt 2. Aktualisieren AndroidManifest.xml

Fügen Sie die folgenden Zeilen zu Ihrem AndroidManifest.xml hinzu, wobei Sie den Eintragsnamen der Anwendung dem Klassennamen der Anwendung für Multidex zuweisen:

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

Schritt 3. Initialisieren Sie das Vungle SDK

Hinweis: Eine Standard-Platzierung wird automatisch für jede App erstellt. Sie müssen die Referenz-ID dieser Platzierung in diesem Initialisierungsschritt bereitstellen, auch wenn Sie nicht von der Platzierungs-Funktion Gebrauch machen möchten. Bei der Erstellung mehrerer Platzierungen müssen Sie alle Referenz-IDs angeben.

Anwendungsstart

Initialisieren Sie das Vungle Publisher SDK in der ersten Aktivität Ihrer Anwendung mit den aktiven Referenz-IDs der Platzierungen, die Sie in der App verwenden möchten. Das SDK wird asynchron initialisiert und sendet einen Callback an das VungleInitListener bereitgestellte in init.

public class FirstActivity extends android.app.Activity {

  // VunglePub-Instanz abrufen
  final VunglePub vunglePub = VunglePub.getInstance();

  // Nach dem Einrichten der App die App-ID von der Hauptseite der App auf dem Vungle Dashboard abrufen
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

       // Publisher SDK mit App-ID, Liste der Referenz-IDs der Platzierungen und init Callback Handler initialisieren
  	vunglePub.init(this, app_id, new String[] { placementID1, placementID2, placementID3 }, new VungleInitListener() {

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

            }
        });

Jede Aktivität

Zusätzlich müssen Sie die onPause- und onResume-Methode für jede Aktivität (einschließlich der ersten) überschreiben, damit das Vungle Android SDK korrekt aktualisiert wird, wenn Ihre Anwendung den Fokus erhält oder verliert.

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

Schritt 4. Die Listener einstellen

Das Vungle SDK löst mehrere Events aus, die Sie programmgesteuert verarbeiten können, indem Sie VungleAdEventListener-Klassen implementieren und diese mit Hilfe von clearAndSetEventListeners registrieren. Denken Sie daran, den eventListener zu entfernen, wenn Sie ihn nicht mehr benötigen, um Speicherlecks zu vermeiden.

vunglePub.clearAndSetEventListeners(vungleDefaultListener, vungleSecondListener);

Schritt 5. Laden und Abspielen einer Werbung

Sobald das Vungle SDK erfolgreich initialisiert wurde, können Sie Ihre Platzierung laden und die Werbung abspielen, sobald diese fertig ist. Wenn Sie einen VungleAdEventListener einstellen, benachrichtigt es über den Callback "onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable)", sobald eine Werbung bereit zum Abspielen ist.

public class GameActivity extends android.app.Activity {

  // VunglePub-Instanz abrufen
  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); } } }

Beachten Sie, dass Sie für eine automatisch gecachte Platzierung loadAd nicht rufen müssen, da das SDK nach der Initialisierung automatisch eine Werbung lädt. Wir empfehlen die am häufigsten angesehene Platzierung als Ihre automatisch gecachte Auswahl.

Um zu definieren, ob ein Nutzer die Möglichkeit hat, eine Werbung zu schließen, verwenden Sie die Optionen zum Erzwingen der Wiedergabe in den erweiterten Einstellungen Ihrer App im Vungle Dashboard.

Hinweis: Der Test-Modus wird im SDK noch nicht unterstützt v.5.1.

Erweiterte Einstellungen

Google Play Services (optional)

Wenn Sie Google Play-Dienste in Ihr Projekt einschließen, kann Vungle besser auf die Endbenutzer zugeschnittene Werbung bereitstellen. Dies ist aber nicht notwendig. Wir empfehlen Version 8.4.0 oder neuer.

Zur Integration der Google Play Services empfehlen wir Google's Setup Guide. Stellen Sie in Ihrer App sicher, dass das Gerät eine ausreichend aktuelle Version von Google Play Services hat. Das Vungle SDK verwendet optional die APIs Location und Ads von Google Play Services.

  • google.android.gms:play-services-location:11.0.1
  • google.android.gms:play-services-ads:11.0.1
  • Bei play-services 7.8.0 und älter: Die Support-Bibliothek beibehalten
  • Bei play-services 8.4.0 und neuer: Die Support-Bibliothek ist nicht erforderlich.

Wir haben unser eigenständiges SDK zur Kompilierung mit den folgenden Versionen von Google Play Services erfolgreich kompiliert: 7.8.0, 8.4.0, 9.8.0, 10.2.4, 11.0.1.

65K Dalvik Methoden-Grenze

Das Hinzufügen des Vungle Android SDK 5.1.0 fügt Ihrem Projekt 6.557 Methoden hinzu, ausschließlich erforderlicher Abhängigkeiten. Wir planen eine Reduzierung der Methodenanzahl. Dies ist die aktuelle Begrenzung. Beachten Sie die folgenden Vorschläge zur Reduzierung der Gesamtzahl zu Ihrem Projekt hinzugefügter Methoden.

  • Selektive Gradle-Kompilierung: Das Google Play Services (GPS) SDK hat ca. 20.000 Methoden. Wenn Ihr Projekt GPS verwendet, gibt ist die Möglichkeit zur selektiven Kompilierung des GPS SDK, das für Ihr Projekt benötigt wird.
    • com.google.android.gms:play-services-location:11.0.1
    • com.google.android.gms:play-services-ads:11.0.1

  • ProGuard: Sie können zur Verkleinerung Ihres Projekt-Codes ProGuard aktivieren. Dies verwirft während der Kompilierung nicht genutzte Klassen, um die Gesamtzahl an Methoden so gering wie möglich zu halten. Sie können es aktivieren, indem Sie midifyEnabled true in build.gradle angeben. Dies muss für die richtigen Build-Typen und unter Angabe der Regeln zum Erhalt der für Ihr Projekt erforderlichen Klassen durchgeführt werden.

  • Multidex: Falls Sie sich immer noch über einer Methodenanzahl von 65.000 befinden, könnte multiDex die einzige von Google bereitgestellte Methode sein. Sie müssen Ihr Projekt nur einmalig zum multiDex konfigurieren. Dies wird sich aber auf die Bau- und Startzeit der App auswirken.

Proguard

Falls Sie Proguard verwenden, fügen Sie die folgenden Zeilen zu Ihrer ProGuard-Konfigurationsdatei hinzu:

# 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

Die EventListener Schnittstelle

Die verfügbaren Methoden für VungleAdEventListener sind nachfolgend aufgeführt:

Methode

Beschreibung

clearAndSetEventListeners(VungleEventListener..)

Löscht registrierte EventListeners und fügt anschließend die Eingabe eventListeners hinzu.

clearEventListeners( )

Bereinigt alles EventListeners

removeEventListeners(VungleEventListener..)

Entfernt die Eingabe EventListeners.

addEventListeners(VungleEventListener..)

Fügt die Eingabe eventListeners hinzu

VungleAdEventListener Delegiert Call-API:

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

  private final VungleAdEventListener vungleListener = new VungleAdEventListener(){

    @Override
   public void onAdEnd(String placementReferenceId, boolean wasSuccessfulView, boolean wasCallToActionClicked) {
        // Wird aufgerufen, wenn der Nutzer die Werbung verlässt und die Steuerung zurück an Ihre Anwendung übergeben wird        
        // Wenn wasSuccessfulView "true" ist, hat der Nutzer die Werbung angesehen und sollte belohnt werden       
        // (wenn dies eine Werbung mit Anreiz war.
        // Wenn wasCallToActionClicked "true" ist, hat der Nutzer auf den Aktionsaufruf geklickt
        // Button in der Werbung.    
      }

    @Override
    public void onAdStart(String placemetReferenceId) {
        // Wird vor der Wiedergabe einer Werbung aufgerufen
    }

    @Override
    public void onUnableToPlayAd(String placementReferenceId, String reason) {
        // Wird gerufen, nachdem playAd(placementId, adConfig) die Werbung nicht wiedergeben konnte       
     }

    @Override
  public void onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) {
        // Benachrichtigt über die Verfügbarkeit von Werbung für die angegebene Platzierung
  // Doppelte Benachrichtigungen können vorhanden sein
    }
  };

  @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 bietet auch VunlgeInitListner zur Aktualisierung des Events der SDK-Initialisierung.

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

Hinweise zum UI-Thread

Die Callbacks werden in einem Hintergrund-Thread ausgeführt. Jede Interaktion oder Aktualisierung der Benutzeroberfläche, die sich aus einem Event-Callback ergibt, muss vor der Ausführung an den Haupt-Thread der UI übergeben werden. Die zwei gängigsten Methoden zum Ausführen Ihres Codes im UI-Thread sind:

Konfigurationsoptionen

Globale Werbungskonfiguration

Nach dem init-Aufruf müssen Sie das globale AdConfig-Objekt einrichten. Standardmäßig können Sie dieses AdConfig-Objekt in jedem "playAd"-Call verwenden. Mit diesem Objekt können Sie auch Optionen festlegen, die automatisch für jede wiedergegebene Werbung gelten.

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() {
				// Referenz auf globales AdConfig-Objekt abrufen 
				final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig(); 
				// Für eine vollständige Beschreibung der verfügbaren Optionen, siehe Bereich "Config Object" 
				globalAdConfig.setSoundEnabled(true);
			}
			@Override
			public void onFailure(Throwable e){

			}
		}); 
	...
	} 
}

Individuelle Werbungskonfiguration

Ein Adconfig-Objekt muss jedes Mal verwendet werden, wenn playAd gerufen wird.  Optional können Sie aber jede einzelne Werbung anpassen, indem Sie ein neues AdConfig-Objekt für playAd bereitstellen. Falls Sie Optionen in der globalen Werbungskonfiguration festgelegt haben, werden diese durch die hier bereitgestellten Optionen überschrieben. Übergeben Sie wie folgt eine AdConfig-Überschreibung:

public class GameActivity extends android.app.Activity {
  …
private void onLevelComplete() {
      // Neues AdConfig-Objekt erstellen
      final AdConfig overrideConfig = new AdConfig();

      overrideConfig.setSoundEnabled(false);

      // Das overrideConfig-Objekt wirkt sich nur auf diese Werbungswiedergabe aus.
      vunglePub.playAd(yourPlacementId, overrideConfig);
  }
}

Das AdConfig-Objekt

Die AdConfig-Überschreibung bietet eine Reihe von Optionen, die für eine individuelle Werbungswiedergabe festgelegt werden können. Die verfügbaren Optionen sind nachfolgend aufgeführt:

Methode

Standard

Beschreibung

setOrientation

Orientation.matchVideo

Orientation.autoRotate bedeutet, dass die Werbung automatisch entsprechend der Ausrichtung des Geräts rotiert wird.

Orientation.matchVideo bedeutet, dass die Werbung in der zum Video am besten passenden Ausrichtung (üblicherweise horizontal) abgespielt wird.

setSoundEnabled

true

Legt den anfänglichen Audiozustand für die Werbung fest. Bei "true" erfolgt die Audiowiedergabe mit der Lautstärke und den Audioeinstellungen, die auf dem Gerät eingestellt sind. Bei "false" ist das Video bei Beginn der Wiedergabe zunächst stummgeschaltet. Dies kann aber vom Nutzer geändert werden.

setBackButtonImmediatelyEnabled

false

Bei "true" kann der Nutzer eine Werbung unmittelbar mit der Schaltfläche „Zurück” verlassen. Bei "false" kann der Nutzer die Werbung erst dann mit der Schaltfläche "Zurück" verlassen, wenn die Schaltfläche "Schließen" auf dem Bildschirm angezeigt wird.

setImmersiveMode

false

Aktiviert oder deaktiviert immersiver Modus auf KitKat+Geräten

setIncentivizedUserId

keine

Die einmalige Nutzer-ID wird Ihrer Anwendung übergeben, um zu überprüfen, dass dieser Nutzer für das Sehen des Werbevideos mit Anreiz belohnt werden soll. Nicht verfügbar bei Werbung ohne Anreiz.

setIncentivizedCancelDialogTitle

"Video schließen?"

Legt den Titel des Bestätigungsdialogfelds fest, das beim Überspringen einer Werbung mit Anreiz angezeigt wird. Nicht verfügbar bei Werbung ohne Anreiz.

setIncentivizedCancelDialogBodyText

"Wenn Sie dieses Video vorzeitig schließen, erhalten Sie keine Prämie. Sind Sie sicher?"

Legt den Text des Bestätigungsdialogfelds fest, das beim Überspringen einer Werbung mit Anreiz angezeigt wird. Nicht verfügbar bei Werbung ohne Anreiz.

setIncentivizedCancelDialogCloseButtonText

"Video schließen"

Legt den Text des Buttons "Abbrechen" in dem Bestätigungsdialogfeld fest, das beim Überspringen einer Werbung mit Anreiz angezeigt wird. Nicht verfügbar bei Werbung ohne Anreiz.

setIncentivizedCancelDialogKeepWatchingButtonText

"Weiter ansehen"

Legt den Text des Buttons "Weiter ansehen" in dem Bestätigungsdialogfeld fest, das beim Überspringen einer Werbung mit Anreiz angezeigt wird. Nicht verfügbar bei Werbung ohne Anreiz.

setTransitionAnimationEnabled

false

Aktiviert oder deaktiviert Standard-Fragmentüberganganimation

 

Haben Sie Fragen? Anfrage einreichen

Kommentare