動画インタースティシャル広告 - fan-ADN/nendSDK-cocos2d-x GitHub Wiki

事前準備

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

SDKの組み込み

プロジェクトにSDKとモジュールを追加します。

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

Cocos2d-x のソースファイルに動画インタースティシャル広告を表示するプログラムを実装します。
手順は以下の通りです。

  1. インスタンス生成
  2. 広告ロード
  3. 広告表示
  4. 広告を破棄
  5. オプション設定

インスタンス生成

動画インタースティシャル広告を制御するインスタンスをクラス内に保持します。

Headerファイル

インスタンスを保持するための変数を定義します。

#include "NendVideoAds.h"

class YourAppScene : public cocos2d::Scene
{
  ...
private:
    // インスタンスをクラス内で保持しておきます。
    nend_module::video::VideoAds::InterstitialVideoAd* _interstitialVideoAd;
  ...
}

実装ファイル

Headerファイルで定義した変数にインスタンスを設定します。

using namespace nend_module;

bool YourAppScene::init()
{
  ...
    _interstitialVideoAd = VideoAds::createInterstitialVideoAd("管理画面から発行された spotID", "管理画面から発行された apiKey");
  ...
}

広告ロード

広告のロードを実行します。

_interstitialVideoAd->loadAd();

広告表示

広告のロードが完了したら広告の表示を実行します。
isReadyにより広告のロードが正常に行われたかを判定できます。

if (_interstitialVideoAd->isReady()) {
    _interstitialVideoAd->showAd();
}

注意: 動画広告を閉じた際、自動で広告のリロードは行われません。広告内容を更新する場合は再度ロード処理を実行する必要があります。

広告を破棄

動画広告用の不要なリソースを破棄します。動画広告を使用後に不要になったタイミングで実行してください。
また、destroy()を呼び出した後に再度動画広告を使用する場合は、動画インタースティシャル広告のインスタンスを生成し直してください。

YourAppScene::~YourAppScene()
{
    _interstitialVideoAd->destroy();
    CC_SAFE_DELETE(_interstitialVideoAd);
}

オプション設定

フルボード広告を表示

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

_interstitialVideoAd->addFallbackFullBoard("full board spot id", "full board api key");

フルボード広告の Safe Area の外側の背景色を設定(iOS)

フルボード広告のiPhoneXのSafe Area外の背景色を、アプリのデザインに合わせ変更することが可能です。
詳細はこちらをご参照ください。

_interstitialVideoAd->setFallbackFullBoardBackgroundColor4F(cocos2d::Color4F::WHITE);

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

再生開始時のミュートの指定を行います。
デフォルトはtrueです(音声OFFで再生します)

_interstitialVideoAd->setMuteStartPlaying(false);

位置情報の利用有無を設定

広告に位置情報の利用有無を設定します。
デフォルトはtrueです。

_interstitialVideoAd->setLocationEnabled(false);

ユーザーIDの設定

アプリ内のユーザーIDを設定できます。

_interstitialVideoAd->setUserid("user id");

ユーザー属性の設定

cocos2d-xモジュールv2.3.3より、動画広告のターゲティングにユーザー属性を利用できるようになりました。
利用可能な属性は以下の通りです。

  • 性別
  • 生年月日
  • 年齢
  • その他特徴(アプリ側で自由に設定可能)
// 単一の属性を利用する例
NendUserFeature *interstitialUserFeature = new NendUserFeature();
interstitialUserFeature->setBirthday(2000, 1, 1); // 生年月日 (e.g. 2000年1月1日)
_interstitialVideoAd->setUserFeature(interstitialUserFeature);
delete interstitialUserFeature;

...

// 複数の属性を利用する例
NendUserFeature *interstitialUserFeature = new NendUserFeature();
interstitialUserFeature->setGender(NendUserFeature::Gender::FEMALE); // 性別
interstitialUserFeature->setBirthday(2000, 1, 1); // 生年月日 (e.g. 2000年1月1日)
interstitialUserFeature->setAge(18); // 年齢
interstitialUserFeature->addCustomValue(100, "intParameter"); // value-key形式のカスタムパラメーター
interstitialUserFeature->addCustomValue(123.45, "doubleParameter");
interstitialUserFeature->addCustomValue("test", "stringParameter");
interstitialUserFeature->addCustomValue(true, "boolParameter");
_interstitialVideoAd->setUserFeature(interstitialUserFeature);
delete interstitialUserFeature;

ログ出力の設定

デバッグログをデバッグコンソールに出力するかどうかを指定できます。

ログ出力の設定は、インスタンス生成時の第3パラメーターにより設定されます。

_interstitialVideoAd = VideoAds::createInterstitialVideoAd("管理画面から発行された spotID", "管理画面から発行された apiKey", true);
設定値 内容
true デバッグログを出力します
false ログを出力しません
設定値を省略 ログ出力の設定に従い出力します

通知を受け取る

コールバックを登録することでインタースティシャル動画の各処理に関する通知を受け取ることができます。

ロード成功
_interstitialVideoAd->onLoaded([](const VideoAds::InterstitialVideoAd& ad) {
    CCLOG("InterstitialVideoAd - OnLoaded.");
});
ロード失敗
_interstitialVideoAd->onFailedToLoad([](const VideoAds::InterstitialVideoAd& ad, int errorCode) {
    CCLOG("InterstitialVideoAd - onFailedToLoad: %d", errorCode);
});

ロード失敗時のエラーコードは以下となります。

エラーコード 内容
204 配信可能な広告がない
400 不正なリクエスト
5XX nend側サーバーエラー
600 SDK内部エラー
601 動画ファイルダウンロードエラー
602 フルボード広告のフォールバック失敗
603 ネットワーク未接続
604 広告取得ネットワークエラー(タイムアウト等)
表示失敗
_interstitialVideoAd->onFailedToPlay([](const VideoAds::InterstitialVideoAd& ad) {
    CCLOG("InterstitialVideoAd - onFailedToPlay.");
});
広告表示
_interstitialVideoAd->onShown([](const VideoAds::InterstitialVideoAd& ad) {
    CCLOG("InterstitialVideoAd - onShown.");
});
動画再生
_interstitialVideoAd->onStarted([](const VideoAds::InterstitialVideoAd& ad) {
    CCLOG("InterstitialVideoAd - onStarted.");
});
動画停止
_interstitialVideoAd->onStopped([](const VideoAds::InterstitialVideoAd& ad) {
    CCLOG("InterstitialVideoAd - onStopped.");
});
動画視聴終了(動画再生が最後まで完了)
_interstitialVideoAd->onCompleted([](const VideoAds::InterstitialVideoAd& ad) {
    CCLOG("InterstitialVideoAd - onCompleted.");
});
広告クローズ
_interstitialVideoAd->onClosed([](const VideoAds::InterstitialVideoAd& ad) {
    CCLOG("InterstitialVideoAd - onClosed.");
});
広告クリック
_interstitialVideoAd->onAdClicked([](const VideoAds::InterstitialVideoAd& ad) {
    CCLOG("InterstitialVideoAd - onAdClicked.");
});
インフォメーションボタンクリック
_interstitialVideoAd->onInformationClicked([](const VideoAds::InterstitialVideoAd& ad) {
    CCLOG("InterstitialVideoAd - onInformationClicked.");
});