アドネットワークで、いろいろあるので、面倒(!?)なのでgoogleさんのとこに関係のあるadmobを使っていたのだけど、どうにもこうにもいかなくなったので、次なる手を打とうと思いました。
web上の評判を主観的に評価をしてみました。
アドネットワークで、いろいろあるので、面倒(!?)なのでgoogleさんのとこに関係のあるadmobを使っていたのだけど、どうにもこうにもいかなくなったので、次なる手を打とうと思いました。
web上の評判を主観的に評価をしてみました。
admobの状況は逐一変化をするようで、以前の記事のデータでは対応できなくなっていたので、
現状のadmobを組み込みを勉強します。
step1:admobに登録してコードとか.jarとかを取得
このstepに関しては、割りとどのブログでも説明してるので問題ないかと。
step2:admobを組み込んでpathを通す。
libsフォルダ(本当はなんでもいい。)を作成して、その中に.jarファイルをいれて、右クリックでadd to pathをする。
step3:admob用に権限を追加する
ネット経由でバナーを取得しているのと、おそらく地域を判別したりしているのかと思います。
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
step4:admobのアクティビティをマニフェストに追加する。
以前はここには項目が3つくらいだったのだけど、これを設定しないとダメなようです。
<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
step5:ここは個人的な方法です。
<LinearLayout android:id="@+id/adcontainer" android:layout_width="fill_parent" android:layout_height="wrap_content"></LinearLayout>
で位置を決めておく。
step6:step5で用意した対象にadmobを追加する。
LinearLayout _lay = (LinearLayout)findViewById(R.id.adcontainer); AdView adGoogle = new AdView(this, AdSize.BANNER, "a14fa263cda65f7"); _lay.addView(adGoogle); AdRequest adr = new AdRequest(); adGoogle.loadAd(adr);
これで表示ができます。
が、ここで、問題が発生しました。
step4のconfigChangeのなかにscreenSize|smallestScreenSizeが入らない。という問題が発生しました。
どうやらadmobの方で、androidのSdkVersion:13以降でなくては、対応できない項目のようで、このままではエラーが出てしまいました。
また、androidのminSdkVersion:13にすると、android3.2くらいからの対応になるので、現在のスマホの事情(2.3.xが一般的)には合わないです。
で、ここではminSdkVersionと、アプリ開発のバージョンを違うものを設定する事ができるようです。
(今回はしれっと使ってみますが、個人的には、使えない関数とかもコードヒントとかで出てしまうのではないかと、ちょっと詳細を調べたいのですが)
開発の最初にバージョンの指定をするところで、現在最新の15を選ぶなどをすると、eclipseandroidの4対応仕様bになってくれます。
で、開発がある程度進んでしまっている場合には、
eclipseのマニフェストの下に、project.propertiesというファイルがあります。このファイルのなかにtarget=android-7とかの項目があるので、target=android-15とかに変更してみてください。
一方で、minSDKのバージョンを8に設定したりできます。
これでパブリッシュをすれば、androidのバージョンが2.3の端末でも問題なく
admobが表示されました。
前の時点でも、古い情報が多く苦戦したのですが、相変わらず変更を重ねてきてめんどうくさいです。
以上です。
AdMobを組み込んでみたいと思います。
アプリに広告をいれる事は賛否が分かれる事ではありますが、開発自体がモチベーションであればよいのですが、より高くモチベーションをもてるのであれば広告をいれてもよいと思っています。
広告をいれても尚、使ってもらえるアプリを目指した方が、作りっぱなしのものに勝るかな。。と。
AdMobは最初にデベロッパー登録をする必要があります。
より名前などを登録すれば簡単に登録が完了します。
[サイト/アプリケーションの追加]からAndroidアプリケーションクリックするとAdmobの発行の画面に移動できます。
ここからが問題なのですが、admobに関しては、最近仕組みが変更されたようで、以前のリファレンスや参考書が役に立ちません。
※2011年5月現在の情報を記載しています。
使ってはいけないデータは以下です。
com.admob.android.ads.AdView
を利用しているもの。
上記のpath自体が通らなくなっていて、利用しているクラスもことなります。
気をつけましょう。
新しい情報で役に立ったサイトは下記です。
Google AdMob Ads Android Fundamentals
Google AdMob Ads Android FundamentalsはaddViewで追加をしているので確認はしていないのですが、簡単に設置ができるようなので方法を記して見ます。
eclipseの設定画面からライブラリにadmobからダウンロードしたクラスファイルをいれます。または、プロジェクトファイル内にlibsディレクトリを作成してクラスファイルをいれ、右クリックをしてBuild pathを選んでパスを通します。
次のアクティビティをマニフェストに追加をします。
<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation"/>
マニフェストで次の2つのパーミッションを設定します。
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
マニフェストに関しても以前のadmobとは設定を変える必要があるので、古い情報を取得しないように気をつけてください。
メインのクラスファイルを下記の形でaddViewします。
import com.google.ads.*; public class BannerExample extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); AdView adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID); LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout); layout.addView(adView); adView.loadAd(new AdRequest()); } }
MY_AD_UNIT_IDにはadmobで発行されている、idを入れてください。上記でadmobが表示されるはずです。
layoutに組み込む場合には少し違う方法を利用します。
まず、values.xmlを作成します。
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="com.google.ads.AdView"> <attr name="adSize"> <enum name="BANNER" value="1"/> <enum name="IAB_MRECT" value="2"/> <enum name="IAB_BANNER" value="3"/> <enum name="IAB_LEADERBOARD" value="4"/> </attr> <attr name="adUnitId" format="string"/> </declare-styleable> </resources>
ここで変数の用意をしたら、メインのレイアウトファイルに次の記述をします。
<com.google.ads.AdView android:id="@+id/ad" android:layout_width="fill_parent" android:layout_height="wrap_content" ads:adUnitId="MY_AD_UNIT_ID" ads:adSize="BANNER" />
この時に上記を囲むレイアウトのタグには次の属性値を設定します。(linearlayoutなどに)
xmlns:ads="http://schemas.android.com/apk/res/(利用しているパス)"
上記でパスが通ります。
これで、レイアウト内にadmobが組み込まれますが、表示をする為にはrequestを行う必要があります。
AdView adGoogle = (AdView)this.findViewById(R.id.ad); AdRequest adr = new AdRequest(); adGoogle.loadAd(adr);
でonResume()で呼び出したりすれば、表示がされるはずです。
しかし、ここで「表示されるはず」となってしまうのは、テスト環境だと、admobが反応しない為です。
テスト環境で、確認をする為には、AdRequestを次のようにテストモードに設定をしてあげれば表示がされます。
adr.setTesting(true);
以上でadmobの組み込みが完了しました。