[go: up one dir, main page]

Skip to content
This repository has been archived by the owner on Apr 5, 2024. It is now read-only.

動画インタースティシャル広告実装手順

fan-mi-baba edited this page Oct 3, 2023 · 3 revisions

事前準備

まだ広告枠作成、SDKダウンロードを行っていない場合、下記リンク先を参照してください。

SDKの組み込み

プロジェクトにSDKを追加していない場合、以下の方法でSDKを追加してください。

動画インタースティシャル広告の実装手順

動画インタースティシャル広告の実装は以下の5ステップで完了します。

  1. 動画広告を生成
  2. 動画広告をロード
  3. 動画広告を表示
  4. 動画広告を破棄
  5. オプション機能を実装

動画広告を生成

まず、NendAdInterstitialVideoのインスタンスを生成します。

Kotlin
import net.nend.android.NendAdInterstitialVideo
...

class VideoActivity : AppCompatActivity() {

    private lateinit var nendAdInterstitialVideo: NendAdInterstitialVideo

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        nendAdInterstitialVideo = NendAdInterstitialVideo(this, spotId, "apikey")
    }
}
Java
import net.nend.android.NendAdInterstitialVideo;
...

public class MainActivity extends AppCompatActivity {

    private NendAdInterstitialVideo mNendAdInterstitialVideo;

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

        mNendAdInterstitialVideo = new NendAdInterstitialVideo(this, spotId, "apikey");
    }
}

インスタンス生成時に必要な情報

引数名 説明
context Context
spotId int 管理画面より発行されたSpotId
apiKey String 管理画面より発行されたApiKey

動画広告をロード

loadAdメソッドで広告をロードします。

Kotlin
nendAdInterstitialVideo.loadAd()
Java
mNendAdInterstitialVideo.loadAd();

type プロパティでロードされた広告タイプを取得することができます。

type 内容
NORMAL 通常の動画インタースティシャル広告
PLAYABLE ユーザーによる操作が可能な広告

動画広告を表示

isLoadedメソッドで広告のロードが完了していることを確認してから、showAdメソッドで広告を表示します。

Kotlin
if (nendAdInterstitialVideo.isLoaded) {
    nendAdInterstitialVideo.showAd(this)
}
Java
if (mNendAdInterstitialVideo.isLoaded()) {
    mNendAdInterstitialVideo.showAd(this);
}

動画広告を破棄

releaseAdメソッドで動画広告用の不要なリソースを破棄します。また、広告のロード中に呼ばれた場合はそのロードのキャンセルも行います。 動画広告を使用後に不要になったタイミングや動画広告を利用しているActivityonDestroyreleaseAdメソッドを呼び出すようにしてください。 また、releaseAdメソッドを呼び出した後に再度動画広告を使用する場合は、NendAdInterstitialVideoのインスタンスを生成し直してください。

Kotlin
nendAdInterstitialVideo.releaseAd()  // 広告を破棄
Java
mNendAdInterstitialVideo.releaseAd();  // 広告を破棄

オプション機能を実装

必要に応じて以下のオプション機能を実装してください。

イベントリスナーを登録

setActionListenerメソッドでNendAdVideoActionListenerのイベントリスナーを登録します。 NendAdVideoNendAdInterstitialVideoNendAdRewardedVideoの親クラスです。NendAdVideoActionListenerの各リスナーで渡される引数nendAdVideoNendAdInterstitialVideoのオブジェクトになります。

⚠️コールバックに関する注意⚠️
インタラクティブ広告( NendAdVideoType.PLAYABLE )では NendAdVideoPlayingStateListenerによる動画再生状態のイベント通知を受け取ることができません。

通常の動画インタースティシャル(NendAdVideoType.NORMAL)では動画再生時、動画停止時、動画視聴終了のタイミングで、各処理に関するコールバックを受け取ることができます。

しかしインタラクティブ広告(NendAdVideoType.PLAYABLE)は動画ではなくWebView上で動作するコンテンツのため、
動画再生時、動画停止時、動画視聴終了時という概念が存在せず、コールバックを受け取ることはできないため注意が必要です。

Kotlin
import net.nend.android.NendAdVideoActionListener
import net.nend.android.NendAdVideo
...

