VAMP Android SDK Manual - AdGeneration/VAMP-Android-SDK GitHub Wiki

Android SDK 動画リワード広告(VAMP)

はじめに

開発環境としてAndroid Studioを利用し、インストール後の各種設定は準備されていることを前提とした手順となります。

対応バージョン

Android 4.4以降

動作確認環境

ver.
AndroidStudio 3.4.2

1. AdGeneration(VAMP) SDKのインストール

build.gradle(project-level)に以下を追記します。

allprojects {
    repositories {
        ・・・(省略)・・・
        maven {
            url 'https://AdGeneration.github.io/VAMP-Android-SDK/repository'
        }
    }
}

build.gradle(app-level)に以下を追記します。

dependencies {
    ・・・(省略)・・・
   implementation 'jp.supership.vamp:vamp-sdk:[Version]'
   implementation 'com.google.android.gms:play-services-base:[Version]'
   implementation 'com.google.android.gms:play-services-ads-identifier:[Version]'
   implementation 'androidx.legacy:legacy-support-v4:[Version]'
}

revised on 2019-2-22 v3.1.2

2. 接続先アドネットワークSDKのインストール

接続先アドネットワークSDKについては、下記ページよりダウンロード可能です。
https://github.com/AdGeneration/VAMP-Android-SDK/releases

以下の手順でAndroid Studioに追加してください。

※ 各ライブラリのバージョンについてはサンプルを参考にしてください。

AdMob

build.gradle(project-level)に以下を追記します。

allprojects {
    repositories {
        ・・・(省略)・・・
        maven {
            url "https://maven.google.com"
        }
    }
}

build.gradle(app-level)に以下を追記します。

