AdMob SDK の導入にあたり、ググってみたけど古い情報が多いので、新しいSDKについてまとめてみました。
- 用意
当然のことながら最初はAdMobへの登録とSDKのダウンロードします。
ここは他のサイトにも解説はあるし、英語を見ながら指示にしたがって頑張ってください。
広告を貼ろうと思っているアプリを登録してパブリッシャー IDをもらうのもお忘れなく。
- ライブラリのコピーと登録
プロジェクトにlibフォルダを追加します。
ダウンロードしたファイルを解凍して出てきた GoogleAdMobAdsSdk-4.0.4.jar をlibフォルダにコピーします。その後、ビルド・パス→ビルド・パスの構成→ライブラリー→JARの追加でファイルをプロジェクトに追加します。
※ライブラリをプロジェクト外において、ビルド・パス→ビルド・パスの構成→ライブラリー→外部JARの追加でもできるはずです。
- Manifest
AndroidManifest.xmlの変更点は次の2つだけです。
- <application>タグ内にActivityを追加します。
- <activity android:name="com.google.ads.AdActivity"
- android:configChanges="keyboard|keyboardHidden|orientation">
- </activity>
<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation">
</activity>
- permissionを2つ追加します。元からこれらのpermissionがある場合はなにもしません。
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- Layoutの修正
広告を表示したいViewに広告用のLinearLayoutを追加します。追加したLinearLayoutは、あとでプログラムで参照するのでIDをつけます。IDの名前はなんでも構いません。たとえばこんな感じ。 - <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent" android:layout_height="fill_parent">
-
- <LinearLayout android:id="@+id/admob"
- android:layout_width="fill_parent" android:layout_height="wrap_content"
- android:layout_alignParentTop="true" />
-
- <TextView android:id="@+id/header"
- android:layout_width="fill_parent" android:layout_height="wrap_content"
- android:layout_below="@+id/admob"
- android:gravity="center"
- android:text="Header" />
- ....
- </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<!-- 広告表示用のLinearLayout -->
<LinearLayout android:id="@+id/admob"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_alignParentTop="true" />
<!-- ここから下は任意 -->
<TextView android:id="@+id/header"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_below="@+id/admob"
android:gravity="center"
android:text="Header" />
....
</RelativeLayout>
ここで追加したのは6~8行目で、この例ではViewの一番上に広告が表示されるようにLayoutしてみました。
ここで重要なのは広告用のLinearLayoutがView内に追加されることです。
※LinearLayoutでなくとも良いような気もしますが、深く考えずに…。
- codeの追加
広告を表示するActivityのonCreateあたりに広告用のコードを追加します。
ここでやるべきことは2つだけです。
- AdViewを作成して先程追加した広告用のLinearLayoutにaddViewします。
- AdRequestを作成してAdViewの広告読み込みを開始させます。
具体的には次のような感じになります。
- private final static String AD_UNIT_ID = "...............";
-
-
- @Override protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
-
- AdView adView = new AdView(this, AdSize.BANNER, AD_UNIT_ID);
- LinearLayout layout = (LinearLayout)findViewById(R.id.admob);
- layout.addView(adView);
-
- AdRequest request = new AdRequest();
-
-
- adView.loadAd(request);
- ...
- }
private final static String AD_UNIT_ID = "...............";
//AdModからもらったパブリッシャーID
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //広告用のLinearLayoutを含むLayout
//AdMob
AdView adView = new AdView(this, AdSize.BANNER, AD_UNIT_ID); //広告Viewを作成
LinearLayout layout = (LinearLayout)findViewById(R.id.admob); //LinearLayoutを探す
layout.addView(adView); //広告Viewを追加
AdRequest request = new AdRequest(); //広告のリクエストを作成
//request.setGender(Gender.FEMALE); //いろんな設定がここでできる。
//request.setTesting(true); //Debug Mode リリース時は外す!
adView.loadAd(request); //リクエスト発行
...
}
AdRequestに設定するパラメータで広告のターゲッティングなどが行えるようです。
AdRequestの設定関係Methodには次のようなものがあります。
.setBirthday("20110503");
誕生日を設定?
.setGender(AdRequest.Gender.FEMALE or AdRequest.Gender.MALE );
性別を設定。
.setLocation(Location location);
位置の設定。
.setKeyword("Keyword");
キーワードの指定。
※ちなみに条件を付けない方が広告の表示率が良いとか言う話を聞きます。
ということで、これだけでアプリに広告がでますよ~♪。