動画リワード広告 - 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::RewardedVideoAd* _rewardedVideoAd;
  ...
}

実装ファイル

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

using namespace nend_module;

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

広告ロード

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

_rewardedVideoAd->loadAd();

広告表示

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

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

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

広告を破棄

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

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

オプション設定

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

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

_rewardedVideoAd->setLocationEnabled(false);

ユーザーIDの設定

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

_rewardedVideoAd->setUserid("user id");

ユーザー属性の設定

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

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

...

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

ログ出力の設定

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

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

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

通知を受け取る

コールバックを登録することでリワード動画の各処理に関する通知を受け取ることができます。

リワード付与 
_rewardedVideoAd->onRewarded([](const VideoAds::RewardedVideoAd& ad, const RewardItem& item) {
    CCLOG("RewardedVideoAd - OnRewarded. %s, %d", item.getName().c_str(), item.getAmount());
});

パラメーターに設定されるRewardItemから、以下の情報を取得できます。

getter 内容
getName() リワード通貨名
getAmount() リワード額
ロード成功
_rewardedVideoAd->onLoaded([](const VideoAds::RewardedVideoAd& ad) {
    CCLOG("RewardedVideoAd - OnLoaded.");
});
ロード失敗
_rewardedVideoAd->onFailedToLoad([](const VideoAds::RewardedVideoAd& ad, int errorCode) {
    CCLOG("RewardedVideoAd - onFailedToLoad: %d", errorCode);
});

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

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