dependencies {
    ・・・(省略)・・・
    implementation 'com.google.android.gms:play-services-base:[Version]'
    implementation 'com.google.android.gms:play-services-ads:[Version]'
AdMobAdapter

AdMobの新APIを使用するためのAdapterです。
AdMobAdapterを使用しない場合は旧APIを使用します。

build.gradle(project-level)に以下を追記します。

allprojects {
    repositories {
        ・・・(省略)・・・
        maven {
            url 'https://AdGeneration.github.io/VAMP-Android-SDK/repository'
        }
    }
}

build.gradle(app-level)に以下を追記します。

dependencies {
    ・・・(省略)・・・
    implementation 'jp.supership.vamp:vamp-admob-adapter:1.0.0'
}

revised on 2019-11-29 v3.1.6

AppLovin

build.gradle(app-level)に以下を追記します。

dependencies {
    ・・・(省略)・・・
    implementation 'com.applovin:applovin-sdk:[Version]'
}

FAN

build.gradle(app-level)に以下を追記します。

dependencies {
    ・・・(省略)・・・
    implementation 'com.facebook.android:audience-network-sdk:[Version]’
    implementation 'androidx.annotation:annotation:[Version]'
}

revised on 2019-08-22 v3.1.5

maio

build.gradle(project-level)に以下のmaven URLを追記します。

allprojects {
    repositories {
        ・・・(省略)・・・
        maven {
            url "https://imobile-maio.github.io/maven"
        }
    }
}

build.gradle(app-level)に以下を追記します。

dependencies {
    ・・・(省略)・・・
    implementation 'com.maio:android-sdk:[Version]@aar'
}

nend

build.gradle(project-level)に以下のmaven URLを追記します。

allprojects {
    repositories {
        ・・・(省略)・・・
        maven {
            url "http://fan-adn.github.io/nendSDK-Android-lib/library"
        }
    }
}

build.gradle(app-level)に以下を追記します。

dependencies {
    ・・・(省略)・・・
    implementation 'net.nend.android:nend-sdk:[Version]'

    implementation ('com.google.android.gms:play-services-ads-identifier:[Version]') {
        exclude module: 'support-v4'
    }
    implementation 'androidx.legacy:legacy-support-v4:[Version]' //androidx.appcompatが定義済みの場合は不要
    implementation 'com.android.support.constraint:constraint-layout:[Version]'
    implementation 'androidx.constraintlayout:constraintlayout:[Version]'

    // 広告配信に位置情報を使う場合以下を追加
    implementation 'com.google.android.gms:play-services-location:[Version]'
}

revised on 2019-08-22 v3.1.5

Tapjoy

build.gradle(project-level)に以下のmaven URLを追記します。

allprojects {
    repositories {
    ・・・(省略)・・・
        maven {
            name "Tapjoy's maven repo"
            url "https://tapjoy.bintray.com/maven"
        }
    }
}

build.gradle(app-level)に以下を追記します。

dependencies {
    ・・・(省略)・・・
    implementation 'com.tapjoy:tapjoy-android-sdk:[Version]@aar'
}

UnityAds

build.gradle(app-level)に以下を追記します。

dependencies {
    ・・・(省略)・・・
    implementation 'com.unity3d.ads:unity-ads:[Version]'
}
UnityAdsAdapter

build.gradle(project-level)に以下を追記します。

allprojects {
    repositories {
        ・・・(省略)・・・
        maven {
            url 'https://AdGeneration.github.io/VAMP-Android-SDK/repository'
        }
    }
}

build.gradle(app-level)に以下を追記します。

dependencies {
    ・・・(省略)・・・
    implementation 'jp.supership.vamp:vamp-unityads-adapter:1.0.0'
}

revised on 2019-08-23 v3.1.5

LINEAds

FiveAd-[VERSION].jarをapp/libs以下に追加します。

3. AndroidManifest.xmlの設定

AndroidManifest.xmlに、以下のようにActivityとpermissionの設定を追加します。

AdGeneration(VAMP)

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />

revised on 2017-11-09 v2.0

接続先アドネットワーク

AdMob

<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="[ADMOB_APP_ID]"/>

[ADMOB_APP_ID]にAdMobのAppIDを指定してください。
この<meta-data>タグはAdMob 17.0.0から必須です。
この設定に失敗した場合は以下のメッセージがログに表示され、アプリはクラッシュします。
"The Google Mobile Ads SDK was initialized incorrectly."

revised on 2018-11-07 v3.0.6

AppLovin

以下を追記してください。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

FAN

新たに追加するpermissionはありません。

maio

新たに追加するpermissionはありません。

nend

デバッグモードを利用する時

<meta-data
    android:name="NendDebuggable"
    android:value="true" />

Tapjoy

新たに追加するpermissionはありません。

UnityAds

新たに追加するpermissionはありません。

4. VAMPクラスの実装

実装例

import jp.supership.vamp.AdvancedListener;
import jp.supership.vamp.VAMP;
import jp.supership.vamp.VAMPError;
import jp.supership.vamp.VAMPListener;

public class MainActivity extends AppCompatActivity {
    private static final String VAMP_AD_ID = "*****";
    private static final String TAG = "Sample";
    private VAMP vamp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        vamp = VAMP.getVampInstance(this, VAMP_AD_ID);
        vamp.setVAMPListener(new AdListener());      // VAMPListenerをセット
        vamp.setAdvancedListener(new AdvListener()); // AdvancedListenerをセット

        VAMP.setTestMode(true);  // テストモードを有効にする
        VAMP.setDebugMode(true); // デバッグモードを有効にする

        // 広告取得
        vamp.load();
    }


    private class AdListener implements VAMPListener {
        @Override
        public void onReceive(VAMPAd ad) {
            // 広告表示の準備完了
            Log.d(TAG, "onReceive(" + ad.getAdnwName() + ")");
            // 広告表示
            vamp.show();
        }

        @Override
        public void onFailedToLoad(VAMPError error, VAMPAd ad) {
            // 広告準備に失敗
            Log.e(TAG, "onFailedToLoad() " + error);
        }

        @Override
        public onFailedToShow(VAMPError error, VAMPAd ad) {
            // 動画の表示に失敗
            Log.e(TAG, "onFailedToShow() " + error);
        }

        @Override
        public void onOpen(VAMPAd ad) {
            // 広告表示開始
            Log.d(TAG, "onOpen(" + ad.getAdnwName() + ")");
        }

        @Override
        public onComplete(VAMPAd ad) {
            // 動画再生正常終了(インセンティブ付与可能)
            Log.d(TAG, "onComplete(" + ad.getAdnwName() + ")");
        }

        @Override
        public onClose(VAMPAd ad, boolean adClicked) {
            // 動画プレーヤーやエンドカードが表示終了
            // <注意:ユーザキャンセルなども含むので、インセンティブ付与はonCompleteで判定すること>
            Log.d(TAG, "onClose(" + ad.getAdnwName() + ", Click:" + adClicked + ")");
        }

        @Override
        public void onExpired(String placementId) {
            // 有効期限オーバー
            // <注意:onReceiveを受けてからの有効期限が切れました。showするには再度loadを行う必要が有ります>
            Log.d(TAG, "onExpired()");
        }
    }

    private class AdvListener implements AdvancedListener {
        @Override
        public void onLoadStart(VAMPAd ad) {
            // 優先順位順にアドネットワークごとの広告取得を開始
            Log.d(TAG, "onLoadStart(" + ad.getAdnwName() + ")");
        }

        @Override
        public vvoid onLoadResult(VAMPAd ad, boolean success, String message) {
            // アドネットワークごとの広告取得結果
            Log.d(TAG, "onLoadResult(" + ad.getAdnwName() + ") " + message);
        }
    }
}

