Android向けスマホアプリ作成に挑戦 では下部に広告を表示させましたが、今回はインタースティシャル広告を表示させる方法を考えます。インタースティシャル広告とは、アプリの自然な切れ目や移行のタイミング(ステージをクリアした後など)で表示される全画面の広告です。画面全体に表示されるため注目度が高く、適切に使うことでクリック率(CTR)やコンバージョン率の向上が期待できます。

準備

Android向けスマホアプリ作成に挑戦 で解説しているように、フレームワークは .NET 9 MAUI / Blazor Hybrid、広告ライブラリは Plugin.AdMob 3.0.2、AdMobアカウントの開設とアプリID と 広告ユニットIDは取得済みであることを前提に進めます。

Plugin.AdMob を NuGet でインストールします。Visual Studio 2022 であれば最新版はインストールできないので 3.0.2 を選択します。

MauiProgram.cs の編集

MauiProgram.cs を編集します。ここは Android向けスマホアプリ作成に挑戦 と同じです。

MauiProgram.cs

AndroidManifest.xml の編集

次に AndroidManifest.xml を編集します。ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX の部分は AdMobアプリID を入れてください。AdMobアプリIDと広告ユニットIDは別物なので注意してください。

Platforms/Android/AndroidManifest.xml

Home.razor の編集

Home.razor を編集します。

ここでは C# 側、JavaScript 側の両方から広告を表示するためのテストをすることにします。

ボタンがふたつありますが、1 つ目はクリックすると Home クラスの ShowInterstitialAd メソッド(後述)が呼び出されて広告が表示されます。2 つ目はクリックすると JavaScript 側から document.getElementById(‘show-interstitial-ad-from-js’).addEventListener(‘click’, () => { }); とイベントリスナをつかって Home クラスの ShowInterstitialAd メソッドを呼び出して広告を表示させます。

また広告が消されたらそれを JavaScript 側でも検知できるようにします。

Components\Pages\Home.razor

Home.razor.cs の作成と編集

Home.razor と同じフォルダに Home.razor.cs を作成して以下のように記述します。

インタースティシャル広告を表示させたいタイミングで表示するには事前にロードしておかなければなりません。広告がロードされたらボタンを押せるようにします。またボタンの状態とは別にメソッド内でも、広告がロードされていない場合は表示の処理をおこなわないようにしています。広告が表示され、閉じられたら次回用の広告をロードします。

サンプルプログラムなのでボタンをタップするたび全画面広告が表示されるようにしていますが、実際にこのようなアプリをリリースしてはいけません。

ShowInterstitialAd メソッドは外部から呼び出せるように public にします。そして [JSInvokable] もつけます。const string AdUnitId に設定しているのは 広告ユニットID です。先述のアプリ ID と混同しないように注意してください。

DotNetObjectReference は不要になったら忘れずに Dispose() してください。

Components\Pages\Home.razor.cs

app.js の作成と編集

wwwroot フォルダのなかに app.js を作成し、以下のように書きます。

wwwroot\app.js