nendAdInterstitialVideo.setActionListener(object : NendAdVideoActionListener {
    override fun onLoaded(nendAdVideo: NendAdVideo) {
        // 広告のロードが完了した

        when (nendAdVideo.type) {
            NendAdVideoType.PLAYABLE -> Log.d(TAG, "インタラクティブ広告では動画の再生状態は通知されません")
            NendAdVideoType.NORMAL -> {
                nendAdInterstitialVideo.playingState()?.let {
                    it.playingStateListener = object : NendAdVideoPlayingStateListener {
                        override fun onStarted(nendAdVideo: NendAdVideo) {
                            // 動画の再生を開始した
                        }

                        override fun onStopped(nendAdVideo: NendAdVideo) {
                            // 動画の再生を停止した
                        }

                        override fun onCompleted(nendAdVideo: NendAdVideo) {
                            // 動画の再生が最後まで完了した
                        }
                    }
                }
            }
            else -> Log.d(TAG, nendAdVideo.type.toString())
        }
    }

    override fun onFailedToLoad(nendAdVideo: NendAdVideo, errorCode: Int) {
        // 広告のロードに失敗した
        Log.w(TAG, "errorCode: $errorCode")
    }

    override fun onFailedToPlay(nendAdVideo: NendAdVideo) {
        // 広告の再生に失敗した
    }

    override fun onShown(nendAdVideo: NendAdVideo) {
        // 広告を表示した
    }

    override fun onClosed(nendAdVideo: NendAdVideo) {
        // 広告を閉じた
    }

    override fun onAdClicked(nendAdVideo: NendAdVideo) {
        // 広告をクリックした
    }

    override fun onInformationClicked(nendAdVideo: NendAdVideo) {
        // インフォメーションボタンをクリックした
    }
})
Java
import net.nend.android.NendAdVideoActionListener;
import net.nend.android.NendAdVideo;
...

mNendAdInterstitialVideo.setActionListener(new NendAdVideoActionListener() {
    @Override
    public void onLoaded(NendAdVideo nendAdVideo) {
        // 広告のロードが完了した
        switch (mNendAdInterstitialVideo.getType()) {
            case PLAYABLE:
                Log.d(TAG, "インタラクティブ広告では動画の再生状態は通知されません");
                break;
            case NORMAL:
                NendAdVideoPlayingState state = mNendAdInterstitialVideo.playingState();
                if (state != null) {
                    state.setPlayingStateListener(new NendAdVideoPlayingStateListener() {
                        @Override
                        public void onStarted(NendAdVideo nendAdVideo) {
                            // 動画の再生を開始した
                        }

                        @Override
                        public void onStopped(NendAdVideo nendAdVideo) {
                            // 動画の再生を停止した
                        }

                        @Override
                        public void onCompleted(NendAdVideo nendAdVideo) {
                            // 動画の再生が最後まで完了した
                        }
                    });
                }
                break;
            default:
                break;
        }
    }

    @Override
    public void onFailedToLoad(NendAdVideo nendAdVideo, int errorCode) {
        // 広告のロードに失敗した
        Log.d(TAG, "errorCode:" + errorCode);
    }

    @Override
    public void onFailedToPlay(NendAdVideo nendAdVideo) {
        // 広告の再生に失敗した
    }

    @Override
    public void onShown(NendAdVideo nendAdVideo) {
        // 広告を表示した
    }

    @Override
    public void onClosed(NendAdVideo nendAdVideo) {
        // 広告を閉じた
    }

    @Override
    public void onAdClicked(NendAdVideo nendAdVideo) {
        // 広告をクリックした
    }

    @Override
    public void onInformationClicked(NendAdVideo nendAdVideo) {
        // インフォメーションボタンをクリックした
    }
});

エラー情報の取得

public void onFailedToLoad(NendAdVideo nendAdVideo, int errorCode)の引数errorCodeの情報は以下の通りです。

エラーコード 説明
204 配信広告なし
400 不正なリクエスト
5XX サーバーエラー
600 SDK内部のエラー
601 広告ダウンロード失敗
602 フルボード広告のフォールバック失敗
603 ネットワークが無効

ユーザーIDを設定

本機能はnendSDKv10.0.0以降非推奨になりました

