6-2. リファレンス インタースティシャル広告(Android / iOS 共通 C++)
※各実装例の詳細は、サンプルプロジェクトをご確認下さい。
■ ADFMovieInterstitial
public class Adfurikun::ADFMovieInterstitial
動画インタースティシャル広告のCocos2d-x用のクラスです。このクラスで動画インタースティシャル広告の制御を行います。
■コールバック設定
static void setDelegate (const char *appId, ADFMovieInterstitialDelegate *delegate)
コールバック(後述)を返したいクラスを設定します。
@param Adfurikun::ADFMovieInterstitialDelegateクラスを継承したクラス
動画の読込完了 / 再生 などのタイミングで呼ばれる、呼び出し元へのコールバック(後述)を、設定可能です。(コールバックの受け取りが必要ない場合は、設定は必須ではありません)
■設定したコールバックの取得
static ADFMovieInterstitialDelegate * getDelegate (const char *appId)
設定したコールバックのオブジェクトを取得します。
@param const char* appId ... 広告枠ID
@return ADFMovieInterstitialDelegate * ... setDelegateで設定したコールバック(未設定の場合はNULL)
■設定したコールバックの参照を外す
static void detachDelegate (const char *appID)
設定したコールバックの参照を外します。
@param const char* appId ... 広告枠ID
画面遷移などでコールバックの参照を外したい場合は、上記で行えます。
■動画インタースティシャル広告 : 動画操作メソッド
static void initializeWithAppID(const char* appId)
広告枠に対して、初期化を行います。
@param const char* appId ... 広告枠ID
static void load(const char* appId)
広告の準備を開始します。
@param const char* appId ... 広告枠ID
static void play(const char* appId)
動画広告の再生を開始します。
@param const char* appId ... 広告枠ID
static bool isPrepared(const char* appId)
動画広告の準備が完了したか?
@param const char* appId ... 広告枠ID
static void dispose()
アドフリくん動画インタースティシャルSDKに関するリソースを開放します。
破棄後に再度動画インタースティシャルの準備を開始する際は、initializeWithAppIDメソッドを
再度呼び出して下さい。
広告枠ID毎に動画を管理します。再生可能になるタイミング等は、コールバック(後述)を利用することで取得可能です。
■ ADFMovieInterstitialDelegate
public class Adfurikun::ADFMovieInterstitialDelegate
SDKからのコールバックのインターフェイスとなるクラスです。動画のステータス変更に関する通知を受け取りたいクラスで継承し、メソッドを実装して下さい。
● 正常系
■広告の表示準備完了のイベントの受け取り
virtual void prepareSuccess (const char *appId)=0
@param const char* appId ... 広告枠ID
■動画広告の再生開始時のイベントの受け取り
virtual void startPlaying (const char *appId, const char *adnetworkKey)=0
@param const char* appId ... 広告枠ID
@param const char* adnetworkKey ... アドネットワークキー
■動画再生完了時のイベントの受け取り (インセンティブ発生ポイント)
virtual void finishedPlaying (const char *appId)=0
@param const char* appId ... 広告枠ID
■広告を閉じた時のイベントの受け取り
virtual void adClose(const char *appId)=0
@param const char* appId ... 広告枠ID
● 異常系
■広告準備失敗時のイベントの受け取り
virtual void prepareFailure(const char * appID, int errorCode)=0
@param const char* appId ... 広告枠ID
@param int errorCode ... Error Code
● エラーコード(Android)
タイプ | コード | 内容 |
---|---|---|
NO_AD | 0 | 広告の在庫がない場合 |
NO_NETWORK | 1 | オフラインまたはフライトモードの場合 |
INVALID_APP_ID | 2 | 広告IDが登録されている内容と異なる場合 |
API_REQUEST_FAILURE | 3 | リクエストが失敗した場合 |
NO_SUPPORT_API_VERSION | 4 | API Levelが14以下の場合 |
PLAYER_ITEM_LOAD_FAILURE | 5 | 広告の読み込みが失敗した場合 |
PLAYER_ITEM_PLAY_FAILURE | 6 | 広告の再生が失敗した場合 |
OTHER_ERROR | 7 | その他の予期せぬエラーが発生した場合 |
● エラーコード(iOS)
タイプ | コード | 内容 |
---|---|---|
ADF_FETCH_ERROR_CODE_OUTOFSTOCK | 203 | ADNWから在庫が返却されなかった場合 |
ADF_FETCH_ERROR_CODE_NOADNETWORK | 400 | 配信設定において利用可能なADNWが一つもなかった場合 |
ADF_FETCH_ERROR_CODE_ALREADY_LOADING | 999 | 前回のLoadingがまだ完了してない場合 |
■広告の再生失敗時のイベントの受け取り
virtual void failedPlaying (const char *appId)=0
@param const char* appId ... 広告枠ID
動画の視聴が何かしらの理由で最後まで行われなかった場合に通知されます。
(異常終了を必ず補足することは出来ません。あくまで、各アドネットワークのSDKから、通知があった場合のみに限ります)
■ 使用例
(詳細は、サンプルアプリ・adfrikunSampleCocos を参照)
● アプリ起動〜事前準備開始
●広告枠IDを指定し、動画読込を開始
(AppDelegate.cpp、applicationDidFinishLaunchingメソッド内に記述 例 )
//動画読込を開始
Adfurikun::ADFMovieInterstitial::initializeWithAppID([広告枠ID]);
Adfurikun::ADFMovieInterstitial::load([広告枠ID]);
● デリゲート実装 〜 インスタンス受け取り 〜 再生開始
●指定したクラスにコールバッククラスを継承する (シーンのヘッダ 例)
class HelloAdfurikunInterstitial : public cocos2d::LayerColor,
public Adfurikun::ADFMovieInterstitialDelegate
●動画インタースティシャルのコールバックを設定
Adfurikun::ADFMovieInterstitial::setDelegate( [広告枠ID], this);
●動画読込完了の通知を受け取る
/**動画広告の読み込みが完了した時に呼ばれるコールバック */
void HelloAdfurikunInterstitial::prepareSuccess(const char * appID){ }
●再生準備が出来ているか確認し、再生開始
if ( Adfurikun::ADFMovieInterstitial::isPrepared( [広告枠ID] )) {
//再生準備が出来ていたら、再生開始 (再生準備が出来ているか、ご確認ください )
Adfurikun::ADFMovieInterstitial::play( [広告枠ID] );
//BGM 停止など
}
● 各種コールバック受け取り
●動画表示開始時 / 動画再生完了時 / 動画再生失敗時 / 動画を閉じた時 の通知を受け取る
/** 広告 表示が開始した時のイベント */
void HelloAdfurikunInterstitial::startPlaying(const char * appID, const char * adnetworkKey){
//再生開始時に、必ず他 アニメーションを停止して下さい。
(一部のアドネットワークでエラーが起きます)
//再生完了(もしくは失敗)後、アニメーションを再開して下さい。
Director::getInstance()->pause();
Director::getInstance()->stopAnimation();
}
/** 広告 表示が最後まで終わった時のイベント */
void HelloAdfurikunInterstitial::finishedPlaying(const char * appID){
//動画Skip時は呼ばれません
//アニメーションを再開
Director::getInstance()->resume();
Director::getInstance()->startAnimation();
}
/** 動画広告再生エラー時のイベント */
void HelloAdfurikunInterstitial::failedPlaying(const char * appID){
//アニメーションを再開
Director::getInstance()->resume();
Director::getInstance()->startAnimation();
}
/** 広告を閉じた時のイベント */
void HelloAdfurikunInterstitial::adClose(const char * appID){
//アニメーションを再開
Director::getInstance()->resume();
Director::getInstance()->startAnimation();
//BGMの再開など
}
● 参照の破棄
デリゲートの参照の破棄
/** 画面遷移 */
Adfurikun::ADFMovieInterstitial::detachDelegate();
インスタンス 全破棄
/** アドフリくんSDKに関するリソースの破棄を行ないます。
アドネットワーク毎のSDKに関しては制御を行っていません。
(明示的に破棄する手段が存在しないアドネットワークが存在するため) */
Adfurikun::ADFMovieInterstitial::dispose();
■ 動画再生後の画面の回転の挙動について
動画再生後に画面の回転が正常に動作しない場合は、前述のコールバックにて、再生完了後に画面の向きを指定し直して下さい。
■ 動画広告における、その他の注意点
新しいアドネットワークを導入する際は、都度サービス画面より配信比率を変更し、追加するアドネットワークの比率を高めてのテストをおすすめします。
(デフォルトで、比率の調整を自動で行っているため)
また、アプリの負荷に応じて、ONにするアドネットワーク数を適時調整いただくようお願いします。
(アドネットワーク SDKが増える毎に、処理の負荷が高まる可能性があります)