特に全画面広告(インタースティシャル広告)はユーザ満足度を下げる可能性はあるものの、大幅な収益向上化がはかれます。
この記事ではAdMobの全画面広告(インタースティシャル広告)の実装方法について説明します。
AdMobのアプリ登録&プロジェクトにAdMobを導入する
AdMobのアプリ登録、プロジェクトへのFirebaseを用いたAdMob導入などは以下の記事に記載されています。まずはそちらをご覧ねがいます。AdMobでインタースティシャルの広告ユニットを作成する
まず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
広告が表示されないときは?
「広告の実装が完了したつもりだけど広告が表示されない!」という場合は以下の記事によくある原因と対処方法をまとめていますので、そちらを参照ください。