5. Google Play Serivicesの設定

Google Advertising IDを利用することにより収益の向上が見込まれます。
Google Advertising IDを利用するにはAndroidStudio上でのGoogle Play Servicesの導入が必須となります。

導入方法は下記リンク先をご参照ください。
Google Play Serivicesの設定

6. proguardの設定

SDKを導入したアプリを難読化する際は以下の設定値をproguardの設定ファイルに追加してください。
難読化後の表示確認も必ず行ってください。

AdGeneration(VAMP)

-keep class jp.supership.vamp.** { *; }

Adapter

VAMPUnityAdsAdapter

-keep class jp.supership.vamp.unityadsadapter.** { *; }

連携先アドネットワーク

AdMob

-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**

revised on 2018-01-17 v2.0.3

AdMobAdapter

-keepclasseswithmembers class jp.supership.vamp.** { *; }
-keep class jp.supership.vamp.admobadapter.** { *; }

または

-keep class jp.supership.vamp.** { *; }

AppLovin

-keep class com.applovin.** { *; }

FAN

-keep class com.facebook.ads.** { *; }

maio

-keep class jp.maio.sdk.android.** { *; }

nend

-keep class net.nend.android.** { *; }
-dontwarn net.nend.android.**

Tapjoy

-keep class com.tapjoy.** { *; }
-keep class com.moat.** { *; }
-keepattributes JavascriptInterface
-keepattributes *Annotation*
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep class com.google.android.gms.ads.identifier.** { *; }
-dontwarn com.tapjoy.**

UnityAds

-keep class com.unity3d.ads.android.** { *; }
UnityAdsAdapter
-keepclasseswithmembers class jp.supership.vamp.** { *; }
-keep class jp.supership.vamp.unityadsadapter.** { *; }

または

-keep class jp.supership.vamp.** { *; }

LINEAds

-keep class com.five_corp.ad.** { *; }

7. テストモード

テストモードをONにすることで、テスト広告による表示確認が可能です。
RTB案件は配信されません。
(リリースするときは必ず削除するか、コメントアウトしてください)

VAMP.setTestMode(true);

8. デバッグモード

デバッグモードをONにすることで、Logcatでデバッグレベルのログを確認することが可能になります。
同時に、アドネットワーク各社のSDKデバッグモードも連携してONにすることができます。
(リリースするときは必ず削除するか、コメントアウトしてください)

VAMP.setDebugMode(true);

9. 注意事項

  • 通信状況や動画広告によってはロードに時間がかかる場合があります。特に各アドネットワークの初回のロードは時間がかかる傾向にありますのでご注意ください。

  • FANは、127.0.0.1 (localhost)をキャッシュプロキシとして使用してメディアファイルをキャッシュします。
    Android P以降平文トラフィックはデフォルトでブロックされるようになります。
    これを回避するには127.0.0.1への平文トラフィックをホワイトリストに登録する必要があります。
    以下の手順でホワイトリストに登録することできます。

    res/xml/network_security_config.xmlファイルに以下を追加します。

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
    	<domain-config cleartextTrafficPermitted="true">
    		<domain includeSubdomains="true">127.0.0.1</domain>
    	</domain-config>
    </network-security-config>

    AndroidManifest.xmlで、次のようにアプリケーション属性に設定を追加します。

    <?xml version="1.0" encoding="utf-8"?>
    <manifest ... >
    	<application android:networkSecurityConfig="@xml/network_security_config"
          ...>
      		...
    	</application>
    </manifest>

    詳しくはこちらを参照してください。

  • targetSdkVersionを30にして実行する場合は下記をAndroidManifestに追記する必要があります。

<queries>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="https" />
    </intent>
</queries>

10. FAQ

その他不明点や各アドネットワークの最新の対応OSバージョンは下記からご確認ください。
https://ad-generation.jp/support/adg-help/ad-type/rewarded-video-ad

⚠️ **GitHub.com Fallback** ⚠️