반응형

[.NET MAUI] 안드로이드에서 구글 광고 연결하기 (Admob 달기)

 

.NET MAUI는 안드로이드 어플 개발이 가능하다.

따라서 많은 안드로이드 어플에 추가되어있는 Admob 광고도 추가가 가능하다.

 

 


1. Nuget에서 Plugin.MauiMTAdmob를 설치한다.

 

.net maui Admob 연결하기, 애드센스 연결하기

 

MauiMTAdmob을 설치한다.

 

 

** 에러 발생시

.net maui Admob 연결하기, 애드센스 연결하기

 

 

위와 같은 에러가 발생하면 'Nuget-설치됨' 에서 각각의 패키지를 찾아 업데이트 해준다.

 

.net maui Admob 연결하기, 애드센스 연결하기

 

 

 


2. MauiProgram.cs 파일 수정

 

위의 두곳에 내용을 추가한다.

 

using Microsoft.Extensions.Logging;

using Plugin.MauiMTAdmob;  // 추가

namespace Admob_Test
{
    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");
                });
                
#if DEBUG
    		builder.Logging.AddDebug();
#endif

            return builder.Build();
        }
    }
}

 

 

 


3. Platforms - Android - MainActivity.cs에 내용 추가

using Android.App;
using Android.Content.PM;
using Android.OS;

using Plugin.MauiMTAdmob;  // 추가

namespace Admob_Test
{
    [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, LaunchMode = LaunchMode.SingleTop, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
    public class MainActivity : MauiAppCompatActivity
    {
    	// 추가
        protected override void OnCreate(Bundle? savedInstanceState)
        {
            string appId = "AppID"; // Admob에서 AppID 입력하기
            CrossMauiMTAdmob.Current.Init(this, appId);

            base.OnCreate(savedInstanceState);
        }

        // 추가
        protected override void OnResume()
        {
            base.OnResume();
            CrossMauiMTAdmob.Current.OnResume();
        }
    }
}

 

네가지를 추가해줘야 한다.

1) using Plugin.MauiMTAdmob;

2) Oncreate Override 추가

3) OnResume Override 추가

4) Admob에서 받은 AppID를 추가해야 한다.

 


4. Banner 광고 추가 하기

4-1. MainPage.Xaml에 AdMMTAdView 컨트롤 추가

<?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:admob="clr-namespace:Plugin.MauiMTAdmob.Controls;assembly=Plugin.MauiMtAdmob"
             
             x:Class="Admob_Test.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Padding="30,0"
            Spacing="25">

            <admob:AdMMTAdView HeightRequest="50" 
                               x:Name="adViewTT"
                               AdSize="Banner" 
                               VerticalOptions="EndAndExpand" 
                               HorizontalOptions="CenterAndExpand" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

 

1) xmlns:admob="clr-namespace:Plugin.MauiMTAdmob.Controls;assembly=Plugin.MauiMtAdmob" 를 추가한다.

2) <admob:AdMMTAdView /> 컨트롤을 추가한다.

 

 

4-2. MainPage.cs 비하인드 코드에서 연결

namespace Admob_Test
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();


			// Admob 배너 광고 ID
            if (DeviceInfo.Platform.Equals(DevicePlatform.Android))
            {
                // 테스트 광고 ID
                adViewTT.AdsId = "ca-app-pub-3940256099942544/6300978111";
            }

        }
    }

}

 

Admob 광고 ID를 컨트롤에 추가해준다.

 

 


5. 전면 광고 추가하기

5-1. MainPage.xaml에서 Button 생성, Click Event 추가

<?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:admob="clr-namespace:Plugin.MauiMTAdmob.Controls;assembly=Plugin.MauiMtAdmob"
             
             x:Class="Admob_Test.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Padding="30,0"
            Spacing="25">
            
            <!--전면 광고 버튼 추가-->
            <Button x:Name="btn_Ads"
                    Clicked="btn_Ads_Clicked" />
            
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

 

전면광고를 위한 Button 컨트롤을 추가하고 Clicked 이벤트를 추가한다.

 

 

5-2. MainPage.cs 비하인드 코드에서 이벤트 내용 추가

using Plugin.MauiMTAdmob;

namespace Admob_Test
{
    public partial class MainPage : ContentPage
    {
        int count = 0;

        public MainPage()
        {
            InitializeComponent();
        }

		// 추가
        private void btn_Ads_Clicked(object sender, EventArgs e)
        {
        	// 테스트 광고 ID
            string Id_Interstitial = "ca-app-pub-3940256099942544/1033173712";

            if (DeviceInfo.Platform.Equals(DevicePlatform.Android))
            {
                CrossMauiMTAdmob.Current.LoadInterstitial(Id_Interstitial);
                CrossMauiMTAdmob.Current.ShowInterstitial();

            }
        }
    }

}

 

Button Click 이벤트의 내용을 추가한다.

광고를 LoadInterstitial에 광고 ID로 로드하고

ShowInterstitial로 광고를 표시한다.

 


[TIP] Interstitial 로드 빠르게 하는 팁

위의 코드로 전면 광고를 호출하면 한박자 늦에 표시되는 것을 알 수 있다.

