AdMobの全画面広告(インタースティシャル広告)を実装する方法 | Androidアプリ開発

アプリの収益化をする上で広告を実装することは最もポピュラーな方法のひとつです。
特に全画面広告(インタースティシャル広告)はユーザ満足度を下げる可能性はあるものの、大幅な収益向上化がはかれます。

この記事ではAdMobの全画面広告(インタースティシャル広告)の実装方法について説明します。
スポンサーリンク

AdMobのアプリ登録&プロジェクトにAdMobを導入する

AdMobのアプリ登録、プロジェクトへのFirebaseを用いたAdMob導入などは以下の記事に記載されています。まずはそちらをご覧ねがいます。
スポンサーリンク

AdMobでインタースティシャルの広告ユニットを作成する

まずAdMobでインタースティシャル広告の広告ユニットを作成します。
まずアプリ選択後、左メニューの広告ユニットを選択します。
AdMobでインタースティシャル広告ユニットを作成する
次に「広告ユニットの追加」をクリックします。
AdMobでインタースティシャル広告ユニットを作成する
インタースティシャルを選択します。
AdMobでインタースティシャル広告ユニットを作成する
広告ユニット名を入力(後でレポートに表示されるときに使用されるだけなので好きなもので大丈夫です)して、「広告ユニットを作成」をクリックします。
AdMobでインタースティシャル広告ユニットを作成する
広告ユニットIDが表示されるのでメモしておきます(後でも確認可能です)。
AdMobでインタースティシャル広告ユニットを作成する
スポンサーリンク

コードの実装

まずは、さきほどの広告ユニットIDをstring.xmlに登録しておきます。
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="ads_AppId">ca-app-pub-XXXXXXXXXXXXXXX~XXXXXXXXXXX</string>
    <string name="ads_UnitId_Interstitial">ca-app-pub-XXXXXXXXXXXX/XXXXXXXXXXX</string>
</resources>
次にAdMobバナー広告導入と同様にAndroidManifest.xmlに広告アプリIDを登録します。

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.areseiproject">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="@string/ads_AppId"
            />
        
    </application>
</manifest>
次に、今回はテストのためにインタースティシャル広告を表示するボタンをつけておきます。
以下がサンプルコードです。

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    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:orientation="vertical"
    tools:context=".MainActivity"
    >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Show Interstitial Ads"
        android:onClick="click"
        />

</LinearLayout>
次にActivity.javaの実装です。
以下がサンプルコードです。
InterstitialAdsオブジェクトに広告ユニットIDをセット後に、AdRequestオブジェクトを生成し、広告のロードを開始します。
その後、showメソッドでインタースティシャル広告を表示させます。
public class MainActivity extends Activity {

    InterstitialAd interstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, getString(R.string.ads_AppId));
        interstitialAd = new InterstitialAd(this);
        interstitialAd.setAdUnitId(getString(R.string.ads_UnitId_Interstitial));
        AdRequest adRequest = new AdRequest.Builder()
                .build();
        interstitialAd.loadAd(adRequest);
    }

    public void click(View v) {
        if(interstitialAd.isLoaded()) interstitialAd.show();
    }
}
以上で最低限必要なコードの実装は完了です。
問題がなければボタンを押すと全画面広告が表示されるはずです。

しかし、以下の記事にも記載しましたが、AdMob実装直後やリクエストが少ないうちは広告は表示されませんので注意が必要です。 そこでここではテスト広告を表示してみましょう。
ここまでのサンプルコードをデバッグモードで起動します。
すると、コンソールに以下のようなメッセージが表示されます。
I/Ads: Use AdRequest.Builder.addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") to get test ads on this device.
このメッセージに従って、テストデバイスIDのコードを追加します。

MainActivity.java
public class MainActivity extends Activity {

    InterstitialAd interstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, getString(R.string.ads_AppId));
        interstitialAd = new InterstitialAd(this);
        interstitialAd.setAdUnitId(getString(R.string.ads_UnitId_Interstitial));
        AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") //これを追加
                .build();
        interstitialAd.loadAd(adRequest);
    }

    public void click(View v) {
        if(interstitialAd.isLoaded()) interstitialAd.show();
    }
}
そして、アプリを実行し、以下のように全画面広告が表示されれば成功です。
(ロードが完了しないと表示されないので、ボタンを押すまで多少時間を待つ必要があります)。
実装したインタースティシャルのテスト広告
バナー広告実装の記事で書いた通り、デバッグ中はテスト広告を表示することをオススメします。
スポンサーリンク

実際の使用例

今回はボタンでインタースティシャル広告を表示しましたが、実際はActivityの推移の際に一定確率で表示させたりすることが多いようです。

また、インタースティシャル広告については禁止事項があるため注意です。
特にアプリ起動/終了時やユーザ操作を直接邪魔する行為はブラックリスト入りする可能性があります。
禁止事項の詳細は以下を参照ください。
https://support.google.com/admob/answer/6275345?hl=ja&ref_topic=2745287
スポンサーリンク

広告が表示されないときは?

「広告の実装が完了したつもりだけど広告が表示されない!」という場合は
以下の記事によくある原因と対処方法をまとめていますので、そちらを参照ください。
スポンサーリンク

まとめ

この記事ではAdMobの全画面広告(インタースティシャル広告)の実装の方法を説明しました。
Androidアプリ開発
スポンサーリンク
Androidアプリ開発 記事一覧
Androidアプリ開発 記事一覧
Androidアプリ開発の記事一覧を以下にまとめています。
良かったらご覧ください。

Androidアプリ開発 記事一覧
カテゴリ広告: Androidアプリ開発
スポンサーリンク: Androidアプリ開発を個人レッスンで学ぶなら...?
Androidアプリ開発は一人で学んでいても限界があります。
そこでオススメなのがオンラインでAndroidアプリ開発を学べる「コードキャンプ」。
個人レッスンで丁寧に教えてくれます。

無料レッスン体験も可能なので、まずは無料体験から試してみてはいかがでしょうか?

Androidアプリ開発個人レッスン
一般広告: モバイルバッテリー
スポンサーリンク
Aresei-note
タイトルとURLをコピーしました