Vungle スタート ガイド - Android SDK v. 5

コンテンツ

要件

  • Android 3.0 (Honeycomb - API バージョン 11) 以降
  • Java 1.7 - Android 5.+ との互換性を保つため、JDK 7 が必要です
  • Java 1.8 - Android 7.+ との互換性を保つため、JDK 8 が必要です

手順 1. Vungle SDK をプロジェクトに含める

Vungle SDK を入手する方法には、Maven 経由の AAR として入手する方法と手動ダウンロードによって入手する方法の 2 通りがあります。

オプション 1. Vungle SDK を Maven 経由の AAR として含める

プロジェクト レベルの build.gradle を開いて、Maven の URL を all project セクションに追加します。

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

アプリケーション用のアプリケーション レベル build.gradle ファイルを開いて、コンパイルの依存関係を dependencies セクションに追加します。

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

Maven を使用して Vungle SDK を含める場合は、「手順 2. AndroidManifest.xml を更新する」をスキップしてかまいません。

オプション 2. Vungle SDK をダウンロードしてアプリケーションに含める

Vungle SDK をダウンロードして、プロジェクト ライブラリに追加します。

image2.png

プロジェクト レベルの build.gradle を開いて、repositories セクションを更新します。

allprojects {
    repositories {
        jcenter()
    }
}

アプリケーション用のアプリケーション レベル build.gradle ファイルを開いて、その他の依存関係を dependencies セクションに追加します。

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

Vungle SDK を手動で含める場合は、「手順 2. AndroidManifest.xml を更新する」に進みます。

手順 2. AndroidManifest.xml を更新する

以下の行を AndroidManifest.xml に追加し、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”/>
>

手順 3. Vungle SDK を初期化する

注意: デフォルトの広告配置はアプリケーションごとに自動的に作成されます。広告配置機能を利用するかどうかにかかわらず、広告配置の参照 ID をこの初期化手順で指定する必要があります。複数の広告配置を作成する場合は、すべての参照 ID を指定してください。

アプリケーションのスタート時

アプリケーション内で使用するアクティブな広告配置参照 ID を使用して、アプリケーションの最初のアクティビティで Vungle Publisher SDK を初期化します。SDK が非同期的に初期化され、init で指定されている VungleInitListener にコールバックを返します。

public class FirstActivity extends android.app.Activity {

  // VunglePub インスタンスを取得します
  final VunglePub vunglePub = VunglePub.getInstance();

  // アプリケーション ID は、アプリケーションのセットアップ後、Vungle ダッシュボードのアプリケーションのメイン ページから取得します
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

       // アプリケーション ID、広告配置参照 ID リスト、init コールバック ハンドラーで Publisher SDK を初期化します
  	vunglePub.init(this, app_id, new String[] { placementID1, placementID2, placementID3 }, new VungleInitListener() {

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

            }
        });

各 Activity

さらに、各 Activity (最初のものも含む) で onPause メソッドと onResume メソッドをオーバーライドして、アプリケーションがフォーカスを得たときや失ったときに Vungle Android SDK が正しく更新されるようにします。

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

手順 4. リスナーを設定する

Vungle SDK は、プログラムで処理できるいくつかのイベントを発生させます。これらのイベントを処理するには、VungleAdEventListener のクラスを実装し、clearAndSetEventListeners を使用して登録します。メモリ リークを防ぐために、使用しなくなった eventListener は忘れずに削除してください。

vunglePub.clearAndSetEventListeners(vungleDefaultListener, vungleSecondListener);

手順 5. 広告を読み込んで再生する

Vungle SDK が正常に初期化されたら、広告配置を読み込み、広告の準備ができたときにそれを再生することができます。VungleAdEventListener を設定した場合は、広告が再生できるようになったときに onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) コールバック経由で通知が表示されます。

