2019/02/06
G様は仕様がころころ変わるので大変です。
AndroidアプリにAdMobを実装する方法という記事でAdMobの実装方法を忘備録がてら解説していたのですが、いつの間にかやり方が変わってました。
今回は、2016年8月現在のAdMob実装方法を分かりやすく解説したいと思います。
なお、本記事は執筆時点のものであり、各ツールのバージョン等はGet Started in Android Studio | AdMob by Google | Firebaseにて最新の情報を確認することをお勧めします。
sponsored link
もくじ
AdMobとは?
AdMobというのはアプリ用の広告バナーのことです。webサイトでいうアドセンスです。
クリック単価もそこそこ良いので、アプリの収益化には欠かせません。
AdMobを実装するためにするべきこと
以下の手順でAdMobを実装していきます。
- Google Playにアプリを公開する
- AdMobのサイトでアプリを登録する
- google-services.jsonを設置する
- 外部ライブラリをインポートする
- 広告表示スペース(AdView)を設置する
- パーミッションを設定する
- 広告を読み込む
※アプリ(プロジェクト)のminimum SDKはAPIレベル9(Android2.3)以降であることが必須です。
Google Playにアプリを公開する
広告が配信されるのはGoogle Playに登録されているアプリだけなので、まずは先にアプリをGoogle Playに登録する必要があります。
既に登録しているアプリに広告を載せたい場合は、次へ進んで下さい。
これからGoogle Playにアプリを登録する場合は、アプリを公開する | Android Developersを参考にしてください。いきなり丸投げで申し訳ないですw
難しくないと思うので、登録できたら戻ってきて下さい。
ちなみに初めて登録する場合、デベロッパー(開発者)として登録するのに25ドル必要です。
AdMobのサイトでアプリを登録する
Google Playにアプリを登録・公開したら、そのアプリをAdmobのサイトに登録します。
AdMobにアクセスしてGoogleアカウントでログインして下さい。
新しいアプリを収益化をクリックします。
開発者名やアプリ名で検索するなりして、Google Playに登録されている膨大なアプリの中から自分のアプリを探しだしましょう。
アプリを選択したら、続行をクリックします。
ここでは例としてバナー型の広告を作りますので、バナーをクリックしましょう。すると広告の設定欄が開きますが、設定は特に理由がなければそのままの方がいいです。広告ユニット名の欄に適当な広告ユニット名を入力して、保存をクリックします。
Firebaseとリンクしておくかどうか選択できます。Firebaseを使えばいろいろ解析できるようなので、リンクしておいて損はないと思います(僕は使ったことないのでよく知りません)。
Firebaseとリンクが完了すると、このような画面になると思いますので、こちらというところをクリックして、google-services.jsonという設定ファイルをダウンロードします。
google-services.jsonは、後で使いますので大事にどこかに置いておいて下さい。
Google Mobile Ads SDKをダウンロードしてくださいと書いていますが、このリンク先ではダウンロードできませんし、する必要はありません。
ここというリンクからでもgoogle-services.jsonをダウンロードすることが出来ます。既にDLした場合はもちろん改めてDLする必要はありません。
完了をクリックしたら、アプリの登録は完了です。
google-services.jsonを設置する
Android Studioを起動して、プロジェクト編集画面を開いてください。
先ほどダウンロードしたgoogle-services.jsonをプロジェクト内のappディレクトリ直下に設置します。
コピペで設置するので、まずgoogle-services.jsonをコピーしておいてください。
Project ViewをProjectに変更します。
appディレクトリに(コピーしたgoogle-services.jsonを)ペーストします。
コピーの確認ダイアログが出るので、OKをクリックします。
appディレクトリ直下にgoogle-services.jsonが設置できたのを確認してください。
外部ライブラリをインポートする
続いて、必要な外部ライブラリをインポートする為に、build.gradleという設定ファイルを編集します。
build.gradleはプロジェクト内に2つあります。
トップレベルのディレクトリ直下にあるProjectレベルbuild.gradleと、appディレクトリ直下にあるappレベルbuild.gradleです。
まずはProjectレベルbuild.gradleを編集します。
以下のようにdependenciesセクションの中に、緑字の一行を挿入します。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.google.gms:google-services:3.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
...省略...
間違いなく挿入できたら、同期しておきます。
次にappレベルbuild.gradleを編集します。
以下の緑字の部分をそれぞれの場所に挿入して下さい。
...省略... dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.google.firebase:firebase-ads:9.2.1' } apply plugin: 'com.google.gms.google-services'
間違いがないことを確認して、先ほどと同じように右上の同期ボタンをクリックしておきましょう。
これで必要な外部ライブラリが勝手にインポートされているはずです。Project ViewのExternal Librariesを開いて確認してみてください。
広告表示スペース(AdView)を設置する
続いて、アプリの画面に広告を表示するスペースを設置しましょう。
AdViewという広告を表示する為のビューを設置します。
広告を表示したい画面のレイアウトファイル(xml)を開いて、Textタブをクリックして、xmlを直接編集できる状態にしてください。
↓これがAdViewソースコードです。
<com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="@string/banner_ad_unit_id"> </com.google.android.gms.ads.AdView>
このコードを、適当な場所に貼り付けます。
※デフォルトでは画面下部に表示されるようにプロパティが設定されていますので、必要があればプロパティを調整してください。
AdViewのコードを貼り付けると、以下のようにエラーが発生して赤字になる部分があると思います。
2つのエラーが発生しています。
- 名前空間の接頭辞(ads)が宣言されていない
- String参照先のデータがない
これらを1つずつ解決しましょう。簡単です。
まずは接頭辞の宣言です。
xmlns:ads="http://schemas.android.com/apk/res-auto"
を、トップレベルのビュー(RelativeLayout等)のプロパティに挿入します。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.nobuo.create.quickredial.MainActivity">
...省略...
こんな感じです。これでadsという接頭辞が認識されてエラーが消えたと思います。
もう一つのエラーであるString参照のデータについて。
ads:adUnitId="@string/banner_ad_unit_id"
このads:adUnitIdというプロパティには、広告ユニットIDを入れる必要があるのですが、値は@string/banner_ad_unit_idとなっていますね。
@string/banner_ad_unit_id
↑この表記は、strings.xmlというリソースファイルに書かれた値を参照する為の記述です。banner_ad_unit_idというkeyで値を参照しているのですが、strings.xml内にbanner_ad_unit_idというkeyを持つ値が存在しない為にエラーが起きているというわけです。
strings.xmlはres/valuesディレクトリにありますので、見てみましょう。Project ViewをAndroidにした方が探しやすいと思います。
strings.xmlが見つかったら、開いてください。
strings.xmlに以下の一行を挿入します。
<string name="banner_ad_unit_id">広告ユニットID</string>
広告ユニットIDは、AdMobのサイトの収益化というページに載っていますのでコピペしましょう。
数字部分だけではなく、ca-app-pub-も含めて広告ユニットIDです。
表示の設定方法というところを開くとそれっぽい文字列がありますが、これじゃないので要注意!
strings.xmlはこんな感じになります。↓
これで@string/banner_ad_unit_idが、この広告ユニットIDを参照するようになって、AdViewのエラーが消えるはずです。
パーミッションを設定する
広告を読み込むにはネット接続が必要なので、その為のパーミッションを設定しておきます。
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
↑この2行をマニフェストファイル(AndroidManifest.xml)に挿入します。
こんな感じでapplicationタグの上に挿入しましょう。
これでパーミッションの設定は完了です。
広告を読み込む
最後に広告を読み込む処理を実装します。広告を表示したいActivity(MainActivity.java等)を開いて下さい。
クラスのフィールドとしてAdViewオブジェクトを宣言しておきます。
インポートは、alt + Enter(Macならoption+Enter)でも行うことができます。
onCreateメソッド内で、広告を読み込みます。
まず以下の一行をonCreateメソッド内の最後の方にでも、コピペして下さい。
MobileAds.initialize(getApplicationContext(), getResources().getString(R.string.banner_ad_unit_id));
コンパイルエラーになると思うので、その部分にポインターを当てた状態でalt + Enter(Macならoption+Enter)を押してMobileAdsクラスをインポートします。
続いて、以下の3行を追加しましょう。
mAdView = (AdView) findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest);
同様にコンパイルエラーになると思うので、alt + Enter(Macならoption+Enter)で、AdRequestクラスをインポートします。
onCreateメソッドはこんな感じになります。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
MobileAds.initialize(getApplicationContext(), getResources().getString(R.string.banner_ad_unit_id));
mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
これで広告が表示されるようになりました。が、あともう少しです。
このアクティビティのライフサイクルに合わせて広告を読み込んだりストップしたりするように、以下のようにコールバックメソッドをオーバーライドしておきましょう。
@Override public void onPause() { if (mAdView != null) { mAdView.pause(); } super.onPause(); } @Override public void onResume() { super.onResume(); if (mAdView != null) { mAdView.resume(); } } @Override public void onDestroy() { if (mAdView != null) { mAdView.destroy(); } super.onDestroy(); }
お疲れ様でした。これで完了です。
広告が配信されるまで時間がかかる場合もあるようなので、問題なく広告が表示されるかどうかはエミュレータで確認することをおすすめします。エミュレータなら自動的にテスト用の広告が表示されるようです。
しばらく大きなアップデートがないことを祈るばかりです。
今だけ→転職できなければ全額返金の「エンジニア転職保証コース」
絶対エンジニアになる!→テックエキスパート
フリーランスエンジニアの収入例を見てみる→レバテックフリーランス
コメント
[…] ・Andoroid https://nobuo-create.net/admob-2016/ […]
by アプリに広告を設置する方法 – KOHIMOTO LABO 2019/03/05 17:54