Android カスタム型 v3.3

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

Android カスタムデザインの実装方法の手順を解説します。 カスタムデザインは、広告一覧のデータをArrayList型として直接受け取ることが出来、自由にレイアウトすることが可能です。

v2.1の実装マニュアルについては、こちらを参照してください。

目次

Android広告IDについて

GAMEFEAT SDK v3.3.0から、Android広告IDに対応しました。SDKの導入には、Google Play Serviceへの対応が必要になります。

また、動作環境としてはAndroid2.3以降となります。

Google Play Servicesの対応はこちらをご覧ください

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>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<!-- 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の広告を表示するために、メインアクティビティ(一番最初に起動されるアクティビティ)にて、SDKの初期化設定が必要です。

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


GameFeatAppController gfAppController;

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);

	// GFコントローラ
	gfAppController = new GameFeatAppController();
}

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

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

使用する広告の種類に合わせてBoolean(true / false)を引数として設定をしてください。 カスタム型のみを使用される場合は、

gfAppController.activateGF(MainActivity.this, true, false, false);

と記述をしてください。

レイアウトファイルの配置

SDKに付属している「activity_gamefeatview.xml」「custom_row.xml」というレイアウトファイルを「res/layout/」ディレクトリに配置します。

こちらはサンプルとしてのレイアウトファイルです。下記、サンプルアクティビティと一緒に参考にし、自由にレイアウトしてください。

カスタムデザイン用アクティビティを追加

以下は、サンプルです。

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;

import jp.basicinc.gamefeat.android.sdk.controller.GameFeatAppController;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MainActivity extends Activity {

	GameFeatAppController gfAppController;
	getImageData getImageData;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_gamefeatview);

		// GFコントローラ
		gfAppController = new GameFeatAppController();
		gfAppController.init(MainActivity.this);

		// LinearLayout incLayout = null;
		RelativeLayout incLayout = null;
		LinearLayout mainLayout = (LinearLayout) findViewById(R.id.ad_lists);

		// カスタム広告のデータを取得
		ArrayList<HashMap<String, String>> customArrayList = gfAppController.getCustomAds();

		for (final HashMap<String, String> map : customArrayList) {
			// LayoutInflaterの準備
			LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			incLayout = (RelativeLayout) inflater.inflate(R.layout.custom_row, null);

			// アイコン画像の読み込み
			ImageView appIcon = (ImageView) incLayout.findViewById(R.id.app_icon);
			getImageData = new getImageData(map.get("appIconUrl"), appIcon);
			getImageData.execute();

			// タイトルの設定
			TextView title = (TextView) incLayout.findViewById(R.id.title);
			title.setText(map.get("appTitle"));

			// タイトルの設定
			TextView description = (TextView) incLayout.findViewById(R.id.description);
			description.setText(map.get("appDescription"));

			// レビューボタンの設定
			Button btnReview = (Button) incLayout.findViewById(R.id.btn_review);
			if (map.get("hasReview") == "0") {
				btnReview.setVisibility(View.GONE);
			}
			btnReview.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View v) {
					// レビューへ
					gfAppController.onAdReviewClick(map);
				}
			});

			// DLボタンの設定
			Button btnStore = (Button) incLayout.findViewById(R.id.btn_store);
			btnStore.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View v) {
					// AppStoreへ
					gfAppController.onAdStoreClick(map);
				}
			});

			mainLayout.addView(incLayout);
		}

	}

}

/**
 * 画像の非同期読み込み
 * 
 */
class getImageData extends AsyncTask<String, Integer, Bitmap> {

	private ImageView imageView;
	private String imageUrl;

	public getImageData(String imageUrl, ImageView imageView) {
		super();
		this.imageView = imageView;
		this.imageUrl = imageUrl;
	}

	@Override
	protected Bitmap doInBackground(String... param) {
		Bitmap bitmap;

		try {
			URL url = new URL(this.imageUrl);
			InputStream inputStream = url.openStream();
			bitmap = BitmapFactory.decodeStream(inputStream);
			return bitmap;
		} catch (IOException ex) {
			Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
		}

		return null;
	}

	@Override
	protected void onPostExecute(Bitmap result) {
		imageView.setImageBitmap(result);
	}
}

広告一覧データについて

gfAppController.getCustomAds();にて ArrayList<HashMap<String, String>> 型として広告データが返却されます。

広告アプリ情報詳細(ArrayList)
 @"title":アプリタイトル
 @"description":アプリ説明分
 @"has_entry":レビュー詳細記事が存在するかどうか(0:なし 1:あり)
 @"app_icon_url":アプリアイコンURL

上記の情報から、アプリのテイストに合わせた描画を行うことが可能となります。

レビュー画面への遷移

onAdReviewClick(【HashMap<String, String>型 対象広告データ】);

遷移対象の広告データ(HashMap<String, String>)を引数として渡して下さい。

GooglePlayへの遷移

onAdStoreClick(【HashMap<String, String>型 対象広告データ】);

遷移対象の広告データ(HashMap<String, String>)を引数として渡して下さい。

コンバージョン確認方法

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

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

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

個人用ツール
名前空間

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