public class GameActivity extends android.app.Activity {

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

自動キャッシュされる広告配置の場合は、SDK によって初期化後に広告が自動的に読み込まれるため、loadAd を呼び出す必要がありません。閲覧回数の最も多い広告配置を自動キャッシュの対象として選択することをお勧めします。

広告を閉じるオプションをユーザーに表示するかどうかを定義するには、Vungle ダッシュボードにある強制表示オプションを使用します。

注意: テスト モードは SDK v.5.1. ではまだサポートされていません。

詳細設定

Google Play Services (オプション)

プロジェクトに Google Play Services を入れると、さらにカスタマイズされた広告体験を Vungle からエンド ユーザーに提供できるようになります。ただし、必須ではありません。バージョン 8.4.0 以上の使用を推奨します。

Google Play Services を入れる場合は、Google のセットアップ ガイドに従うことを推奨します。アプリケーションで、デバイスに最新バージョンの Google Play Services が入っていることを確認してください。Vungle SDK では、Google Play Services からの位置情報と広告がオプションで利用されます。

  • google.android.gms:play-services-location:11.0.1
  • google.android.gms:play-services-ads:11.0.1
  • play-services 7.8.0 以下の場合: サポート ライブラリを維持する
  • play-services 8.4.0 以上の場合: サポート ライブラリは不要

Google Play Services (バージョン 7.8.0,、8.4.0,、9.8.0,、10.2.4,、11.0.1.) を使用したコンパイルをサポートする、スタンドアロン SDK のコンパイルに成功しています。

65K Dalvik メソッド制限

Vungle Android SDK 5.1.0 をプロジェクトに追加すると、6,557 個のメソッドが追加され、それ以外の必要な依存関係は除外されます。プロジェクト パイプラインのメソッド数を減らす計画がありますが、現時点ではこの制限が適用されます。プロジェクトに追加されるメソッドの合計数を削減するよう、以下の推奨事項を検討してください。

  • 選択的な Gradle コンパイル: Google Play Services (GPS) SDK のメソッド数は約 20,000 個です。プロジェクトで GPS を使用している場合は、プロジェクトに必要な GPS SDK を選択的にコンパイルするオプションがあります。
    • com.google.android.gms:play-services-location:11.0.1
    • com.google.android.gms:play-services-ads:11.0.1

  • ProGuard: ProGuard を有効にして、プロジェクト コードを縮小できます。メソッドの合計数をできる限り少なくするため、未使用のクラスはすべてコンパイル時に破棄されます。この機能を有効にするには、適切なビルド タイプの build.gradlemidifyEnabled true を指定し、プロジェクトに必要なクラスを維持するためのルールを指定します。

  • Multidex: それでもメソッド数が 6 万 5,000 個より多い場合は、multiDex を有効にすることが Google から提供される唯一のソリューションとなる可能性があります。プロジェクトを multiDex 用に構成する作業は 1 回しか必要とならず、構成はビルド時とアプリケーション起動時に適用されます。

Proguard

Proguard を使用する場合は、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

EventListener インターフェイス

VungleAdEventListener の操作に使用できるメソッドの一覧を以下に示します。

メソッド

説明

clearAndSetEventListeners(VungleEventListener..)

登録されている EventListener をクリアした後、指定された eventListener を追加します。

clearEventListeners( )

すべての EventListeners をクリアします

removeEventListeners(VungleEventListener..)

指定された EventListener を削除します。

addEventListeners(VungleEventListener..)

入力 eventListeners を追加します

VungleAdEventListener デリゲート呼び出し API:

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

  private final VungleAdEventListener vungleListener = new VungleAdEventListener(){

    @Override
   public void onAdEnd(String placementReferenceId, boolean wasSuccessfulView, boolean wasCallToActionClicked) {
        // ユーザーが広告を終了し、アプリケーションに制御が戻ったときに呼び出されます
        // wasSuccessfulView が true の場合は、ユーザーが広告を視聴し、報酬を受け取る資格があることを示します
        // (報酬対象の広告の場合)。
        // wasCallToActionClicked が true の場合は、ユーザーが広告内のコールトゥ アクション ボタンを
        // クリックしたことを示します。
      }

    @Override
    public void onAdStart(String placemetReferenceId) {
        // 広告の再生前に呼び出されます
    }

    @Override
    public void onUnableToPlayAd(String placementReferenceId, String reason) {
        // playAd(placementId, adConfig) が広告を再生できなかった後で呼び出されます
     }

    @Override
  public void onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) {
        // 指定された広告配置の広告が使用可能かどうかを通知します
  // 通知の重複が生じる場合があります
    }
  };

  @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 では、SDK 初期化イベント更新用の VunlgeInitListner も提供しています。

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

