動画リワード広告
動画リワード広告とは、アプリ内で使用可能なアイテムやポイントをユーザーに付与する代わりに、約15秒〜30秒程度の動画広告を表示する広告フォーマットです。
強制視聴型の動画広告と違い、動画視聴を希望したユーザーにのみインセンティブを付与する点で、一般的な動画広告とは異なるものです。
動画視聴後に付与する報酬(インセンティブ)の例としては、ゲーム内で使えるアイテムやコンティニューの権利、ツール系アプリの場合は有料の機能を限定的に開放するなどがあります。
前提条件
- VAMP Cocos2dx Plugin v5.1.1以降
- VAMP Cocos2dx Pluginがインポート済み
※まだVAMP Cocos2dx Pluginのインポートがお済みでない場合はこちらをご参考ください。
各メソッドの仕様やオプションについては、Cocos2dxPluginリファレンスをご参照ください。
VAMPCocosSDKオブジェクトの初期化
動画リワード広告を表示するためにまずVAMPCocosSDK
オブジェクトを初期化する必要があります。
次のコードスニペットでは、VideoScene
クラスのinit
メソッド内でVAMPCocosSDK
オブジェクトを初期化しています。
広告枠IDでVAMPCocosSDK
を初期化します。
AdGeneration管理画面で発行された広告枠IDを*****に設定します。
// VideoScene.h
#include <memory>
#include "cocos2d.h"
#include "ui/CocosGUI.h"
#include "VAMPConnection.h"
class VideoScene : public cocos2d::Scene, public vamp::VAMPListener
{
public:
virtual ~VideoScene();
bool init() override;
void onExit() override;
protected:
//
// VAMPListener
//
virtual void onVampReceive(const vamp::Ad& ad) override;
virtual void onVampOpen(const vamp::Ad& ad) override;
virtual void onVampComplete(const vamp::Ad& ad) override;
virtual void onVampClose(const vamp::Ad& ad, const bool adClicked) override;
virtual void onVampFailedToLoad(const vamp::Ad& ad, const vamp::error::Error error) override;
virtual void onVampFailedToShow(const vamp::Ad& ad, const vamp::error::Error error) override;
virtual void onVampExpired(const std::string& placementId) override;
virtual void onVampLoadStart(const vamp::Ad& ad) override;
virtual void onVampLoadResult(const vamp::Ad& ad, const bool success, const std::string& msg) override;
protected:
std::unique_ptr<vamp::VAMPCocosSDK> vamp_;
};
// VideoScene.cpp
#include "VideoScene.h"
#include "VAMPConnection.h"
using namespace vamp;
VideoScene::~VideoScene() {
}
bool VideoScene::init() {
if (!Scene::init()) {
return false;
}
// VAMPCocosSDKの初期化
vamp_.reset(new VAMPCocosSDK("*****"));
vamp_->setVAMPListener(this);
return true;
}
void VideoScene::onExit() {
Scene::onExit();
// 終了処理
vamp_.reset();
}
//
// VAMPListenerの実装
//
void VideoScene::onVampReceive(const Ad &ad) {
}
void VideoScene::onVampOpen(const Ad &ad) {
}
void VideoScene::onVampComplete(const vamp::Ad &ad) {
}
void VideoScene::onVampClose(const vamp::Ad &ad, const bool adClicked) {
}
void VideoScene::onVampFailedToLoad(const Ad &ad, const error::Error error) {
}
void VideoScene::onVampFailedToShow(const Ad &ad, const error::Error error) {
}
void VideoScene::onVampExpired(const std::string& placementId) {
}
void VideoScene::onVampLoadStart(const vamp::Ad &ad) {
}
void VideoScene::onVampLoadResult(const vamp::Ad &ad, const bool success, const std::string& msg) {
}
広告の読み込み
vamp::Request request;
vamp_->load(request);
広告の読み込み完了時にはonVampReceive
に通知されます。
表示(再生)
vamp_->show();
VAMPListenerの実装
リスナーの登録
上記のスニペットでは、VideoScene
クラスにVAMPListenerを実装しています。VAMPCocosSDK
オブジェクトを初期化するタイミングでリスナーをセットしています。
vamp_->setVAMPListener(this);
広告表示準備完了
広告のロードが成功したタイミングで通知されます。
void VideoScene::onVampReceive(const Ad &ad) {
}
### エラー エラーが発生した場合に通知されます。
// 全アドネットワークにおいて広告が取得できなかったときに通知
void VideoScene::onVampFailedToLoad(const Ad &ad, const error::Error error) {
}
// 広告の表示に失敗したときに通知
void VideoScene::onVampFailedToShow(const Ad &ad, const error::Error error) {
}
エラーはこちらをご確認ください。
広告を閉じる
広告を閉じたタイミングで呼び出されます。
void VideoScene::onVampClose(const vamp::Ad &ad, const bool adClicked) {
}
インセンティブ付与通知
動画再生完了時、または広告が閉じられた際にインセンティブ付与が可能な状態であれば呼び出されます。
動画の再生を途中でキャンセルした場合は、本イベントは通知されません。
void VideoScene::onVampComplete(const vamp::Ad &ad) {
}
広告取得開始
アドネットワーク毎の広告取得が開始されたときに通知します。
void VideoScene::onVampLoadStart(const vamp::Ad &ad) {
}
アドネットワーク毎の広告取得結果
アドネットワーク毎の広告取得結果が通知されます。
void VideoScene::onVampLoadResult(const vamp::Ad &ad, const bool success, const std::string& msg) {
}
アドネットワーク毎の広告取得結果を、 成功 , 失敗 のどちらの場合でも通知します。
success
引数がtrueの場合は成功です。
失敗しても次のアドネットワークがある場合、広告取得を実行します。
最終的に全てのアドネットワークの広告在庫がない場合は、
onVampFailedToLoad
のNoAdStock
が通知されるため、ここで処理を止めないでください。
この通知をもとにshow
しないようご注意ください。show
する判定は、onVampReceive
イベントを受け取ったタイミングで判断ください。
期限切れ
onVampReceive
イベントを受けてからの有効期限(55分)が切れた際に通知されます。
広告を表示するためには、再度ロードを行う必要があります。
void VideoScene::onVampExpired(const std::string& placementId) {
}