구글 Admob에 광고를 요청 - 수신 한 뒤 보여주는 로직이라 통신 시간이 소요된다.

이 문제는 간단하게 해결 가능하다.

using Plugin.MauiMTAdmob;

namespace Admob_Test
{
    public partial class MainPage : ContentPage
    {
        int count = 0;

        public MainPage()
        {
            InitializeComponent();
        }
		
        // 화면 로딩과 함께 광고 내용을 Load
        protected override void OnAppearing()
        {
            base.OnAppearing();

            string Id_Interstitial = "ca-app-pub-3940256099942544/1033173712";

            if (DeviceInfo.Platform.Equals(DevicePlatform.Android))
            {
                CrossMauiMTAdmob.Current.LoadInterstitial(Id_Interstitial);
            }
        }
		
        // 전면 광고가 필요한 상황에서 ShowInterstitial()로 광고를 표시한다.
        private void btn_Ads_Clicked(object sender, EventArgs e)
        {
            if (DeviceInfo.Platform.Equals(DevicePlatform.Android))
            {
                CrossMauiMTAdmob.Current.ShowInterstitial();
            }
        }
    }
}

 

위에서는 OnAppearing()에 LoadInterstitial()에 추가했지만 Task등을 이용해 비동기처리를 해도 무방하다.

반응형
반응형

LDF Viewer

 

차량 통신에서 사용되는 가장 흔한 통신 방식은 2가지가 있다.

LIN 통신과 CAN 통신이다.

 

이중 LIN 통신은 보통 LDF 파일을 생성한다.

LIN 통신에서 필요한 요소들에 대한 일종의 명세서다.

  • 통신 속도 등의 기본 통신 명세
  • Master/Slave 노드
  • 각 메시지들의 형식
  • 데이터의 형식
  • 주기적 스케줄에 대한 명세
  • 인코딩에 대한 명세

 

물론 메모장이나 기타 다른 프로그램으로 파일 내용 확인이 가능하다.

하지만 보기 불편하다.

그래서 만들었다.

 

 

https://play.google.com/store/apps/details?id=com.LFC.LinViewer&pli=1

 

Ldf 뷰어 - Google Play 앱

Lin Ldf viewer

play.google.com

 

 

사용법은 간단하다.

LDF파일을 선택하기만 하면 상세 내용이 나오게된다.

 

 

0123

 

 

안드로이드 태블릿에서도 사용 가능한 어플이다.

 

또한 번외로 PC에서 무설치로 사용 할 수 있도록 웹으로도 만들었다.

 

 

https://fasttool.co.kr/

 

Fast Tool

여러 CSV파일을 하나의 파일로 요약합니다.

fasttool.co.kr

 

 

LDF뷰어 뿐만 아니라 평소 내가 자주 사용하는 단위 변환기도 있다.

 

 

모두 무료이니 비용 걱정은 없다.

편히 사용하면 된다.

반응형

'일지 > 앱 개발' 카테고리의 다른 글

언제까지 놀고만 있을 순 없다. (.NET Maui)  (0) 2025.03.18
반응형

나는 프로그래머다.

다른 웹개발, 게임 개발자와 다른 SI 계열의 프로그래머다.

항상 공장, 기계와 함께한다.

기계를 조작하는 프로그램, 시험 측정 프로그램, 공장 상황을 체크하는 MES 프로그램을 만드는 프리랜서이다.

자동차 분야에서 활동하면서 근 몇년간 너무 많은 변화가 일어나고 있다.

현대/기아에 의존하던 기존 자동차 부품업체들이 급격한 변화를 맞이하고 있다.

기존 차량 부품을 사용하지 않는다.

그래서 일의 부익부 빈익빈이 가중화 되고있다.

 

그래서 나도 변화해야한다.

어떻게 할 것인가 막막했다.

그래서 단기적 목표를 가지고 도전해보려한다.

 

안드로이드 어플리케이션을 만들려 한다.

이유는 간단하다.

프로그램을 만들고 게시할 마켓이 있다.

UWP를 이용한 Microsoft Store도 있지만 아직은 파이가 크지 않다.

IOS계열은 내가 잘 사용하지 않는다. (평생 안드로이드만 써왔다.)

 

개발 언어는 고민할 필요 없이 .Net Maui로 선택했다.

이유는 간단하다.

1. C#으로 프로그램을 만들 수 있다.

2. Cross Platform으로 Android, IOS, Window, Tizen 등의 환경에서 사용 할 수 있다.

  (물론 각 환경에 맞는 설정은 별도로 필요하다)

3. 어짜피 필요한 기능들은 웹을 통해야 한다.

  (나에게는 AWS Lambda 라는 강력한 도구가 있다.)

 

이제 어플 100개 만들기를 도전해보려 한다.

이건 일종의 나의 개발 일지다.

또한 일종의 광고이다.

이렇게 해야 책임감을 갖고 이 프로젝트가 이어질 것이라 생각된다.

 

이미 늦었다 이야기 하는 사람도 있다.

하지만 시작도 안하면 계속 후회만 하고 있을것이다.

후회하지는 말자..

반응형

'일지 > 앱 개발' 카테고리의 다른 글

[앱001] LDF Viewer (Lin Description File Viewer)  (0) 2025.03.18

+ Recent posts