UI スレッドに関する注意

コールバックはバックグラウンド スレッドで実行されるため、イベント コールバックから生じる UI 上の操作や更新は、実行前にメイン UI スレッドに渡す必要があります。UI スレッドでコードを実行する方法は、次の 2 つが一般的です。

構成オプション

グローバルな広告構成

init を呼び出した後で、グローバルの AdConfig オブジェクトの設定も行う必要があります。デフォルトで、この AdConfig オブジェクトは各 playAd 呼び出しで使用できます。このオブジェクトを使用すると、再生するすべての広告に自動的に適用されるオプションも設定できます。

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() {
				// グローバル AdConfig オブジェクトへの参照を取得します
				final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig();
				// 設定できるオプションの詳細な説明については、「オブジェクトの構成」セクションを参照してください。
				globalAdConfig.setSoundEnabled(true);
			}
			@Override
			public void onFailure(Throwable e){

			}
		});
	...
	}
}

単一の広告構成

playAd を呼び出すときは必ず Adconfig オブジェクトを使用する必要があります。 ただし、playAd に新しい AdConfig オブジェクトを渡すと、再生する個々の広告を任意でカスタマイズできます。グローバルな広告構成でオプションを設定している場合、それらのオプションはここで指定したオプションでオーバーライドされます。オーバーライド用の AdConfig を渡す方法を以下に示します。

public class GameActivity extends android.app.Activity {
  …
private void onLevelComplete() {
      // 新しい AdConfig オブジェクトを作成します
      final AdConfig overrideConfig = new AdConfig();

      overrideConfig.setSoundEnabled(false);

      // overrideConfig オブジェクトは、この広告の再生にのみ適用されます。
      vunglePub.playAd(yourPlacementId, overrideConfig);
  }
}

AdConfig オブジェクト

オーバーライドに使用する AdConfig には、個々の広告再生に設定できる一連のオプションが含まれています。設定できるオプションの一覧を以下に示します。

メソッド

デフォルト

説明

setOrientation

Orientation.matchVideo

Orientation.autoRotate は、広告がデバイスの向きに合わせて自動的に回転することを示します。

Orientation.matchVideo は、広告が動画にとって最善の向き (通常は横向き) で再生されることを示します。

setSoundEnabled

true

広告開始時のサウンドの状態を設定します。true の場合、音声はデバイスの音量とサウンド設定に従います。false の場合、動画はミュートされた状態で始まりますが、ユーザーはサウンドの状態を変更できます。

setBackButtonImmediatelyEnabled

false

true の場合、ユーザーは [戻る] ボタンを使用して広告をすぐに終了することができます。false の場合、画面に [閉じる] ボタンが表示されるまで、ユーザーは [戻る] ボタンを使用して広告を終了することができません。

setImmersiveMode

false

KitKat 以降のデバイスでイマーシブ モードを有効または無効にします。

setIncentivizedUserId

none

アプリケーションに渡す一意のユーザー ID を設定して、このユーザーがインセンティブ広告の視聴による報酬の対象となることを確認します。インセンティブ広告でない場合は適用されません。

setIncentivizedCancelDialogTitle

"Close video?"

インセンティブ広告をスキップするときに表示される確認メッセージのタイトルを設定します。インセンティブ広告でない場合は適用されません。

setIncentivizedCancelDialogBodyText

"Closing this video early will prevent you from earning your reward. Are you sure?"

インセンティブ広告をスキップするときに表示される確認メッセージの本文を設定します。インセンティブ広告でない場合は適用されません。

setIncentivizedCancelDialogCloseButtonText

"Close video"

インセンティブ広告をスキップするときに表示される確認メッセージの "キャンセル" ボタンのテキストを設定します。インセンティブ広告でない場合は適用されません。

setIncentivizedCancelDialogKeepWatchingButtonText

"Keep watching"

インセンティブ広告をスキップするときに表示される確認メッセージの "視聴を続行" ボタンのテキストを設定します。インセンティブ広告でない場合は適用されません。

setTransitionAnimationEnabled

false

フラグメント遷移時の標準のアニメーションを有効または無効にします。

 

他にご質問がございましたら、リクエストを送信してください

コメント