2011-02 << 2011-03 >> 2011-04

2011-03-18 (金)

*[Android] AdMob SDKが新しくなったので使ってみた

昨日,AdMobの広告を拙作のニコニコPlayer(仮)に入れてみましたが,どうやらSDKが新しくなっているようです.

少し前にダウンロードしたSDKで実装していたのですが,新しいSDKも使ってみました.前より楽になってますが,説明が少ないので色々と嵌りそうです.

パッケージ名が,com.admob.android.ads から com.google.ads になって,インターフェイスもかなり変わってます.なんとなくですが,全部作り直したんじゃないかと思います.

嵌るといえば,最新のSDKどうやってダウンロードするのかよく忘れてしまいます.各アプリケーションの「設定の管理」に行って「パブリッシャー コードを取得」を選べば,SDKをダウンロードできます.前はPDF等もおいてましたが,今はSDKのzipがあるだけのようです.

変わったところ

全体的にシンプルな作りになってjarのサイズも小さくなりました.

  • com.admob.android.ads が com.google.ads に
  • AdManagerが無い
  • 明示的に loadAdsなどを呼ぶ必要がある
  • android.permission.ACCESS_NETWORK_STATEが必須に(?)
  • Publisher ID などは AdViewのコンストラクタに渡すように(?)
  • XML類の記述は少なくなった

AdManagerが無いので,テストデバイスどうやって登録するのか不明です.AdRequest.setTesting()で設定できそうですが,エミュレータでないと有効にならない模様です.

jarの中を見たところ,com.google.ads.InstallReceiverもありますが,説明が出てくるまでは触らないで置く.

AdViewのインスタンスに色々わたさないといけないのが少し不便.もしかしたら,xmlから指定できるのかもしれませんが,説明が一切無いので不明.

導入メモ

AdMobのアカウントを登録済みであることが前提です.まだの人は下のURLからアカウントを作成し,アプリケーションも登録しましょう.支払い情報などは後回しでも良いです.

http://jp.admob.com/

ダウンロードしたzipの中のドキュメントが全く役に立たなそうで焦りますが,基本的には,Google Code上の説明を読めば分かるようです(英語ですが).

http://code.google.com/mobile/ads/docs/android/

まず,GoogleAdMobAdsSDK-4.0.2.jar をプロジェクトに追加し,ビルドパスに加えておきます.Eclipseならファイルをドラッグ&ドロップで追加してビルドパスの設定をするだけです.

permissionはINTERNETとACCESS_NETWORK_STATEが必要らしいので,AndroidManifest.xmlのmanifest直下に追加します.

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

あと広告用のActivityもManifestのapplication内に追加します.


		<activity android:name="com.google.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation"/>

説明では,Activityの中でAdViewのインスタンスを生成していますが,広告用のコードは混ぜたいとは思わないので,AdViewを継承したViewを作って中で全部やることにします.

package net.binzume.android.adtest;

import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;

public class MyAdView extends AdView {
    static final String MY_AD_UNIT_ID = "***PUBLISHER ID***";

    public MyAdView(Context context, AttributeSet attrs) {
        super((Activity) context, AdSize.BANNER, MY_AD_UNIT_ID);
    }

    protected void onFinishInflate() {
        AdRequest request = new AdRequest();
        request.setTesting(true);
        super.loadAd(request);
    }

}

地域の指定や,ユーザーの属性などの指定をするなら,それもここで.もしかしたら,全部コンストラクタで良いかもしれない.

あとは,layoutのXMLに適当に

<net.binzume.android.adtest.MyAdView
	android:id="@+id/ad"
	android:layout_weight="0"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	/>

みたいなのを書いてビューを追加.もちろんパッケージ名は自分のアプリケーションにあわせて変えてください.

これで,エミュレータで実行するとテスト用の広告が出るようになります.

課題

実機でテスト広告を出す方法は分からないのが今後の課題.テストモード以外だと,たまにしか広告が表示されないので確認が面倒です.

まだSDKが新しくなったばかりで,情報が少ない上に,今後色々変わりそうな予感.

2011-02 << 2011-03 >> 2011-04