スマホ向け全画面広告を提供されている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();