tafuji's blog

C#, Xamarin, Azure DevOps を中心に書いています。

.NET MAUI で AdMob を利用する方法

はじめに

この記事は、.NET MAUI Advent Calendar 2022 の 23日目の記事です。 今回は、.NET MAUI で AdMob の広告を表示する方法について書きたいと思います。

AdMob を利用する方法

Plugin.MauiMTAdmob のインストールと設定

AdMob を簡単に利用するためのライブラリに、Plugin.MauiMTAdmob があります. これをプロジェクトにインストールしてください。

nuget-install

Android プラットフォームの場合は、以下の設定を行う必要があります。

  • プロジェクトに Dependencies という名前でフォルダを追加する
  • user-messaging-platform-2.0.0.aar ファイルを MauiMTAdmob sample repository からダウンロードする
  • ダウンロードしたファイルを Dependencies フォルダにコピーする

dependencied folder

  • プロジェクトファイルに以下の設定を追加する
<ItemGroup Condition="'$(TargetFramework)' == 'net6.0-android'">
    <AndroidLibrary Include="Dependencies\user-messaging-platform-2.0.0.aar" Bind="false" />
</ItemGroup>
  • Android manifest ファイルに <meta-data ... /> の設定を追加する
<application android:allowBackup="true" 
             android:icon="@mipmap/appicon"
             android:roundIcon="@mipmap/appicon_round"
             android:supportsRtl="true">
    <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" 
               android:value="ca-app-xxxxxxxxxxx" />
</application>

iOS プロジェクトの場合は、 info.plist ファイルに以下の設定を追加する必要があります。

<key>GADApplicationIdentifier</key>
<string>AdMob の APP ID</string>
<key>GADIsAdManagerApp</key>
<true/>

AdMob の広告をバナー表示するサンプル

UseMauiMTAdmob() メソッドを利用して、初期化処理を追加します。 以下は、サンプルです。

using Plugin.MauiMTAdmob;

public static MauiApp CreateMauiApp()
{
    var builder = MauiApp.CreateBuilder();
    builder
        .UseMauiApp<App>()
        .UseMauiMTAdmob()
        .ConfigureFonts(fonts =>
        {
            fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
        });

    return builder.Build();
}

Android プラットフォームの初期化処理を追加します。MainActivity クラスに初期化処理を追加してください。

public class MainActivity : MauiAppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        MobileAds.Initialize(this);
    }
}

iOS プラットフォームの初期化処理を追加します。AppDelegate クラスに初期化処理を追加してください。

[Register("AppDelegate")]
public class AppDelegate : MauiUIApplicationDelegate
{
    protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        MobileAds.SharedInstance.Start(CompletionHandler);
        return base.FinishedLaunching(application, launchOptions);
    }

    private void CompletionHandler(InitializationStatus status) { }
}

広告を表示したい画面の XAML に、ユーザーコントロールを追加してください。

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:ads="clr-namespace:Plugin.MauiMTAdmob.Controls;assembly=Plugin.MauiMTAdmob"
             x:Class="SampleMMTAdmob.MainPage">

    <StackLayout>
        <ads:MTAdView
            x:Name="myAds"
            AdsId="ca-app-pub-xxxxxxxxx"
            AdSize="AnchoredAdaptive"
            IsVisible="true"/>
    </StackLayout>
</ContentPage>

まとめ

  • Plugin.MauiMTAdmob を利用すると、.NET MAUI で AdMob の広告を簡単に表示することができる
  • Plugin.MauiMTAdmob には、ユーザーコントロールが提供されていて、XAMK 上に <ads:MTAdView AdsId="xxxxxx" /> のようにコントロールを配置するだけで、広告を表示できる
  • Andorid / iOS プラットフォームで、設定を行う必要がある