Erste Schritte mit Vungle – Android oder Amazon SDK v. 5

Dieser Artikel hilft Ihnen bei der Integration von Vungle SDK für Android oder Amazon. Ab v.5.3.2 Ihres Android SDK unterstützt Vungle Amazon OS 5.4 und höher als Plattform. Die Schritte zur Integration von Amazon SDK sind dieselben wie bei Android.

Inhalt

Anforderungen

  • Android 4.0 (Ice Cream Sandwich – API-Version 14) oder höher
  • 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.3.2'
compile 'com.google.android.gms:play-services-basement:11.0.4' //This library is optional, but if used, use version 11.0.1 and up only compile 'com.google.android.gms:play-services-location:11.0.4' //This library is optional, but if used, use version 11.0.1 and up only
… }

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

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

Laden Sie das Vungle SDK herunter, entzippen Sie es, gehen Sie zum LIBS-Ordner, kopieren Sie alle Jar-Dateien und fügen Sie sie zu Ihrer Projektbibliothek hinzu.

Screen_Shot_2017-10-05_at_2.51.15_PM.png

Öffnen Sie die project-level 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 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.2.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.0.4' //use version 11.0.1 and up only compile 'com.google.android.gms:play-services-location:11.0.4' //use version 11.0.1 and up only … } 

Falls Sie das Vungle SDK manuell integrieren, können Sie mit "Schritt 2. AndroidManifest.xml aktualisieren" 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:

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

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 in bereitgestellt VungleInitListener init.

Hinweis: Wenn Sie die Methode init mit einer falsche App-ID aufrufen, wird das Vungle SDK nicht initialisiert und es wird kein onFailure-Callback ausgegeben. Wenn Sie die Methode init mit einer falschen Platzierungs-ID aufrufen, wird das Vungle SDK zwar initialisiert, die Platzierung kann jedoch keine Werbung laden und gibt für isAdPlayable immer „false“ zurück. Auch bei einer falschen Platzierungs-ID wird kein onFailure-Callback ausgegeben.

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

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 onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) Callback, sobald eine Werbung bereit zum Abspielen ist.

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

Beachten Sie, dass Sie für eine automatisch gecachte Platzierung loadAd nicht aufrufen 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 festzulegen, 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.

Erweiterte Einstellungen

Google Play Services (optional)

Wenn Sie Google Play-Dienste in Ihr Projekt integrieren, 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 über eine hinreichend aktuelle Version von Google Play Services verfügt. 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

Durch das Hinzufügen des Vungle Android SDK 5.1.0 werden in Ihrem Projekt 6.557 Methoden übernommen, wobei andere Abhängigkeiten davon ausgenommen sind. Wir planen eine Reduzierung der Methodenanzahl. Dies ist die aktuelle Einschränkung. Beachten Sie die folgenden Vorschläge, um Gesamtzahl der in Ihrem Projekt eingefügten Methoden zu reduzieren.

  • Selektive Gradle-Kompilierung: Das Google Play Services (GPS) SDK enthält 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 ProGuard aktivieren, um Ihren Projektcode kompakter zu gestalten. Dabei werden alle während der Kompilierung nicht genutzten Klassen entfernt, um die Gesamtanzahl der Methoden möglichst gering zu halten. Sie erreichen dies durch Angabe von minifyEnabled true in build.gradle des entsprechenden Build-Typs und indem Sie die Regeln zur Verfügung stellen, um die Klassen, die in Ihrem Projekt erforderlich sind, beizubehalten.

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

Proguard

Falls Sie Proguard verwenden, fügen Sie die folgenden Zeilen in Ihre ProGuard-Konfigurationsdatei ein:

# 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

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

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 Programmcodes im UI-Thread sind:

Konfigurationsoptionen

Globale Werbungskonfiguration

