KeiStory

.NET MAUI AdMob 광고 적용하기 (전면, 배너, 보상)

 

1. "Plugin.MauiMTAdmob" Nuget 설치

 

2. Nuget 설치시 오류 발생 시 처리 (오류 발생하지 않으면 패스)

오류내용

'C:\Users\kjun\.nuget\packages\xamarin.firebase.ios.core\8.10.0.1\lib\xamarinios10\Firebase.Core.resources\GoogleUtilitiesComponents.xcframework\ios-arm64_i386_x86_64-simulator\GoogleUtilitiesComponents.framework\PrivateHeaders\GULCCComponentContainerInternal.h' 경로의 일부를 찾을 수 없습니다.

- 누겟의 경로가 길어서 생기는 오류로 누겟패키지의 경로를 변경하여 해결합니다.

환경변수 추가를 클릭하고

NUGET_PACKAGES 항목의 위치를 지정합니다.

 

3. Dependencies 폴더 생성 후 user-messaging-platform-2.0.0.aar 파일 복사 후 프로젝트 파일에 관련 내용 추가

Dependencies 폴더 생성 후
https://github.com/marcojak/MauiMTAdmob/tree/master/SampleMMTAdmob/Dependencies 에서
user-messaging-platform-2.0.0.aar 파일을 다운받아 Dependencies  폴더에 복사하고

프로젝트를 더블클릭하여 프로젝트 파일을 연 후 아래 내용을 추가합니다

<ItemGroup Condition="'$(TargetFramework)' == 'net6.0-android'">
         <AndroidLibrary Include="Dependencies\user-messaging-platform-2.0.0.aar" Bind="false" />
</ItemGroup>

- 이를 하지 않으면 아래의 오류가 발생됩니다.

 

4. 초기화 함수 추가 및 화면 정의

MauiProgram.cs

using Plugin.MauiMTAdmob;

namespace Maui.AdmobTest
{
    public static class MauiProgram
    {
        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();
        }
    }
}

MainPage.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
    x:Class="Maui.AdmobTest.MainPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:admob="clr-namespace:Plugin.MauiMTAdmob.Controls;assembly=Plugin.MauiMTAdmob"
    BackgroundColor="White">
    <Grid>
        <Button
            Margin="10"
            BorderColor="Blue"
            BorderWidth="1"
            Clicked="Button_Clicked"
            HeightRequest="50"
            Text="AdMob IInterstitials Test"
            TextColor="Black"
            VerticalOptions="Start" />

        <StackLayout VerticalOptions="End">
            <admob:MTAdView
                x:Name="mtAdView"
                AdSize="Banner"
                BackgroundColor="Transparent" />
            <Label
                HorizontalTextAlignment="Center"
                Text="AdMob Banner Test"
                TextColor="Black"
                VerticalTextAlignment="Center" />
        </StackLayout>

    </Grid>
</ContentPage>

MainPage.xaml.cs

using Plugin.MauiMTAdmob;

namespace Maui.AdmobTest
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();

            /* Test ID

            Android
            https://developers.google.com/admob/android/test-ads?hl=ko
            앱 오프닝 광고	            ca-app-pub-3940256099942544/3419835294
            배너 광고	                ca-app-pub-3940256099942544/6300978111
            전면 광고	                ca-app-pub-3940256099942544/1033173712
            전면 동영상 광고	        ca-app-pub-3940256099942544/8691691433
            보상형 광고	                ca-app-pub-3940256099942544/5224354917
            보상형 전면 광고	        ca-app-pub-3940256099942544/5354046379
            네이티브 광고 고급형	    ca-app-pub-3940256099942544/2247696110
            네이티브 동영상 광고 고급형	ca-app-pub-3940256099942544/1044960115

            iOS
            https://developers.google.com/admob/ios/test-ads#demo_ad_units
            앱 오프닝 광고	            ca-app-pub-3940256099942544/5662855259
            배너 광고	                ca-app-pub-3940256099942544/2934735716
            전면 광고	                ca-app-pub-3940256099942544/4411468910
            전면 동영상 광고	        ca-app-pub-3940256099942544/5135589807
            보상형 광고	                ca-app-pub-3940256099942544/1712485313
            보상형 전면 광고	        ca-app-pub-3940256099942544/6978759866
            네이티브 광고 고급형	    ca-app-pub-3940256099942544/3986624511
            네이티브 동영상 광고 고급형	ca-app-pub-3940256099942544/2521693316
             */

            if (DeviceInfo.Platform.Equals(DevicePlatform.Android))
            {
                this.mtAdView.AdsId = "ca-app-pub-3940256099942544/6300978111";
            }
            else
            {
                this.mtAdView.AdsId = "ca-app-pub-3940256099942544/2934735716";
            }

            CrossMauiMTAdmob.Current.OnInterstitialOpened += (s, e) => DisplayAlert("AdMobTest", "Interstitial Open", "OK");
            CrossMauiMTAdmob.Current.OnInterstitialClosed += (s, e) => DisplayAlert("AdMobTest", "Interstitial Close", "OK");
        }

        private void Button_Clicked(object sender, EventArgs e)
        {
            /* 전면 광고 표시 */

            // 이미 로드되어있는 확인
            bool isInterstitialLoaded = CrossMauiMTAdmob.Current.IsInterstitialLoaded();

            if (!isInterstitialLoaded)
            {
                if (DeviceInfo.Platform.Equals(DevicePlatform.Android))
                {
                    CrossMauiMTAdmob.Current.LoadInterstitial("ca-app-pub-3940256099942544/1033173712");
                }
                else
                {
                    CrossMauiMTAdmob.Current.LoadInterstitial("ca-app-pub-3940256099942544/4411468910");
                }
            }

            CrossMauiMTAdmob.Current.ShowInterstitial();
        }
    }
}

 

5. Device 별 코드 추가

[Android]

(1) AndroidManifest.xml 의 application 테그 안에 APPLICATION_ID 추가
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-4681470946279796~4956510027" />

(2) 안드로이드 13버전 이후 권한 추가
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />

(3) MainActivity.cs 초기화 함수 추가

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    MobileAds.Initialize(this);
}

[iOS]

(1) Info.plist 에 광고 ID 추가

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-4681470946279796~5582625167</string>

(2) AppDelegate.cs 에 초기화 함수 추가

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

 private void CompletionHandler(InitializationStatus status) { }

 

6. 실행

[iOS]

[Android]


소스
https://github.com/kei-soft/Maui.AdmobTest

 

반응형

'코딩 > .NET MAUI' 카테고리의 다른 글

.NET MAUI 특정 위치 기준 지도 열기 (Open Map)  (0) 2024.05.10
.NET MAUI Audio/Music 재생하기  (0) 2024.05.10
.NET MAUI BarCode/QRCode 사용하기 - ZXing  (0) 2024.05.09
.NET MAUI SearchBar  (0) 2024.05.06
.NET MAUI PancakeView  (0) 2024.05.06

공유하기

facebook twitter kakaoTalk kakaostory naver band