一番かんたんなJava入門

これからJavaを始めようという人の為の超入門サイトです。丁寧、簡単にこだわった解説なので初心者にぴったりです。

Androidアプリ用広告 AdMobの実装方法[2016年8月版]

time 2016/08/02

 G様は仕様がころころ変わるので大変です。

 AndroidアプリにAdMobを実装する方法という記事でAdMobの実装方法を忘備録がてら解説していたのですが、いつの間にかやり方が変わってました。

 今回は、2016年8月現在のAdMob実装方法を分かりやすく解説したいと思います。

 なお、本記事は執筆時点のものであり、各ツールのバージョン等はGet Started in Android Studio  |  AdMob by Google  |  Firebaseにて最新の情報を確認することをお勧めします。

sponsored link

AdMobとは?

 AdMobというのはアプリ用の広告バナーのことです。webサイトでいうアドセンスです。

 クリック単価もそこそこ良いので、アプリの収益化には欠かせません。

AdMobを実装するためにするべきこと

 以下の手順でAdMobを実装していきます。

  1. Google Playにアプリを公開する
  2. AdMobのサイトでアプリを登録する
  3. google-services.jsonを設置する
  4. 外部ライブラリをインポートする
  5. 広告表示スペース(AdView)を設置する
  6. パーミッションを設定する
  7. 広告を読み込む

※アプリ(プロジェクト)のminimum SDKはAPIレベル9(Android2.3)以降であることが必須です。

Google Playにアプリを公開する

 広告が配信されるのはGoogle Playに登録されているアプリだけなので、まずは先にアプリをGoogle Playに登録する必要があります。

 既に登録しているアプリに広告を載せたい場合は、次へ進んで下さい。

 これからGoogle Playにアプリを登録する場合は、アプリを公開する | Android Developersを参考にしてください。いきなり丸投げで申し訳ないですw

 難しくないと思うので、登録できたら戻ってきて下さい。

 ちなみに初めて登録する場合、デベロッパー(開発者)として登録するのに25ドル必要です。

AdMobのサイトでアプリを登録する

 Google Playにアプリを登録・公開したら、そのアプリをAdmobのサイトに登録します。

 AdMobにアクセスしてGoogleアカウントでログインして下さい。

AdMob11-1
 新しいアプリを収益化をクリックします。

AdMob12
 開発者名やアプリ名で検索するなりして、Google Playに登録されている膨大なアプリの中から自分のアプリを探しだしましょう。

AdMob13
 アプリを選択したら、続行をクリックします。

AdMob14-1
 ここでは例としてバナー型の広告を作りますので、バナーをクリックしましょう。すると広告の設定欄が開きますが、設定は特に理由がなければそのままの方がいいです。広告ユニット名の欄に適当な広告ユニット名を入力して、保存をクリックします。

AdMob15-1
 Firebaseとリンクしておくかどうか選択できます。Firebaseを使えばいろいろ解析できるようなので、リンクしておいて損はないと思います(僕は使ったことないのでよく知りません)。

AdMob16
 Firebaseとリンクが完了すると、このような画面になると思いますので、こちらというところをクリックして、google-services.jsonという設定ファイルをダウンロードします。
 google-services.jsonは、後で使いますので大事にどこかに置いておいて下さい。

AdMob17-1
 Google Mobile Ads SDKをダウンロードしてくださいと書いていますが、このリンク先ではダウンロードできませんし、する必要はありません。
 ここというリンクからでもgoogle-services.jsonをダウンロードすることが出来ます。既にDLした場合はもちろん改めてDLする必要はありません。
 完了をクリックしたら、アプリの登録は完了です。

google-services.jsonを設置する

 Android Studioを起動して、プロジェクト編集画面を開いてください。

 先ほどダウンロードしたgoogle-services.jsonをプロジェクト内のappディレクトリ直下に設置します。

 コピペで設置するので、まずgoogle-services.jsonをコピーしておいてください。

