2011年10月13日木曜日

admobを組み込む

■ admobに登録する

Androidアプリの広告として、もっともメジャーなのが、Google傘下のadmobだと思います。adSenseに統一したいところですが、今のところ一般開発者向けには開けてないようで・・・。

ではさっそく登録から始めます。とは言っても、普通にメールアドレス等を入力してアカウントを取るだけです。

その後、アプリに組み込む為に、「サイト/アプリケーションの追加」からAndroidアプリを選択します。

選択すると、アプリ名や公開時のアドレス等を入力します。公開時のアドレスは、未公開時は予定するアドレスを入力するか最悪適当に入れておいて後で変更できます。

入力後、次へを押下で上記画面になります。この時、adMobSDKをまだ取得していない場合(最初はみんな取得していないのですが)、SDKをダウンロードしておきましょう。

追加が済むと、上記のように追加されます。ステータスが赤くなっていますが、これはまだアクティブになっていませんよ。ということです。アクティブ(広告表示要求が出た後)になると緑色になります。

この追加作業の途中でパブリッシャーIDなるものが表示されます。組み込む時に必要なので、控えておきましょう。もちろん後で上記画面「設定を管理」よりIDを確認することができます。

この他、入金方法の設定等の作業があります。現在、adMobでは、小切手で受け取る方法とPaypalを用いて受け取る方法があります。わしは小切手ってよくわからないので、Paypalにしましたが、後でも変更できるのでとりあえず。

■ SDKを組み込む

まず最初の作業として、adMobSDKを組み込みます。先にダウンロードしたSDKを解凍すると、admob-android-sdk.jarファイルが出てきますが、これをadMobを入れたいプロジェクトの下に「lib」のフォルダを作成し、そこに入れます。

その後、jarファイルを右クリックし、「ビルド・パス」から「外部アーカイブの追加」を選択し、ライブラリ化します。

これでSDKの組み込みは終了です。

■ adModを組み込む

さて、ここからadMobをアプリに組み込んでいきます。まずはAndroidManifest.xmlからパーミッションを追加します。

<uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
INTERNETさえあればOKなんですが、LOCATIONによる広告の最適化を利用したいので、下二つのパーミッションも有効にします。

さらに</apprication>の前に

<meta-data android:name="ADMOB_PUBLISHER_ID" android:value="メモしたID"/>

</application>
を追記しましょう。ここでメモしたIDを入力します。これでマニフェストファイルは終了です。

次に/res/valuesにattr.xmlを追加します。中身は以下です。

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <declare-styleable name="com.admob.android.ads.AdView">
 <attr name="backgroundColor" format="color" />
 <attr name="primaryTextColor" format="color" />
 <attr name="secondaryTextColor" format="color" />
 <attr name="keywords" format="string" />
 <attr name="refreshInterval" format="integer" />
 <attr name="isGoneWithoutAd" format="boolean"/>
 </declare-styleable>
</resources>
何も考えず、そのままコピペ・・・。

最後に追加したいレイアウトに以下を追加します。

<com.admob.android.ads.AdView
 android:id="@+id/ad"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 myapp:backgroundColor="#000000"
 myapp:primaryTextColor="#FFFFFF"
 myapp:secondaryTextColor="#CCCCCC"
 myapp:refreshInterval="13"
 />
Viewクラスと同じ扱いです。ちなみに、軽いアプリはこれでOKですが、処理が重いアプリ、もしくはレイアウトをxmlを使わない場合は、ソース(javaファイル)でAdViewをaddしてやってください。

ちなみにですが、adMobは決して表示率がいいほうではありません。レイアウトの一部として利用する場合は注意が必要です。割り切ってRelativeLayoutで作成し、その中にadViewを入れてやるのが個人的オススメです。

表示率の問題で表示されない件の対応として、テストする場合は、以下のコードをActivityのonCreateに入れると表示されるようになります。

AdManager.setTestDevices( new String[] {
 AdManager.TEST_EMULATOR,
 });
さて、ここまでで表示されるようになるのですが、実は、わしはこれだけでは全く表示されませんでした。で、logcatを確認すると、「ManifestにadMobアクティビティーを追加して!」というメッセージが・・・・。しようがないので、以下Activityを追加しました。

<activity android:name="com.admob.android.ads.AdMobActivity"
 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
 android:configChanges="orientation|keyboard|keyboardHidden"
 />
で、ようやく表示までこぎつけました。

実際、テストモードを外すとほとんど表示されません。logcatで確認すると、「No fill.  Server replied that no ads are available」と出ており、表示する広告がないと・・・。

adMobではこのような場合の為にさまざまな設定が用意されています。個人開発者の場合、他に宣伝することもないんですけどね・・・。

 

 

0 件のコメント:

コメントを投稿