🍌

AndroidアプリのAdMobを使ったバナー広告の実装

2022/08/03に公開

はじめに

AndroidアプリでAdMobを使ったバナー広告を実装したので、手順を投稿します。関連する筆者の記事ではプロダクトフレーバーを使って無料版アプリにのみバナー広告を表示する実装を紹介しています。

関連する筆者の記事

  1. プロダクトフレーバーを使った有料版アプリと無料版アプリの実装
  2. AndroidアプリのAdMobを使ったバナー広告の実装(本記事)
  3. GitHub PagesでAdMobのapp-ads.txtを設定する

参考資料

本記事に関連するAndroidDevelopersのガイドは以下です。
https://developers.google.com/admob/android/quick-start
https://developers.google.com/admob/android/banner

バナー広告実装前の筆者の状態

  1. GooglePlayにアプリをリリース済み
  2. アプリはプロダクトフレーバーを使って有料版と無料版をリリースしている
  3. 無料版アプリにのみバナー広告を追加したい
  4. AdMobのアカウントは持っていない

1. AdMobにログインし、アプリを設定する

1.1. AdMobにログインする

AdMobにアカウントを作成してログインします。

1.2. 支払情報を登録する

サイドバーのお支払いから支払情報を登録します。この手順を行わないと、これ以降のアプリ登録を進めても、アプリの状態が「準備中」のまま進みません。登録の順序はアプリ登録の後に支払情報の登録を行っても構いません。

1.3. AdMobにアプリを登録する

1.3.1 アプリの追加を開始する

サイドバーのアプリからアプリを追加をクリックします。

1.3.2. アプリのプラットフォームとアプリストアへの登録状況を選択する

アプリのプラットフォームとアプリストアへの登録状況を選択します。筆者の場合はプラットフォームはAndroidで、アプリストアに登録済みとなります。

1.3.3. アプリストアからアプリを追加する

アプリストアから広告を追加する対象のアプリを検索して、アプリを追加します。

1.3.4 その他情報としてユーザー指標のオン、オフを選択する

その他情報ではユーザー指標のオン、オフを選択します。筆者はデフォルトのオンとしました。
以上でアプリ登録完了です。審査が終わりアプリの状態が「準備完了」となるのを待ちましょう。

1.4. 広告ユニットを追加する

ここからは広告ユニットの追加について説明します。アプリが複数のActivityでバナー広告を表示する場合は、Activityごとに異なる広告ユニットを指定することが推奨されています。全てのActivityで共通の広告ユニットを使い回すこともできますが、画面ごとの収益性の分析をするためにも、広告ユニットを分けることをお勧めします。筆者のアプリの場合、6個のActivityでバナー広告を表示するため、広告ユニットを6個追加しました。

1.4.1 広告ユニットの追加を開始する

サイドバーの広告ユニットから広告ユニットを追加をクリックします。

1.4.2 広告フォーマットを選択する

広告フォーマットを選択します。この記事では、バナー広告の説明を行います。

1.4.2 広告ユニットを設定する

広告ユニット名を入力します。ここではタイトル画面のActivity向けにタイトル画面バナー広告という名前を入力しています。詳細設定は全てデフォルトのままとしました。

上記の広告ユニットの追加手順を、広告を表示するActivityの数だけ繰り返します。以上でAdMobでの作業は完了です。続いてバナー広告の実装方法を説明します。

2. バナー広告を実装する

2.1 プロジェクトレベルのbuild.gradleにリポジトリを追加する

プロジェクトレベルのbuild.gradleのbuildscriptセクションとallprojectsセクションの両方に GoogleのMavenリポジトリとMavenセントラルリポジトリを追加します。

/build.gradle
buildscript {
    repositories {
        google()
        mavenCentral()
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

2.2 アプリレベルのbuild.gradleにGoogleMobileAdsSDKの依存関係を追加する

アプリレベルのbuild.gradleに依存関係を追加します。バージョンは最新のものを指定すると良いと思います。筆者の実装時点では21.0.0が最新でした。

app/build.gradle
dependencies {
  implementation 'com.google.android.gms:play-services-ads:21.0.0'
}

2.3 AndroidManifest.xmlにAdMobアプリIDを追加する

AndroidManifest.xmlにapplicationのmeta-dataとして、AdMobアプリIDを追加します。

AndroidManifest.xml
<manifest>
    <application>
        <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>

AdMobアプリIDはAdMobですべてのアプリを表示から取得することができます。

2.4 GoogleMobileAdsSDKを初期化する

筆者の場合、Applicationクラスでプロダクトフレーバーが無料版のfreeの場合にのみ初期化を行っています。詳細は関連する筆者の記事のプロダクトフレーバーを使った有料版アプリと無料版アプリの実装で紹介しています。

Application.kt
import com.google.android.gms.ads.MobileAds

...

@Override
public void onCreate(){
    super.onCreate()
    
    if(BuildConfig.FLAVOR == "free") {
        MobileAds.initialize(this)
    }
}

2.5 レイアウトリソースにAdViewを追加して、Activityで広告をロードする

ActivityのレイアウトリソースにAdViewを追加します。adUnitIdには広告ユニットIDを指定します。

activity_title.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    ...
    >
    <com.google.android.gms.ads.AdView
        xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:id="@+id/adView"
        ads:adSize="BANNER"
        ads:adUnitId="ca-app-pub-■■■■■■■■/■■■■■">
	...
    </com.google.android.gms.ads.AdView>
    ...
</androidx.constraintlayout.widget.ConstraintLayout>

広告ユニットIDはAdMobのアプリの広告ユニットから取得することができます。広告ユニットIDは手順1.4.2.でActivityごとに設定しているため、Activityのレイアウトリソースに対して指定するように気を付けてください。

最後に、ActivityのonCreate()でAdviewのloadAd()メソッドを呼び出すことで、広告の読み込みを行います。

TitleActivity.kt
import com.google.android.gms.ads.AdRequest

...
class TitleActivity : AppCompatActivity() {
    private lateinit var binding: ActivityTitleBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityTitleBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.adView.loadAd(AdRequest.Builder().build())    
    }
}
...

こちらのActivityの実装手順を、広告を表示するActivityの数だけ繰り返します。
お疲れ様でした。以上でバナー広告の実装は完了です。

筆者のアプリ

テンキーでの入力スピードを競うAndroidアプリを開発しました。無料版アプリにはこちらの記事で紹介したバナー広告が表示されますが、機能は有料版と同じになっています。興味を持って頂けた方は是非プレイしてみてください。
https://play.google.com/store/apps/details?id=zozooizozzoizioiiiooi.taps.free

https://youtu.be/RHbiQxafGkQ

Discussion