Java
Android
adMob
Firebase

絶対にやってはいけない InterstitialAd の実装例(AdMob)

血迷ってやっていたことのあるインタースティシャル広告のダメな実装例をさらします。
今は反省しています。

マネしちゃいけないコード

MainActivity.java
public class MainActivity extends AppCompatActivity {
    private InterstitialAd mInterstitialAd;
    private boolean exitFlg;

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

        MobileAds.initialize(this, "ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx");
        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-yyyyyyyyyyyyyyyy/yyyyyyyyyy");
        mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                super.onAdClosed();
                // インタースティシャル広告が閉じられたらアプリを閉じる
                exitFlg = true;
                onBackPressed();
            }
        });
        if (new Random().nextInt(10) % 3 == 0) {
            // 40%の確率で広告ロード
            mInterstitialAd.loadAd(new AdRequest.Builder().build());
        }
    }

    @Override
    public void onBackPressed() {
        // Navigation Drawer などはなく、戻るボタン1回でアプリが閉じられる前提
        if (!exitFlg && mInterstitialAd.isLoaded()) {
            // 退出フラグが false で広告ロード済みならインタースティシャル広告を表示する
            mInterstitialAd.show();
        } else {
            // それ以外ならアプリを閉じる
            super.onBackPressed();
        }
    }
}

exitFlg 使わなくても、onAdClosed() 内で super.onBackPressed() を呼べばいいじゃんと今見て思いました。でも、試すのも無駄なので、実際に使っていたコードをほぼそのまま抜粋して載せます。お恥ずかしい。

何がダメなのか?

AdMob のインタースティシャル広告の導入における禁止事項には、次のように書かれています。

インタースティシャル広告はアプリの読み込み時や終了時に表示してはいけません。表示が許可されるのはアプリのコンテンツ(ページ)が切り替わるタイミングのみです。また、端末のバックグラウンドで動作するアプリに広告を表示したり、アプリ環境の外部に広告を表示したりすることも許可されません。ユーザーには、広告がどのアプリに表示されたものかを明確に示す必要があります。

本当にその通りですね。ユーザビリティが最優先だと痛切に分かります。
アプリを閉じるタイミングは、他のアプリへ移るタイミングでもあり得ます。
その操作を邪魔するということは、ユーザーに不快感を与えますし、広告主の方にも迷惑をかけてしまいます。

何故やったのか?

少しでも収益が上がるかもしれないと欲に負けました。
他のアプリでもやっているものはあるし(AdMob を使っているかどうかは不明で、AdMob 以外の広告ネットワークでの規則は調べていなかったのですが)、表示頻度を下げれば大丈夫だろうと変に自分を納得させていました。
当時、上記の禁止事項も読んではいたのに自分がバカでした。
実験してみたい気持ちもあったので、やってみて判断しようというアホな思考で動いていました。

結果的にインタースティシャル広告での収益はほとんど出ず、「広告多すぎ」という星2個のレビューも付き、なんとなくアンインストール率も高いようでメリットはなかったと思います。
今は猛省しています。

この記事を読んだ方は同じ過ちをしないように

自戒のためにも投稿していますが、読んでいただいた方でこれから何かしらの広告の実装を考えている方は私を反面教師にしてください。
ルールを守ってユーザビリティを高めましょう。
後悔先に立たずです。
Qiita には「いいね」ボタンがありますが、もしこの記事で「いいね」が付いた場合は「悪いね」として私は捉え、真面目な開発者となるべく、より一層精進していきたいと思います。

失礼いたしました。