Cocos2d-x android アイコン型

提供: GAMEFEAT マニュアル
移動: 案内検索

Cocos2d-xでのAndroid アイコン型広告の実装方法の手順を解説します。

目次

SDKファイルのダウンロード

パートナー管理画面 SDK/マニュアルからAndroidのSDKファイルをダウンロードして下さい。

jarファイルの読み込み

ダウンロードしたSDKに付属されている「GameFeatSdk.jar」をEclipseのlibsディレクトリへ配置してください。

配置方法は、プロジェクト名を右クリックして、「Javaのビルド・パス > ライブラリ」で「外部Jar追加...」を選択し、GameFeatSdk.jarを追加します。

AndroidManifest.xmlの編集

パーミッション設定

AndroidManifest.xmlのmanifestタグ内に以下のコードを記述してください。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

※ GameFeatSDKではインターネット通信が必要となるため、上記のパーミッションが必要となります。

GAME FEATの基本設定

GameFeatSDKの基本情報を設定します。

AndoridManifest.xmlのapplicationタグ内に、以下のコードを記述してください。

<!-- GameFeat START -->
<meta-data android:name="gamefeat_site_id" android:value="【メディアID】" />
<activity
	android:name="jp.basicinc.gamefeat.android.sdk.view.GameFeatAppActivity"
	android:configChanges="orientation|keyboardHidden"
	android:label="GameFeat" >
</activity>
<activity
  	android:name="jp.basicinc.gamefeat.android.sdk.view.GameFeatAppChildActivity"
  	android:configChanges="orientation|keyboardHidden"
	android:label="GameFeat"
	android:screenOrientation="sensor" >
</activity>
<receiver
	android:name="jp.basicinc.gamefeat.android.sdk.receiver.GameFeatBroadcastReceiver"
	android:enabled="true"
	android:exported="false">
	<intent-filter>
		<action android:name="android.intent.action.PACKAGE_ADDED"/>
		<data android:scheme="package"/>
	</intent-filter>
</receiver>
<!-- GameFeat END -->

※【メディアID】は管理画面よりご確認いただけます。

APIレベルが13以上の場合は android:configChanges 属性に screenSize を追加して下さい。

<activity
	android:name="jp.basicinc.gamefeat.android.sdk.view.GameFeatAppActivity"
	android:configChanges="orientation|keyboardHidden|screenSize"
	android:label="GameFeat" >
</activity>
<activity
  	android:name="jp.basicinc.gamefeat.android.sdk.view.GameFeatAppChildActivity"
  	android:configChanges="orientation|keyboardHidden|screenSize"
	android:label="GameFeat"
	android:screenOrientation="sensor" >
</activity>

GAME FEAT初期化設定

GAME FEATの広告を表示するために、srcディレクトリ内のCocos2dxActivityを継承したアクティビティにて、SDKの初期化設定が必要です。

import jp.basicinc.gamefeat.android.sdk.controller.GameFeatAppController;
// 略…

private static LinearLayout container;
GameFeatAppController gfAppController;
private static MainActivity me = null;

GFIcons gfIcons = null;
	
protected void onCreate(Bundle savedInstanceState){
	super.onCreate(savedInstanceState);
	me = this;
	container = new LinearLayout(me);
	me.addContentView(container, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
		
	gfAppController = new GameFeatAppController();
}

@Override
public void onStart() {
	super.onStart();
	// 広告設定初期化
	gfAppController.activateGF(me, true, true, true);
}

// 初期化コードの引数
activateGF(【Activity名】.this, カスタム広告の使用, アイコン広告の使用, 全画面広告の使用);

使用する広告の種類に合わせてBoolean(true / false)を引数として設定をしてください。 オファーウォール呼び出し型のみを使用される場合は、

gfAppController.activateGF(me, false, false, false);

と記述をしてください。

GFIconsクラスはこの後作成します。

アイコンの表示方法

アイコンを表示するLinearLayoutを継承したGFIcons.javaを作成します。

public class GFIcons extends LinearLayout {
	private Context mContext;
	
	GameFeatAppController gfAppController;
	private GameFeatIconView icon1;
	private GameFeatIconView icon2;

	public GFIcons(Context context) {
		super(context);
		// TODO 自動生成されたコンストラクター・スタブ
		mContext = context;
		init();
	}
	
	protected void init() {
		// this.setBackgroundColor(Color.WHITE);
	 
		WindowManager wm = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
		Display display = wm.getDefaultDisplay();
		
		int width = display.getWidth();
		int height = display.getHeight();
		
		int size_base = width;
		if (width > height) {
			size_base = height;
		}
		Log.d("GFICONS", width + "/" + height + ":::" + size_base);
		int per = size_base / 6;

		
                // GFコントローラ
                gfAppController = new GameFeatAppController();
                gfAppController.init(mContext);
	
                // アイコン広告の自動更新間隔(秒)指定:標準で30秒
                gfAppController.setRefreshInterval(30);
		
	      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, per + 2 * (per / 7	));
		this.setLayoutParams(params);
		this.setOrientation(HORIZONTAL);
		
		LinearLayout.LayoutParams icon_param = new LinearLayout.LayoutParams(per, per);
		icon_param.leftMargin = per / 10;
		icon_param.rightMargin = per / 10;
		
		icon1 = new GameFeatIconView(mContext);
		icon1.setLayoutParams(icon_param);
		icon1.addLoader(gfAppController);
		this.addView(icon1);
		
		icon2 = new GameFeatIconView(mContext);
		icon2.setLayoutParams(icon_param);
		icon2.addLoader(gfAppController);
		this.addView(icon2);
		
	}
	
	public void resume() {
		gfAppController.startIconAd();
	}
	
	public void stop() {
		gfAppController.stopIconAd();
	}

}


