# Cocos2d-x Plugin インタースティシャル広告
# はじめに
本マニュアルはcocos2d-xでの開発に必要な環境がインストールされていることを前提としています。
platform | version |
---|---|
Cocos2d-x | 3.2/2.2(検証バージョン) |
iOS | 10.0+ |
Android | 5.0+ |
# 導入の流れ
- SDKをダウンロードします
↓ - iOS用SDKをプロジェクトに追加します
↓ - Android用SDKをプロジェクトに追加します
↓ - iOS用frameworkを追加します
↓ - AndroidManifest.xmlの設定を行います
↓ - Google Play Servicesの設定を行います
↓ - 例を参考に広告表示の実装を行います
# 1. SDKをダウンロードする ~ 6. Google Play Servicesの設定を行います
Cocos2d-x Plugin Getting Started / バナー広告からご確認ください。
# 7. 広告表示を実装する
# iOS
ADGConnectionForIOS.hをincludeします。
#include "ADGConnectionForIOS.h"
# 初期化
initInterADGメソッドで広告の生成を行います。
一度呼び出せば全画面共通で広告が表示されます。
ADGConnectionForIOS::initInterADG((char*)"48549" , 0 , 0 , 0 , false , false , NULL);
initInterADGメソッドの引数は以下の通りです。
- 広告枠ID
48549を指定すると広告の掲載イメージを確認できます(48549のままリリースしないようご注意ください) - 背景画像番号
- 閉じるボタン画像番号
デザインは、iOS インタースティシャル広告からご確認ください。 - 表示間隔
たとえば2を指定した場合、広告の表示は3回に1回(表示間隔が2)となります。 - パーセント指定
この値にtrueを指定した場合、表示間隔がパーセンテージとして扱われます。
たとえばこの値をtrueとして表示間隔を50にしたなら、50%の確率での表示となります。 - 誤タップ防止
この値にtrueを指定した場合、広告をタップした際にブラウザへ遷移するかどうかの確認アラートを表示します。 - イベント受け取りメソッド
イベント受け取りメソッドは、イベント受け取りが不要であればNULLを指定します(詳細は後述)。
# 全画面インタースティシャル広告の場合
広告枠タイプが「全画面インタースティシャル」の場合、以下の設定を行ってください。
RTBによって配信される広告において、全画面表示のクリエイティブを表示するために必要となります。
ADGConnectionForIOS::setFullScreenInterADG(true);
# 広告ロード
広告のロードを行います。
ADGConnectionForIOS::loadInterADG();
# 広告表示
広告の表示を行います。
ADGConnectionForIOS::showInterADG();
# イベント
イベントを受け取る場合はさらに以下の手順も必要となります。
receiveAdMessageを定義します。
void receiveAdMessage(const char* msg , const char* adid);
receiveAdMessageの処理を記述します。
void receiveAdMessage(const char* msg , const char* adid){
//CCLog("msg:%s adid:%s" , msg , adid);
}
adidには枠IDが、msgにはイベント内容が格納されます。
イベント内容は以下の通りです。
- ADGReceiveAd:広告受信時
- ADGFailedToReceiveAd:広告受信失敗時
- ADGCloseInterstitial;インタースティシャル広告を閉じたとき(表示されなかったとき)
- ADGOpenUrl:広告タップでのURL遷移時
- ADGNeedConnection:不通の検知時
- ADGExceedErrorLimit:エラー多発時
ADGOpenUrl
は一部SDK連携や広告フォーマットによっては、呼び出せない場合もあるため、
すべてのケースにおける広告タップ時のコールバックを保証するものではありません。
広告表示メソッドの最終引数にreceiveAdMessageを指定します。
ADGConnectionForIOS::initInterADG((char*)"48549" , 0 , 0 , 0 , false , false , receiveAdMessage);
# Android
ADGConnectionForAndroid.hをincludeします。
#include "ADGConnectionForAndroid.h"
# 初期化
initInterADGメソッドで広告の生成を行います。
ADGConnectionForAndroid::initInterADG((char*)"48549" , 0 , 0 , 0 , false , false);
initInterADGメソッドの引数は以下の通りです。
- 広告枠ID
48549を指定すると広告の掲載イメージを確認できます(48549のままリリースしないようご注意ください) - 背景画像番号
- 閉じるボタン画像番号
デザインは、Android インタースティシャル広告 - 表示間隔
たとえば2を指定した場合、広告の表示は3回に1回(表示間隔が2)となります。 - パーセント指定
この値にtrueを指定した場合、表示間隔がパーセンテージとして扱われます。
たとえばこの値をtrueとして表示間隔を50にしたなら、50%の確率での表示となります。 - 誤タップ防止
この値にtrueを指定した場合、広告をタップした際にブラウザへ遷移するかどうかの確認アラートを表示します。
# 全画面インタースティシャル広告の場合
広告枠タイプが「全画面インタースティシャル」の場合、以下の設定を行ってください。
RTBによって配信される広告において、全画面表示のクリエイティブを表示するために必要となります。
ADGConnectionForAndroid::setFullScreenInterADG(true);
# 広告ロード
広告のロードを行います。
ADGConnectionForAndroid::loadInterADG();
# 広告表示
広告の表示を行います。
ADGConnectionForAndroid::showInterADG();
# イベント
イベントを受け取る場合はさらに以下の手順も必要となります。
以下のincludeを追加します。
#include "ADGConnectionForAndroid.h"
#include "platform/android/jni/JniHelper.h"
#include <jni.h>
以下のコードを追加します。
extern "C" {
JNIEXPORT void Java_com_socdm_d_adgeneration_plugin_cocos2dx_adgni_ADGNICocos2dx_receiveAdMessage(JNIEnv* env, jobject obj,jstring msg,jstring adid)
{
//msgがイベント内容、adidが枠ID
const char *retmsg = env->GetStringUTFChars(msg, 0);
const char *retid = env->GetStringUTFChars(adid, 0);
//ここに処理を記述する。
//解放
env->ReleaseStringUTFChars(msg, retmsg);
env->ReleaseStringUTFChars(adid, retid);
}
}
イベント内容は以下の通り。
- ADGReceiveAd:広告受信時
- ADGFailedToReceiveAd:広告受信失敗時
- ADGCloseInterstitial:インタースティシャル広告を閉じたとき(表示されなかったとき)
- ADGOpenUrl:広告タップでのURL遷移時
- ADGNeedConnection:不通の検知時
- ADGExceedErrorLimit:エラー多発時
ADGOpenUrl
は一部SDK連携や広告フォーマットによっては、呼び出せない場合もあるため、
すべてのケースにおける広告タップ時のコールバックを保証するものではありません。
# iOSとAndroidの併用例
iOS向けのコードとAndroid向けのコードの同一ファイルへの併記はプリプロセッサの使用を想定しています。
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
ADGConnectionForAndroid::initInterADG((char*)"48549" , 0 , 0 , 0 , false , false);
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
ADGConnectionForIOS::initInterADG((char*)"48549" , 0 , 0 , 0 , false , false , receiveAdMessage);
#endif