오류내용
'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 항목의 위치를 지정합니다.
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> |
- 이를 하지 않으면 아래의 오류가 발생됩니다.
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();
}
}
}
[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) { }
[iOS]
[Android]
소스
https://github.com/kei-soft/Maui.AdmobTest
.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 |