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

この記事では、Android または Amazon 用の Vungle SDK を統合する方法について説明します。v.5.3.2 以降の Android SDK では、バージョン 5.4 以降の Amazon OS がプラットフォームとしてサポートされます。Amazon SDK の統合手順は、Android の場合と同じです。

目次

要件

  • Android 4.0 (Ice Cream Sandwich - API version 14) またはそれ以降
  • 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' } } }

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

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

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

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

Vungle SDK をダウンロードして解凍し、libs フォルダーに移動して jar をすべてコピーし、プロジェクト ライブラリに追加します。

Screen_Shot_2017-10-05_at_2.51.15_PM.png

project-level build.gradle を開いて、repositories セクションを更新します。

allprojects { repositories { jcenter() } }

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

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

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

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

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

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

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

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

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

注意: 正しくないアプリケーション ID を指定して init メソッドを呼び出すと、Vungle SDK の初期化が実行されず、onFailure コールバックも起動しません。正しくない広告配置 ID を指定して init メソッドを呼び出すと、Vungle SDK の初期化は実行されますが、広告配置で広告を読み込むことはできないため、isAdPlayable で必ず false が返されることになります。繰り返しますが、正しくない広告配置 ID を指定した場合、onFailure コールバックは実行されません。

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

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

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

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

詳細設定

Google Play Services (オプション)

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

Google Play Services をプロジェクトに追加する場合は、Google のセットアップ ガイドを参照することをお勧めします。アプリケーションで、最新バージョンの Google Play Services がデバイスにインストールされていることを確認してください。Vungle SDK は、必要に応じて、Google Play Services の位置情報 API と広告 API を使用します。

  • 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 を有効にすると、プロジェクト コードのサイズを小さくすることができます。使用されていないクラスがコンパイル時に破棄されるため、メソッドの合計数を可能な限り減らすことができます。ProGuard を有効にするには、適切なビルド タイプの build.gradle ファイルで minifyEnabled true を指定し、プロジェクト内で必要なクラスを保存するためのルールを指定します。

  • Multidex: ProGuard を使用してもまだ 65,000 個を超えるメソッドが残っている場合は、Google が提供する multiDex を有効にする以外に方法はありません。multiDex 用にプロジェクトを設定する必要があるのは 1 回だけですが、multiDex を有効にすると、ビルドとアプリケーションの起動にかかる時間が長くなります。

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

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

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

単一の広告構成

playAd を呼び出すときには必ず AdConfig オブジェクトを使用しなければなりません。ただし、playAd に新しい AdConfig オブジェクトを渡すと、再生する個々の広告を任意でカスタマイズできます。グローバルな広告構成でオプションを設定している場合、それらのグローバル オプションは AdConfig で指定したオプションでオーバーライドされます。オーバーライド用の 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); } }

AdConfig オブジェクト

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

注意: 報酬対象の広告は、インセンティブ 広告として参照されることがあります。どちらの場合も、同等な広告のことを示しています。SDK のコードと Reporting API では、「インセンティブ」を使用します。

設定できるオプションの一覧を以下に示します。

メソッド

デフォルト

説明

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

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

setOrdinalViewCount(int)

null

Vungle から序数データ レポートを受け取った場合は、このオプションを使用して媒介序数を渡します。このオプションは、ゲーム セッション内でこの広告が表示された順序を示す整数です。たとえば、現在のセッション内で 2 つの広告がすでに表示されていて、Vungle の広告が 3 番目に表示された場合は、「3」を渡します。序数データの詳細については、こちらを参照してください。

getOrdinalViewCount

none

このメソッドを使用して、setOrdinalViewCount メソッド経由で渡した値を取得します。

setFlexViewCloseTimeInSec

none

秒数を指定します。この秒数が経過すると、Flex View 動画が自動的に終了します。

Flex View 広告

プログラム経由で Flex View 広告を終了するには、以下のように vunglePub 関数を指定します。

vunglePub.closeFlexViewAd(placementID2);

その他の注記

Android Studio には、以下に示すクラッシュを引き起こす可能性がある既知の問題が存在しています。最新の Android Studio を使用している場合は、Instant Run 機能を無効にして以下のクラッシュを回避してください。

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
他にご質問がございましたら、リクエストを送信してください

コメント