2019/02/06
この記事の情報は古いです。最新の情報はこちら→Androidアプリ用広告AdMobの実装方法[2016年8月版]
sponsored link
もくじ
AdMobの実装方法がややこしいぞ
AdMobってAdSenseとの絡みもあってか、ここ数年ころころ変わってますよね。
正直、何がどうなってるのかわけ分りませんが、先日(2014年4月)、やっとの思いで新しいアプリにAdMobを実装することができたので、防備録として記しておきます。
Google Mobile Ads SDK — Google Developersに、一通りやり方が書いてあります。
けど、これ読んでパッと出来る人居るのか?!っていうぐらい難解です。え?そんなことない??まあいい、自分用の防備録じゃい。
AdMobを実装する為にやること
まず全体の流れを確認。
- AdMobのアカウントを作る
- Google Play Servicesを使えるようにする
- AndroidManifest.xmlをいじる
- レイアウトxmlに広告表示枠を作っておく
- AdMobにアプリを登録する
- Activityに広告を表示させるコードを書く
1.AdMobのアカウントを作る
これはもちろん、アカウントを持っていない人は作りましょうって話です。持ってる人は次行きましょう。
持ってない人は、AdMob を活用してモバイルで宣伝 – アプリのためのモバイル広告 – グーグル広告で、アカウントを作って下さい。
2.Google Play Servicesを使えるようにする
前まではjarファイルを読み込んでとかってやってましたが、最新のやり方ではjarファイルは要りません。その代わり、Google Play Servicesライブラリをworkspace内にインポートして参照する必要があります。
Google Play Servicesをインストール
Google Play ServicesをAndroid SDKマネージャーを使ってインストールします。
eclipseのウィンドウ→Android SDKマネージャーをクリック。
下の方のExtrasの中にGoogle Play Servicesというのがあると思うのでそれにチェックを入れて右下のインストールボタンを押してインストールします(もちろん既にインストールしてある人は次行きましょう)。
Google Play Servicesプロジェクトをインポート
今度はworkspace内にGoogle Play Servicesプロジェクトをインポートします。
eclipseのファイル→インポートをクリックします。
Androidフォルダの中のExisting Android Code Into Workspaceを選択した状態で次へをクリック。
参照をクリックして、先ほどインストールしたGoogle Play Servicesライブラリを指定するのですが、
Android SDKをどこにインストールしているか覚えてますか??Android SDKのディレクトリから以下のディレクトリを辿っていきます。
\android-sdk\extras\google\google_play_services\libproject
最終的に、libprojectというディレクトリを選択した状態でOKをクリック。
google-play-services_libというプロジェクトを選択できるはずですので、それにチェックを入れて完了をクリック。
プロジェクトをインポートできたら、eclipseのパッケージ・エクスプローラーの中に、google-play-services_libというプロジェクトが表示されます。
Google Play Servicesを参照する
今度は、広告を表示しようとしているアプリのプロジェクトから、google-play-services_libを参照させます。
プロジェクトを右クリックしてプロパティをクリック。
Androidをクリックして、追加ボタンをクリック。
プロジェクトの選択という欄にgoogle-play-services_libがあると思うので、それを選択して右下のOKをクリック。
ライブラリーにgoogle-play-services_libが追加されているのを確認して、OKをクリック。
これで、アプリからgoogle-play-services_libを使える状態になりました。
3.AndroidManifest.xmlをいじる
meta-data タグを追加する
AndroidManifest.xmlの<application>と</application>の中に、以下のようにmeta-dataタグを追加します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company"
android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:debuggable="true">
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<activity android:label="@string/app_name" android:name="BannerExample">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
com.google.android.gms.ads.AdActivity を追加する
AndroidManifest.xml内で、com.google.android.gms.ads.AdActivityを宣言します。
AndroidManifest.xmlには、アプリで使うActivity(画面)の数だけ<activity>~</activity>が書いてある(宣言している)はずですので、その一番下にでも以下のように追加しておけばいいです。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/> <activity android:label="@string/app_name" android:name="BannerExample"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> </application> </manifest>
パーミッションを追加する
広告を取得するために必要なパーミッションをAndroidManifest.xmlで宣言しておきます。
宣言する必要があるのは、以下の2つです。
●android.permission.INTERNET
●android.permission.ACCESS_NETWORK_STATE
以下のように、追記すればOKです。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/> <activity android:label="@string/app_name" android:name="BannerExample"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> </application> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> </manifest>
4.レイアウトxmlに広告表示枠を作っておく
レイアウトxmlで、広告を表示する為の空っぽのスペースを確保しておきます。
idはlayout_adにしています。
<LinearLayout android:id="@+id/layout_ad" android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignParentBottom="true" android:background="#999" android:orientation="vertical" > </LinearLayout>
xmlファイル内でAdViewを宣言して追加する事もできますが、ここではjavaファイル内でAdViewを作成するようにしています。xmlファイル内で書いておくのはただの空っぽのスペースです。
もし、xmlファイルでAdViewを書いてしまうやり方でやりたい人は、バナー 1 – Google Mobile Ads SDK — Google Developersを参考にしてください。
5.AdMobにアプリを登録する
アプリ内に広告を実際に表示するには、アプリをAdMobで登録して広告ユニットIDというのを取得する必要があります。
+新しいアプリを収益化をクリックします。
①アプリを手動で追加をクリック
②アプリ名を記入
③プラットフォームを選択(ここではAndroidを選択)
④アプリを追加をクリック。
①バナーをクリック
②広告ユニット名を適当に書く
③保存をクリック。
すると出ました。広告ユニットIDです。 これを広告を呼び出す際に使いますのでコピペするなりしてキープしておいて下さい。
6.Activity.javaに広告を表示させるコードを書く
ここまで出来たら、後はそれぞれ広告を表示したいActivityのjavaファイルに広告を読み込むコードを書くだけです。
package sample; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdSize; import com.google.android.gms.ads.AdView; public class MainActivity extends Activity { LinearLayout layout_ad;//広告表示用スペース AdView adView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); adView = new AdView(this); adView.setAdUnitId("広告ユニットID"); // 注1 adView.setAdSize(AdSize.BANNER); layout_ad = (LinearLayout) findViewById(R.id.layout_ad); layout_ad.addView(adView); AdRequest adRequest = new AdRequest.Builder().build(); adView.loadAd(adRequest); } @Override public void onPause() { adView.pause(); super.onPause(); } @Override public void onResume() { super.onResume(); adView.resume(); } @Override public void onDestroy() { adView.destroy(); super.onDestroy(); } }
注1)広告ユニットIDは、””で囲って文字列として引数に入れればOKです。
以上です。
分かりにくいところないかな?
今だけ→転職できなければ全額返金の「エンジニア転職保証コース」
絶対エンジニアになる!→テックエキスパート
フリーランスエンジニアの収入例を見てみる→レバテックフリーランス
コメント
わかり易すぎて涙がでました!
ありがとうございました。
by tok 2014/05/10 15:28
Googleの説明だけじゃ訳分らんでしょ?www
しかもころころ変わりますからね。
僕はかなり苦労しながらなんとか出来たので、頑張ってこの記事を書きました。お役に立ててよかったです。
ガンガン稼いじゃってくださーい。
by Nobuo@管理人 2014/05/11 00:21
AdMobに登録後、Google Mobile Ads SDKを途中までマニュアル(adsとGoogle Play service)を読んで導入していたのですが、両者の違いがだんだん分からなくなってこのサイトに来ました。
分かりやすくて、参考にさせていただきました。
ありがとうございます。
by Good! 2014/05/30 20:37
そうでしょ。
アレ、ややこしすぎますよね。お役に立てて何よりです。
by nobuo@管理人 2014/05/30 22:30
[…] 参考 […]
by AdMob広告を表示する | skelaboメモ 2014/07/11 17:21
[…] このサイトを参考にした。 http://nobuo-create.net/admob/ […]
by Google Play 開発者サービスのライブラリ読み込み | JANEのスペース 2014/07/20 23:56
ようやくわかりやすいサイトを発掘できた・・・!!!
けど、Unfortunlyなんとかなんとかで起動できない…。
(´;ω;`)
by mimimi 2014/08/25 21:24
マジで最高です。
こういう記事書いてくれる人は本当にありがたい。
by Delnikov 2014/12/02 19:39
そういうコメント書いてくれるのも本当にありがたいです。^^
ありがとうございます。
by Nobuo@管理人 2014/12/02 23:15
一時的に広告を消したい時はpause等で大丈夫なのでしょうか?
by rmr 2015/02/16 08:16