Nach dem Aufruf von init 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() { // 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) { } }); } } 

Individuelle Werbungskonfiguration

Sie müssen ein AdConfig Objekt bei jedem Aufruf von playAd verwenden. Sie haben jedoch die Option, einzelne abzuspielende Werbungen anpassen, indem Sie ein neues AdConfig-Objekt für playAd bereitstellen. Falls Sie Optionen in der globalen Werbungskonfiguration festgelegt haben, werden diese allgemeinen Optionen durch die in AdConfig bereitgestellten Optionen überschrieben. Übergeben Sie wie folgt eine AdConfig:

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

Das AdConfig-Objekt

Die Überschreibung AdConfig bietet eine Reihe von Optionen, die für eine individuelle Werbungswiedergabe festgelegt werden können.

Hinweis: Belohnte Anzeigen (rewarded ads) werden im Englischen auch manchmal als incentivized bezeichnet; beide Begriffe stehen für dieselbe Art von Werbeanzeige. Im SDK-Code und in unserer Reporting-API verwenden wir den Begriff „incentivized”.

Die verfügbaren Optionen sind nachfolgend aufgeführt:

Methode

Standard

Beschreibung

setOrientation

Orientation.matchVideo

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

Orientation.matchVideo bedeutet, dass die Werbung in der optimalen Ausrichtung (normalerweise Querformat) 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 über die Schaltfläche „Zurück” verlassen. Bei "false" kann der Nutzer die Werbung erst dann über die 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 eindeutige Nutzer-ID wird Ihrer Anwendung übergeben, um zu überprüfen, dass dieser Nutzer für das Betrachten des Werbevideos mit Belohnungsanreiz belohnt werden soll. Nicht verfügbar bei Werbung ohne Belohnungsanreiz.

 

setIncentivizedCancelDialogTitle

"Video schließen?"

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

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 Belohnungsanreiz angezeigt wird. Nicht verfügbar bei Werbung ohne Belohnungsanreiz.

setIncentivizedCancelDialogCloseButtonText

"Video schließen"

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

setIncentivizedCancelDialogKeepWatchingButtonText

"Weiter ansehen"

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

setTransitionAnimationEnabled

false

Aktiviert oder deaktiviert voreingestellte Fragmentüberganganimation

setOrdinalViewCount(int)

null

Wenn Sie Ordinaldaten-Berichte von Vungle bekommen, verwenden Sie dieses Feld zur Übergabe der Mediations-Ordinalen. Dies ist eine Ganzzahl, die die Reihenfolge angibt, in der diese Werbeanzeige in der Spielesitzung gezeigt wurde (wenn beispielsweise in einer Sitzung bereits zwei Werbungen gezeigt wurden und dann jene von Vungle als dritte folgt, ist der Wert „3“. Mehr zu Ordinaldaten erfahren Sie hier.

getOrdinalViewCount

keine

Rufen Sie damit den Wert ab, den Sie in setOrdinalViewCount übergeben haben.

setFlexViewCloseTimeInSec

keine

Dies ist die Dauer in Sekunden für das Abspielen von Flex View-Videos, bevor sie automatisch geschlossen werden.

Flex Feed-Werbung

Verwenden Sie zum programmgesteuerten Schließen einer Flex View-Werbung das Objekt vunglePub:

vunglePub.closeFlexViewAd(placementID2);

Weitere Hinweise

Android Studios hat ein bekanntes Problem, das zu einem Absturz führen kann. Wenn Sie die aktuelle Version von Android Studios Instant Run besitzen, deaktivieren Sie Android Studios Instant Run, um diese Abstürze zu vermeiden.

1-20 13:53:03.649 27642-27828/com.publisher.sample W/GooglePlayServicesUtil: Google Play services out of date. Requires 10240000 but found 9879438 
11-20 13:53:03.659 27642-27828/com.publisher.sample W/VungleDevice: Google Play Services not available: SERVICE_VERSION_UPDATE_REQUIRED
11-20 13:53:05.679 27642-27642/com.publisher.sample D/Event: No subscribers registered for event class com.vungle.publisher.lu
11-20 13:53:05.679 27642-27642/com.publisher.sample D/Event: No subscribers registered for event class de.greenrobot.event.NoSubscriberEvent
Haben Sie Fragen? Anfrage einreichen

Kommentare