アプリ内のユーザーIDを設定する場合は、 setUserId メソッドで利用したいユーザーIDを文字列で設定します。

Kotlin
nendAdInterstitialVideo.setUserId("ユーザーID")
Java
mNendAdInterstitialVideo.setUserId("ユーザーID");

ユーザー属性を設定

本機能はnendSDKv10.0.0以降非推奨になりました

v4.0.3のnendSDKより、動画広告のターゲティングにユーザー属性を利用できるようになりました。
利用可能なユーザー属性は以下の通りです。

  • 性別
  • 生年月日
  • 年齢
  • その他特徴(アプリ側で自由に設定可能)
Kotlin
import net.nend.android.NendAdUserFeature
...

// 単一の属性を利用する例
val feature = NendAdUserFeature.Builder()
        .setBirthday(1985,1,1)
        .build()
nendAdInterstitialVideo.setUserFeature(feature)

...

// 複数の属性を利用する例
val feature = NendAdUserFeature.Builder()
        .setGender(NendAdUserFeature.Gender.MALE) // 性別
        .setBirthday(1985, 1, 1) // 生年月日 (e.g. 1985年1月1日)
        .setAge(34) // 年齢
        .addCustomFeature("stringParameter", "test") // key-value形式のカスタムパラメーター
        .addCustomFeature("booleanParameter", true)
        .addCustomFeature("integerParameter", 100)
        .addCustomFeature("doubleParameter", 123.45)
        .build()
nendAdInterstitialVideo.setUserFeature(feature)
Java
import net.nend.android.NendAdUserFeature;
...

// 単一の属性を利用する例
NendAdUserFeature feature = new NendAdUserFeature.Builder()
        .setBirthday(1985, 1, 1) // 生年月日 (e.g. 1985年1月1日)
        .build();
mNendAdInterstitialVideo.setUserFeature(feature);

...

// 複数の属性を利用する例
NendAdUserFeature feature = new NendAdUserFeature.Builder()
        .setGender(NendAdUserFeature.Gender.MALE) // 性別
        .setBirthday(1985, 1, 1) // 生年月日 (e.g. 1985年1月1日)
        .setAge(34) // 年齢
        .addCustomFeature("stringParameter", "test") // key-value形式のカスタムパラメーター
        .addCustomFeature("booleanParameter", true)
        .addCustomFeature("integerParameter", 100)
        .addCustomFeature("doubleParameter", 123.45)
        .build();
mNendAdInterstitialVideo.setUserFeature(feature);

備考:

  • 生年月日と年齢の両方が設定されていた場合は、生年月日の方が優先されます
  • カスタムパラメーターで設定可能な値は、文字列 or 数値 or 真偽値のみになります
  • 年齢ではなく年代を設定したい場合は、カスタムパラメーターの方をご利用ください

再生開始時のミュート指定

setMuteStartPlayingメソッドでミュートの指定を行います。
デフォルトはtrueです(音声OFFで再生します)

Kotlin
nendAdInterstitialVideo.setMuteStartPlaying(false)
Java
mNendAdInterstitialVideo.setMuteStartPlaying(false);

フルボード広告を表示

在庫切れ等の事由により動画インタースティシャル広告が表示できない場合に、代わりに全画面のフルボード広告を表示するオプションです。 こちらの機能をご利用になる場合は、nend管理画面でフルボード広告の広告枠を別途ご用意いただく必要がございます。 詳細はこちらをご参照ください。

Kotlin
nendAdInterstitialVideo.addFallbackFullboard(full board spot id, "full board api key")
Java
mNendAdInterstitialVideo.addFallbackFullboard(full board spot id, "full board api key");

検証

動画広告のテストモードは、次の内どちらか一方をご利用ください。

GAIDの確認方法

  1. アプリのログ出力を有効化します。

  2. 動画インタースティシャル広告のインスタンスを生成して、adbログを確認します。「Google Advertising ID = 」で出力された値を確認してください。 gaid_console_log

  3. 出力された値を管理画面へ登録します。

日本語

nendSDK Android について

SDKの組み込み

広告の表示

ログ出力

導入サポート


English

About nendSDK Android

SDK Implementation

Display Ads

Logs Output

Supports

Clone this wiki locally