studio11
 Project ViewをProjectに変更します。

studio12
appディレクトリに(コピーしたgoogle-services.jsonを)ペーストします。

studio13
 コピーの確認ダイアログが出るので、OKをクリックします。

studio14
 appディレクトリ直下にgoogle-services.jsonが設置できたのを確認してください。

外部ライブラリをインポートする

 続いて、必要な外部ライブラリをインポートする為に、build.gradleという設定ファイルを編集します。

 build.gradleはプロジェクト内に2つあります。
studio15
 トップレベルのディレクトリ直下にある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
    }
}

...省略...

 間違いなく挿入できたら、同期しておきます。
studio16

 次に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を開いて確認してみてください。
studio20

広告表示スペース(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のコードを貼り付けると、以下のようにエラーが発生して赤字になる部分があると思います。
studio17
 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にした方が探しやすいと思います。

studio18
 strings.xmlが見つかったら、開いてください。

 strings.xmlに以下の一行を挿入します。

<string name="banner_ad_unit_id">広告ユニットID</string>

 広告ユニットIDは、AdMobのサイトの収益化というページに載っていますのでコピペしましょう。

AdMob18
 数字部分だけではなく、ca-app-pub-も含めて広告ユニットIDです。

AdMob19
 表示の設定方法というところを開くとそれっぽい文字列がありますが、これじゃないので要注意!

 strings.xmlはこんな感じになります。↓
studio19
 これで@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)に挿入します。

studio22
 こんな感じでapplicationタグの上に挿入しましょう。

 これでパーミッションの設定は完了です。

広告を読み込む

 最後に広告を読み込む処理を実装します。広告を表示したいActivity(MainActivity.java等)を開いて下さい。

 クラスのフィールドとしてAdViewオブジェクトを宣言しておきます。
studio21
 インポートは、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();
}

 お疲れ様でした。これで完了です。

 広告が配信されるまで時間がかかる場合もあるようなので、問題なく広告が表示されるかどうかはエミュレータで確認することをおすすめします。エミュレータなら自動的にテスト用の広告が表示されるようです。

 しばらく大きなアップデートがないことを祈るばかりです。

専門学校に通うより絶対お勧め!オンラインプログラミングスクールまとめ

sponsored link

Androidアプリを作ろう

down

コメントする



CAPTCHA


一番かんたんなJava入門

Androidアプリの作り方

忘備録

私の作ったAndroidアプリ

私の作ったWordPressテーマ

プロに教わるオンライン学習

管理人

Nobuo_CREATE

Nobuo_CREATE

WordPressテーマPrinciple、マテリアルを作ったり、Androidアプリを作ったり、Java入門サイトを作ったり、本を書いたりしています。どうぞよろしく。 [詳細]



sponsored link

オススメ書籍

[オススメpoint]

 この本は全く何も分からない初心者の方にお勧めです。プログラミングをするには覚えなければならない事が無茶苦茶いっぱいありますが、この本は教えてくれる順番、その構成が素晴らしいです。RPGのゲームを作るというストーリーにのっとってちょっとずつ難しいことを教えてもらえます。
 無機質で膨大なデータが載っているような本は読む気にならないという方は、こういうストーリー仕立ての本でチャレンジしてみてはいかがでしょうか?(注:RPGを作る為の本ではありません。)

[オススメpoint]

 ある程度、Javaを読み書きできるようになったら、オブジェクト指向について学ぶべきです。本書は、抽象的で分かったような分からんようなオブジェクト指向について、非常に分かりやすい例を出して説明してくれています。オブジェクト指向とは何なのか?という本質を掴むのにこれほど適した本はないと思います。オブジェクト志向の理念を理解できれば、より効率のいいコードをより楽に書けるようになるはずです。Java上級者を目指すなら必読の一冊!

只今、急拡大中

ゲームを作りたい人専門

JavaからのRuby on Rails入門

JavaからのRuby on Rails入門

COBOLからのJAVA習得