動画リワード広告 - fan-ADN/nendSDK-cocos2d-x GitHub Wiki
事前準備
まだ広告枠の作成、SDKのダウンロードを行っていない場合、下記リンク先を参照してください。
SDKの組み込み
プロジェクトにSDKとモジュールを追加します。
動画リワード広告実装手順
Cocos2d-x のソースファイルに動画リワード広告を表示するプログラムを実装します。
手順は以下の通りです。
インスタンス生成
動画リワード広告を制御するインスタンスをクラス内に保持します。
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.");
});