※アイコン広告は最大20個まで設定が可能です。
※setRefreshIntervalメソッドを使って、アイコンの更新間隔を秒単位で指定できます。

次にGAME FEATを初期化したアクティビティに上記のクラスのインスタンスを持たせて、NativeBridge経由でC++側から呼ぶメソッドを記述します。

	public static void showIconGameFeatJNI() {
		if (me.gfIcons != null) {
			me.runOnUiThread(new Runnable(){
				@Override
				public void run() {
					me.gfIcons.setVisibility(View.VISIBLE);
	    			me.gfIcons.resume();
				}
			});
		}
		else {
			me.runOnUiThread(new Runnable(){
				@Override
	    		public void run()
	    		{			
	    			me.gfIcons = new GFIcons(me.getApplicationContext());
	    			container.setGravity(Gravity.BOTTOM);
	    			container.addView(me.gfIcons);
	    			me.gfIcons.resume();
	    		}
			});
		}
	}

	public static void hideIconGameFeatJNI() {
		if (me.gfIcons != null) {
			me.runOnUiThread(new Runnable() {
				@Override
				public void run() {
					me.gfIcons.stop();
					me.gfIcons.setVisibility(View.INVISIBLE);
				}			
			});
		}
	}

次にXcode側でNativeBridgeファイルを作成します。

※ AndroidはNativeBridge.cpp iOSはNativeBridge.mmとして作成していただき、ヘッダーファイルは一つのみ作成してください。

【NativeBridge.h】

#ifndef _NATIVE_BRIDGE_H_
#define _NATIVE_BRIDGE_H_

class NativeBridge
{
public:       
     //アイコン型
    static void showIconGameFeat();
    static void hideIconGameFeat();
};

#endif
【NativeBridge.cpp】

#include "NativeBridge.h"
#include <android/log.h>
#include <jni.h>
#include "platform/android/jni/JniHelper.h"

#define CLASS_NAME "org/cocos2dx/cpp/AppActivity"

using namespace std;
using namespace cocos2d;

/**
 * アイコン型GameFeat表示
 */
void NativeBridge::showIconGameFeat()
{
    JniMethodInfo t;
    
    if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, "showIconGameFeatJNI", "()V"))
    {
        t.env->CallStaticVoidMethod(t.classID, t.methodID);
    }
}

/**
 * アイコン型GameFeat非表示
 */
void NativeBridge::hideIconGameFeat()
{
    JniMethodInfo t;
    
    if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, "hideIconGameFeatJNI", "()V"))
    {
        t.env->CallStaticVoidMethod(t.classID, t.methodID);
    }
}

CLASS_NAMEは呼び出すCocosActivityを継承したアクティビティのsrcディレクトリ以降のパスを記述してください。

またディレクトリごとに/で区切ってください。

広告を表示したいタイミングで

NativeBridge.h

を読み込み、showIconGameFeatメソッドを実行してください。

【MainScene.cpp】

#include "MainScene.h"
#include "NativeBridge.h"

void MainScene::onClickBtn()
{
    NativeBridge:: showIconGameFeat();
}

実行すると、GameFeatの広告一覧が表示されます。 startIconAdにより表示を開始したアイコン広告はデフォルトでは30秒毎に自動更新されます。

またアイコンを停止させて非表示にする時はhideIconGameFeatメソッドを実行してください。

void MainScene::onClickBtn()
{
    NativeBridge:: hideIconGameFeat();
}

コンバージョン確認方法

GameFeat SDKの広告一覧画面よりアプリを選択するとGoogle Playが起動いたしますので、対象のアプリをインストールしてください。

インストール完了後、GameFeat SDKがインストール情報をGameFeatサーバーへ送信いたしますので、管理画面より成果をご確認いただけます。

※管理画面の反映には10分程度かかります。

サンプルプロジェクト

GameFeat SDKのサンプルプロジェクトを用意いたしました。

SDKを管理画面からダウンロードしていただき、サンプルプロジェクトに含めてください。

また、AndroidManifest.xml内の

<meta-data android:name="gamefeat_site_id" android:value="サイトID" />

こちらを適宜変更の上、動作のご確認をよろしくお願いいたします。

GAMEFEAT_cocos2dx ver3.x.x sample
GAMEFEAT_cocos2dx ver2.x.x sample

個人用ツール
名前空間

変種
操作
Androidへの導入
iOSへの導入 (新SDK)
iOSへの導入 (旧 GAMEFEAT SDK)
Unityへの導入方法
Cocos2dx(Android)への導入方法
Cocos2dx(iOS)への導入方法
Q&A
ツールボックス