スマホ向け全画面広告を提供されているAID様のポップアップ型広告のモジュールをcocos2d-xに組み込む場合、通常のネイティブの場合とやや異なるため、こちらにまとめました。
AID様のモジュールについてはこちらをご参照ください。
http://www.aid-ad.jp/
まず、cocos2d-xのプロジェクト構成の確認から行います。
プロジェクト名を「TestProject」とします。
TestProject/ 以下の追加/修正を行うファイル構成を以下にまとめます。
Classes/
Android/AdViewManager.cpp // add
Android/AdViewManager.h // add
HelloWorld.cpp
HelloWorld.h
proj.android/
jni/Android.mk/Android.mk
libs/jp.live_aid.aid.jar // add
src/com/loopsessions/TestProject/TestProject.java
proj.ios/
AdViewManager.h // add
AdViewManager.mm // add
AidAd.framework // add
AppController.h
AppController.mm
【iOSでの実装方法】
基本的な手順や実装については以下を参考にしてください。
http://report.aid-ad.jp/docs/ios/manual/index.html
AdViewManager.h / AdViewManager.mm を新規作成します。
// AdViewManager.h #ifndef ADVIEW_MANAGER_H #define ADVIEW_MANAGER_H class AdViewManager { public: static void setAidAdView(); }; #endif
// AdViewManager.mm #import "AdViewManager.h" #import "AppController.h" void AdViewManager::setAidAdView() { AppController *appController = (AppController *)[UIApplication sharedApplication].delegate; [appController setAidAdView]; }
AppController.h に実装するメソッドの宣言を記述します。
// AppController.h #import <UIKit/UIKit.h> @class RootViewController; @interface AppController : NSObject <UIApplicationDelegate> { UIWindow *_window; RootViewController *_viewController; } - (void)setAidAdView; @end
AppController.mm に広告を呼び出すメソッドを記述します。
// AppController.mm - (void)setAidAdView { NSString *kMEDIA_CODE = @"idxxxxxxxx"; AidAdAgent* agent = [AidAd agentForMedia:kMEDIA_CODE]; [agent setDialogBlocker:self]; [agent startLoading]; [agent showDialog]; }
HelloWorld.cpp で広告を表示したい場合、呼び出したいタイミングで以下を実行してください。
// HelloWorld.cpp // 呼び出したいタイミングで以下を実行 AdViewManager::setAidAdView();
【Androidでの実装方法】
基本的な手順や実装については以下を参考にしてください。
http://report.aid-ad.jp/docs/android/manual/index.html
Androidの場合は、ファイル構成が変更したことをMakeファイル(Android.mk)に記述する必要があります。
# Android.mk
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorld.cpp \
../../Classes/Android/AdViewManager.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes/Android
(略)
AdViewManager.cpp / AdViewManager.h を新規作成します。
AdViewManager.h はiOSと同じ内容です。
// AdViewManager.cpp #include "AdViewManager.h" #include <jni.h> #include "platform/android/jni/JniHelper.h" // パッケージ名 + Javaクラス名 #define CLASS_NAME "com/loopsessions/TestProject/TestProject" using namespace std; using namespace cocos2d; void AdViewManager::setAidAdView() { cocos2d::JniMethodInfo t; if (cocos2d::JniHelper::getStaticMethodInfo(t, CLASS_NAME, "setAidAdView", "()V")) { t.env->CallStaticVoidMethod(t.classID, t.methodID); t.env->DeleteLocalRef(t.classID); } }
TestProject.java に広告を呼び出すメソッドを記述します。
// TestProject.java (略) public class TestProject extends Cocos2dxActivity { (略) private static AdController mAidAdController = null; (略) public static void setAidAdView() { activity.runOnUiThread(new Runnable() { public void run() { if (mAidAdController == null) { String MEDIA_CODE = "idxxxxxxxx"; mAidAdController = new AdController(MEDIA_CODE, activity); } mAidAdController.startPreloading(); mAidAdController.showDialog(AdController.DialogType.ON_EXIT); } }); } }
広告表示の呼び出しは、iOS/Android共通のコードになります。
// HelloWorld.cpp // 呼び出したいタイミングで以下を実行 AdViewManager::setAidAdView();