Intro
With this Plugin you can add Google Admob Ads inside your MAUI Android and iOS apps with a single line!!! This plugin supports: Banners, Native Ads, Open Ads, Interstitial, Rewarded Videos and Rewarded Interstitials
Commercial support
If you need faster support with this plugin, or custom changes or you would like to hire me to help with the development of your project, contact me at [email protected] to discuss it further.
Important
From version 1.1.0, I've added support for the consent required by Google for all the final users living in Europe. This support for UMP is only available in the licensed version of the plugin. Without the license, the plugin will continue to work as usual with all the other features normally available. This will allow me to continue supporting the development of the plugin. You can buy the license here. If you are a charity or your app is used to support a good cause, contact me and I'll verify and send you a free license.
If you are not ready to buy a license, if possible, please, support my work with a few coffees or even better with a Membership! You can do it here: Buy Me A Coffee
Your help allows me to continue to spend time on this project and continue to maintain and update it with new features.
Cryptography
This plugin uses a cryptographic algorithm to handle the license.
Current Status
Latest version: 1.7.1
Android | iOS | Windows | Mac | |
---|---|---|---|---|
Banner | ||||
Native Ads | ||||
Interstitial | ||||
Rewarded | ||||
Rewarded Interstitial | * | |||
Open Ads | ||||
UMP Consent |
*They are implemented but currently, they are not working. Probably something in the Admob SDK. I'm investigating it.
Methods
General
Init |
SetAppMuted |
SetAppVolume |
Ads
Banner | Interstitial | Rewarded | Rewarded Interstitial | |
---|---|---|---|---|
LoadAd | LoadInterstitial | LoadRewarded | LoadRewardedInterstitial | |
ShowInterstitial | ShowRewarded | ShowRewardedInterstitial | ||
IsInterstitialLoaded | IsRewardedLoaded | IsRewardedInterstitialLoaded | ||
GetNumberOfInterstitialsLoaded | GetNumberOfRewardedLoaded | GetNumberOfRewardedInterstitialsLoaded | ||
EmptyInterstitialAdsList | EmptyRewardedAdsList | EmptyRewardedInterstitialsAdsList |
Native Ads | App Open Ads |
---|---|
LoadNativeAd | - |
LoadNativeAds |
Consent |
---|
InitialiseConsent |
InitialiseAndShowConsentForm |
ShowPrivacyOptionsForm |
Reset |
Events
Ads
Banner | Interstitial | Rewarded | Rewarded Interstitial | App Open Ads |
---|---|---|---|---|
AdsLoaded | OnInterstitialLoaded | OnRewardedLoaded | OnRewardedLoaded | OnAppOpenAdLoaded |
AdsFailedToLoad | OnInterstitialFailedToLoad | OnRewardedFailedToLoad | OnRewardedFailedToLoad | OnAppOpenFailedToLoad |
AdsImpression | OnInterstitialImpression | OnRewardedImpression | OnRewardedImpression | OnAppOpenImpression** |
AdsClicked | OnInterstitialOpened | OnRewardedOpened | OnRewardedOpened | OnAppOpenOpened** |
AdsOpened | OnInterstitialFailedToShow | OnRewardedFailedToShow | OnRewardedFailedToShow | OnAppOpenFailedToShow** |
AdsClosed | OnInterstitialClosed | OnRewardedClosed | OnRewardedClosed | OnAppOpenClosed** |
AdsSwiped | OnInterstitialClicked* | OnRewardedClicked* | OnRewardedClicked* | OnAppOpenClicked** |
OnUserEarnedReward | OnUserEarnedReward |
*Only supported on iOS
**Currently only working on Android. I plan to add them on iOS in the next version
Consent |
---|
OnConsentInfoUpdateSuccess |
OnConsentInfoUpdateFailure |
OnConsentFormDismissed |
OnConsentFormLoadSuccess |
OnConsentFormLoadFailure |
Initialization
First of all, in your MauiProgramm class, add
.UseMauiMTAdmob()
to the builder.
To initialise the plugin, you need to call the init method in both your platforms.
Android Method Signature
void Init(MauiAppCompatActivity activity, string appId, string license = null, string nativeAdsId = null, string openAdsId = null, bool enableOpenAds = false, bool tagForUnderAgeOfConsent = false, string testDeviceId = null, bool forceTesting = false, DebugGeography geography = DebugGeography.DEBUG_GEOGRAPHY_DISABLED, bool initialiseConsentAtStartup = true);
Parameters
Parameter | Type | Description | Default Value |
---|---|---|---|
activity |
MauiAppCompatActivity
|
The activity to initialize the plugin with. | N/A |
appId |
string
|
The AdMob app ID. | N/A |
license |
string
|
The license key. |
null
|
openAdsId |
string
|
The open ads ID. |
null
|
nativeAdsId |
string
|
The native ads ID. |
null
|
enableOpenAds |
bool
|
True to enable open ads, false otherwise. |
false
|
tagForUnderAgeOfConsent |
bool
|
True to tag for under age of consent, false otherwise. |
false
|
testDeviceId |
string
|
The test device ID. |
null
|
forceTesting |
bool
|
True to force testing, false otherwise. |
false
|
geography |
DebugGeography
|
The debug geography. |
DebugGeography.DEBUG_GEOGRAPHY_DISABLED
|
initialiseConsentAtStartup |
bool
|
True to initialize consent at startup, false otherwise. |
true
|
iOS Method Signature
void Init(string license = null, string nativeAdsId = null, string openAdsId = null, bool enableOpenAds = false, bool tagForUnderAgeOfConsent = false, string testDeviceId = null, DebugGeography geography = DebugGeography.DEBUG_GEOGRAPHY_DISABLED, bool initialiseConsentAtStartup = true);
Parameters
Parameter | Type | Description | Default Value |
---|---|---|---|
license |
string
|
The license key. |
null
|
openAdsId |
string
|
The open ads ID. |
null
|
nativeAdsId |
string
|
The native ads ID. |
null
|
enableOpenAds |
bool
|
True to enable open ads, false otherwise. |
false
|
tagForUnderAgeOfConsent |
bool
|
True to tag for under age of consent, false otherwise. |
false
|
testDeviceId |
string
|
The test device ID. |
null
|
geography |
DebugGeography
|
The debug geography. |
DebugGeography.DEBUG_GEOGRAPHY_DISABLED
|
initialiseConsentAtStartup |
bool
|
True to initialize consent at startup, false otherwise. |
true
|
Please note:
You don't need to call:
MobileAds.Initialize(this); (Android)
or
MobileAds.SharedInstance.Start(CompletionHandler); (iOS)
The plugin will do it for you!
Add your App Id
- Android
You need to add your Admob APPLICATION_ID to your AppManifest:
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="YOUR APPLICATION ID" />
- iOS
You need to add GADApplicationIdentifier to your Info.plist. Edit your info.plist adding these Keys:
<key>GADApplicationIdentifier</key> <string>YOUR APPLICATION ID</string> <key>GADIsAdManagerApp</key> <true/>
Banners
To add a Banner on a page you have two options:
- XAML
<controls:MTAdView x:Name="myAds"></controls:MTAdView>
remember to add this line in your XAML:
xmlns:controls="clr-namespace:Plugin.MauiMTAdmob.Controls;assembly=Plugin.MauiMTAdmob"
- Code
MTAdView ads = new MTAdView();
Now you can add the control to your layout.
IMPORTANT
To test the banner, during development, you can use the test Banner Id. Just remember to replace them with your IDs:
Android: ca-app-pub-3940256099942544/6300978111
iOS: ca-app-pub-3940256099942544/2934735716
Collapsible Banners (Licensed version only)
You can show a collapsible banner calling:
myAds.LoadAd(CollapsibleBannerMode.Top);
CollapsibleBannerMode can have the following values: None, Top, Bottom.
PROPERTIES
For each AdView if you want, you can set the following properties:
AdsId: To add the id of your ads.
AdSize: To choose the size of your banners.
AutoSize: If true, the plugin will update the banner height according to the ads loaded.
GLOBAL PROPERTIES
AdsId: To add the id of your ads
PersonalizedAds: You can set it to False if you want to use generic ads (for GDPR...)
TestDevices: You can add here the ID of your test devices
UseRestrictedDataProcessing: For compliance with the CCPA
You can use Global Properties in this way:
CrossMauiMTAdmob.Current.UserPersonalizedAds = true;
IMTAdmob Interstitials Documentation
This documentation provides an overview of how to use interstitial ads with the CrossMauiMTAdmob.Current
interface.
Loading an Interstitial Ad
To load an interstitial ad, use the LoadInterstitial
method with the specified ad unit:
void LoadInterstitial(string adUnit);
Example:
CrossMauiMTAdmob.Current.LoadInterstitial("your-ad-unit-id");
Checking if an Interstitial Ad is Loaded
To check if an interstitial ad is loaded, use the IsInterstitialLoaded
method:
bool IsInterstitialLoaded();
Example:
bool isLoaded = CrossMauiMTAdmob.Current.IsInterstitialLoaded();
if (isLoaded) {
// Interstitial ad is loaded
}
Showing an Interstitial Ad
To show the loaded interstitial ad, use the ShowInterstitial
method:
void ShowInterstitial();
Example:
if (CrossMauiMTAdmob.Current.IsInterstitialLoaded()) {
CrossMauiMTAdmob.Current.ShowInterstitial();
}
Handling Interstitial Ad Events
The plugin provides several events to handle interstitial ad lifecycle events:
event EventHandler OnInterstitialLoaded
: Raised when an interstitial ad is loaded.event EventHandler<MTEventArgs> OnInterstitialFailedToLoad
: Raised when an interstitial ad fails to load.event EventHandler OnInterstitialOpened
: Raised when an interstitial ad is opened.event EventHandler OnInterstitialClosed
: Raised when an interstitial ad is closed.event EventHandler<MTEventArgs> OnInterstitialFailedToShow
: Raised when an interstitial ad fails to show.event EventHandler OnInterstitialImpression
: Raised when an interstitial ad impression occurs.event EventHandler OnInterstitialClicked
: Raised when an interstitial ad is clicked.
Example:
CrossMauiMTAdmob.Current.OnInterstitialLoaded += (sender, args) => {
// Handle interstitial ad loaded
};
CrossMauiMTAdmob.Current.OnInterstitialFailedToLoad += (sender, args) => {
// Handle interstitial ad failed to load
};
CrossMauiMTAdmob.Current.OnInterstitialOpened += (sender, args) => {
// Handle interstitial ad opened
};
CrossMauiMTAdmob.Current.OnInterstitialClosed += (sender, args) => {
// Handle interstitial ad closed
};
CrossMauiMTAdmob.Current.OnInterstitialFailedToShow += (sender, args) => {
// Handle interstitial ad failed to show
};
CrossMauiMTAdmob.Current.OnInterstitialImpression += (sender, args) => {
// Handle interstitial ad impression
};
CrossMauiMTAdmob.Current.OnInterstitialClicked += (sender, args) => {
// Handle interstitial ad clicked
};
Getting the Number of Interstitials Loaded
To get the number of interstitials loaded, use the GetNumberOfInterstitialsLoaded
method:
int GetNumberOfInterstitialsLoaded();
Example:
int numberOfInterstitials = CrossMauiMTAdmob.Current.GetNumberOfInterstitialsLoaded();
Only the licensed version allows to load multiple interstitials and show them when needed.
Emptying the Interstitial Ads List
To empty the interstitial ads list, use the EmptyInterstitialAdsList
method:
void EmptyInterstitialAdsList();
Example:
CrossMauiMTAdmob.Current.EmptyInterstitialAdsList();
Use this method to clear the list of loaded interstitial ads. Normally you don't need to use it as the library automatically removes loaded ads that are too old (1 hour) as they might be not valid anymore.
Rewarded Ads
This documentation provides an overview of how to use rewarded ads with the CrossMauiMTAdmob.Current
interface.
Loading a Rewarded Ad
To load a rewarded ad, use the LoadRewarded
method with the specified ad unit:
void LoadRewarded(string adUnit);
Example:
CrossMauiMTAdmob.Current.LoadRewarded("your-ad-unit-id");
Checking if a Rewarded Ad is Loaded
To check if a rewarded ad is loaded, use the IsRewardedLoaded
method:
bool IsRewardedLoaded();
Example:
bool isLoaded = CrossMauiMTAdmob.Current.IsRewardedLoaded();
if (isLoaded) {
// Rewarded ad is loaded
}
Showing a Rewarded Ad
To show the loaded rewarded ad, use the ShowRewarded
method:
void ShowRewarded();
Example:
if (CrossMauiMTAdmob.Current.IsRewardedLoaded()) {
CrossMauiMTAdmob.Current.ShowRewarded();
}
Handling Rewarded Ad Events
The plugin provides several events to handle rewarded ad lifecycle events:
event EventHandler OnRewardedLoaded
: Raised when a rewarded ad is loaded.event EventHandler<MTEventArgs> OnRewardedFailedToLoad
: Raised when a rewarded ad fails to load.event EventHandler OnRewardedOpened
: Raised when a rewarded ad is opened.event EventHandler OnRewardedClosed
: Raised when a rewarded ad is closed.event EventHandler<MTEventArgs> OnRewardedFailedToShow
: Raised when a rewarded ad fails to show.event EventHandler OnRewardedImpression
: Raised when a rewarded ad impression occurs.event EventHandler OnRewardedClicked
: Raised when a rewarded ad is clicked.event EventHandler<RewardEventArgs> OnUserEarnedReward
: Raised when the user earns a reward.
Example:
CrossMauiMTAdmob.Current.OnRewardedLoaded += (sender, args) => {
// Handle rewarded ad loaded
};
CrossMauiMTAdmob.Current.OnRewardedFailedToLoad += (sender, args) => {
// Handle rewarded ad failed to load
};
CrossMauiMTAdmob.Current.OnRewardedOpened += (sender, args) => {
// Handle rewarded ad opened
};
CrossMauiMTAdmob.Current.OnRewardedClosed += (sender, args) => {
// Handle rewarded ad closed
};
CrossMauiMTAdmob.Current.OnRewardedFailedToShow += (sender, args) => {
// Handle rewarded ad failed to show
};
CrossMauiMTAdmob.Current.OnRewardedImpression += (sender, args) => {
// Handle rewarded ad impression
};
CrossMauiMTAdmob.Current.OnRewardedClicked += (sender, args) => {
// Handle rewarded ad clicked
};
CrossMauiMTAdmob.Current.OnUserEarnedReward += (sender, args) => {
// Handle user earned reward
var reward = args.Reward;
// reward.Type and reward.Amount
};
Getting the Number of Rewarded Ads Loaded
To get the number of rewarded ads loaded, use the GetNumberOfRewardedLoaded
method:
int GetNumberOfRewardedLoaded();
Example:
int numberOfRewarded = CrossMauiMTAdmob.Current.GetNumberOfRewardedLoaded();
Only the licensed version allows to load multiple rewarded ads and show them when needed.
Emptying the Rewarded Ads List
To empty the rewarded ads list, use the EmptyRewardedAdsList
method:
void EmptyRewardedAdsList();
Example:
CrossMauiMTAdmob.Current.EmptyRewardedAdsList();
Use this method to clear the list of loaded rewarded ads. Normally you don't need to use it as the library automatically removes loaded ads that are too old (1 hour) as they might be not valid anymore.
Rewarded Interstitial Ads
This documentation provides an overview of how to use rewarded interstitial ads
Loading a Rewarded Interstitial Ad
To load a rewarded interstitial ad, use the LoadRewardedInterstitial
method with the specified ad unit:
void LoadRewardedInterstitial(string adUnit);
Example:
CrossMauiMTAdmob.Current.LoadRewardedInterstitial("your-ad-unit-id");
Checking if a Rewarded Interstitial Ad is Loaded
To check if a rewarded interstitial ad is loaded, use the IsRewardedInterstitialLoaded
method:
bool IsRewardedInterstitialLoaded();
Example:
bool isLoaded = CrossMauiMTAdmob.Current.IsRewardedInterstitialLoaded();
if (isLoaded) {
// Rewarded interstitial ad is loaded
}
Showing a Rewarded Interstitial Ad
To show the loaded rewarded interstitial ad, use the ShowRewardedInterstitial
method:
void ShowRewardedInterstitial();
Example:
if (CrossMauiMTAdmob.Current.IsRewardedInterstitialLoaded()) {
CrossMauiMTAdmob.Current.ShowRewardedInterstitial();
}
Handling Rewarded Interstitial Ad Events
The plugin provides several events to handle rewarded interstitial ad lifecycle events:
event EventHandler OnRewardedInterstitialLoaded
: Raised when a rewarded interstitial ad is loaded.event EventHandler<MTEventArgs> OnRewardedInterstitialFailedToLoad
: Raised when a rewarded interstitial ad fails to load.event EventHandler OnRewardedInterstitialOpened
: Raised when a rewarded interstitial ad is opened.event EventHandler OnRewardedInterstitialClosed
: Raised when a rewarded interstitial ad is closed.event EventHandler<MTEventArgs> OnRewardedInterstitialFailedToShow
: Raised when a rewarded interstitial ad fails to show.event EventHandler OnRewardedInterstitialImpression
: Raised when a rewarded interstitial ad impression occurs.event EventHandler OnRewardedInterstitialClicked
: Raised when a rewarded interstitial ad is clicked.event EventHandler<RewardEventArgs> OnUserEarnedReward
: Raised when the user earns a reward.
Example:
CrossMauiMTAdmob.Current.OnRewardedInterstitialLoaded += (sender, args) => {
// Handle rewarded interstitial ad loaded
};
CrossMauiMTAdmob.Current.OnRewardedInterstitialFailedToLoad += (sender, args) => {
// Handle rewarded interstitial ad failed to load
};
CrossMauiMTAdmob.Current.OnRewardedInterstitialOpened += (sender, args) => {
// Handle rewarded interstitial ad opened
};
CrossMauiMTAdmob.Current.OnRewardedInterstitialClosed += (sender, args) => {
// Handle rewarded interstitial ad closed
};
CrossMauiMTAdmob.Current.OnRewardedInterstitialFailedToShow += (sender, args) => {
// Handle rewarded interstitial ad failed to show
};
CrossMauiMTAdmob.Current.OnRewardedInterstitialImpression += (sender, args) => {
// Handle rewarded interstitial ad impression
};
CrossMauiMTAdmob.Current.OnRewardedInterstitialClicked += (sender, args) => {
// Handle rewarded interstitial ad clicked
};
CrossMauiMTAdmob.Current.OnUserEarnedReward += (sender, args) => {
// Handle user earned reward
var reward = args.Reward;
// reward.Type and reward.Amount
};
Getting the Number of Rewarded Interstitial Ads Loaded
To get the number of rewarded interstitial ads loaded, use the GetNumberOfRewardedInterstitialsLoaded
method:
int GetNumberOfRewardedInterstitialsLoaded();
Example:
int numberOfRewardedInterstitials = CrossMauiMTAdmob.Current.GetNumberOfRewardedInterstitialsLoaded();
Only the licensed version allows to load multiple rewarded interstitial ads and show them when needed.
Emptying the Rewarded Interstitial Ads List
To empty the rewarded interstitial ads list, use the EmptyRewardedInterstitialAdsList
method:
void EmptyRewardedInterstitialAdsList();
Example:
CrossMauiMTAdmob.Current.EmptyRewardedInterstitialAdsList();
Use this method to clear the list of loaded rewarded interstitial ads. Normally you don't need to use it as the library automatically removes loaded ads that are too old (1 hour) as they might be not valid anymore.
App Open Ads
App Open Ads are only available in the licensed version of the plugin. To enable the App Open Ads in you apps, you can buy the license here.The plugin provides functionality to load and display App Open ads in an Android and iOS application, while handling ad loading callbacks and error handling.
To initialize the Open Ads in your app, you need to set the corresponding variable enableOpenAds in
CrossMauiMTAdmob.Current.Init(...)
In the same Init, you also need to pass your Open App Id in openAdsId.
To load and show your Open Ads when the app starts or goes into foreground, you need the following code:
Android
protected override void OnResume()
{
base.OnResume();
CrossMauiMTAdmob.Current.OnResume();
}
iOS
public override void OnActivated(UIApplication application)
{
base.OnActivated(application);
CrossMauiMTAdmob.Current.OnResume();
}
Methods
None
Events
OnAppOpenAdLoaded
: Event raised when an app open ad is loaded.OnAppOpenOpened
: Event raised when an app open ad is opened.OnAppOpenClosed
: Event raised when an app open ad is closed.OnAppOpenFailedToLoad
: Event raised when an app open ad fails to load.OnAppOpenFailedToShow
: Event raised when an app open ad fails to show.OnAppOpenImpression
: Event raised when an app open ad impression occurs.OnAppOpenClicked
: Event raised when an app open ad is clicked.
IMTAdmob Native Ads Documentation
This documentation provides an overview of how to use native ads with the CrossMauiMTAdmob.Current
interface.
Loading a Native Ad
To load a native ad, use the LoadNativeAd
method:
void LoadNativeAd();
Example:
CrossMauiMTAdmob.Current.LoadNativeAd();
Loading Multiple Native Ads
To load up to 5 native ads (only on Android), use the LoadNativeAds
method:
void LoadNativeAds(int count);
Example:
CrossMauiMTAdmob.Current.LoadNativeAds(5);
Showing a Native Ad
To show a loaded native ad, use the ShowNativeAd
method:
void ShowNativeAd();
Example:
myNativeAds.ShowNativeAd();
Handling Native Ad Events
The plugin provides several events to handle native ad lifecycle events:
event EventHandler OnNativeAdLoaded
: Raised when a native ad is loaded.event EventHandler OnNativeAdOpened
: Raised when a native ad is opened.event EventHandler OnNativeAdClosed
: Raised when a native ad is closed.event EventHandler<MTEventArgs> OnNativeAdFailedToLoad
: Raised when a native ad fails to load.event EventHandler<MTEventArgs> OnNativeAdFailedToShow
: Raised when a native ad fails to show.event EventHandler OnNativeAdImpression
: Raised when a native ad impression occurs.event EventHandler OnNativeAdClicked
: Raised when a native ad is clicked.
Example:
CrossMauiMTAdmob.Current.OnNativeAdLoaded += (sender, args) => {
// Handle native ad loaded
};
CrossMauiMTAdmob.Current.OnNativeAdOpened += (sender, args) => {
// Handle native ad opened
};
CrossMauiMTAdmob.Current.OnNativeAdClosed += (sender, args) => {
// Handle native ad closed
};
CrossMauiMTAdmob.Current.OnNativeAdFailedToLoad += (sender, args) => {
// Handle native ad failed to load
};
CrossMauiMTAdmob.Current.OnNativeAdFailedToShow += (sender, args) => {
// Handle native ad failed to show
};
CrossMauiMTAdmob.Current.OnNativeAdImpression += (sender, args) => {
// Handle native ad impression
};
CrossMauiMTAdmob.Current.OnNativeAdClicked += (sender, args) => {
// Handle native ad clicked
};
Consent and Ump
Under the Google EU User Consent Policy, you must make certain disclosures to your users in the European Economic Area (EEA) along with the UK and obtain their consent to use cookies or other local storage, where legally required, and to use personal data (such as AdID) to serve ads. The licensed version of the plugin allows you to automatically ask consent to your users that need to provide it (EEA & UK).
To enable this feature and automatically request the consent on your apps, you can buy the license here.
Requesting User Consent
The consent is requested automatically when you init the plugin. If you prefer, you can avoid to show the consent at startup (set the corresponding parameter in the Init method) and show it at a later time.
To request user consent, use the InitialiseAndShowConsentForm
method:
void InitialiseAndShowConsentForm();
Example:
CrossMauiMTAdmob.Current.InitialiseAndShowConsentForm();
Checking User Consent Status
To check the current user consent status, use the GetConsentStatus
method:
ConsentStatus GetConsentStatus();
Example:
ConsentStatus status = CrossMauiMTAdmob.Current.GetConsentStatus();
if (status == ConsentStatus.Obtained) {
// User has granted consent
} else {
// User has not granted consent
}
Handling Consent Events
The plugin provides several events to handle user consent lifecycle events:
event EventHandler OnConsentFormLoaded
: Raised when the consent form is loaded.event EventHandler<MTEventArgs> OnConsentFormLoadFailed
: Raised when the consent form fails to load.event EventHandler OnConsentFormOpened
: Raised when the consent form is opened.event EventHandler OnConsentFormClosed
: Raised when the consent form is closed.event EventHandler<MTEventArgs> OnConsentFormError
: Raised when there is an error with the consent form.
Example:
CrossMauiMTAdmob.Current.OnConsentFormLoaded += (sender, args) => {
// Handle consent form loaded
};
CrossMauiMTAdmob.Current.OnConsentFormLoadFailed += (sender, args) => {
// Handle consent form load failed
};
CrossMauiMTAdmob.Current.OnConsentFormOpened += (sender, args) => {
// Handle consent form opened
};
CrossMauiMTAdmob.Current.OnConsentFormClosed += (sender, args) => {
// Handle consent form closed
};
CrossMauiMTAdmob.Current.OnConsentFormError += (sender, args) => {
// Handle consent form error
};
Known issues and fix
"Xamarin.Google.iOS.UserMessagingPlatform" Version="1.1.0.1"
to your iOS project.
Replace the line
<_GoogleUserMessagingPlatformAssemblyName> Google.UserMessagingPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
with
<_GoogleUserMessagingPlatformAssemblyName>Google.UserMessagingPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Xamarin.AndroidX.Lifecycle.LiveData Version="2.6.2.3"
"Xamarin.AndroidX.Activity" Version="1.8.2"
"Xamarin.AndroidX.Activity.Ktx" Version="1.8.2"
Links
VIDEO
Get Filthy Rich by Monetizing Your Xamarin.Forms App with AdMob - Gerald Versluis (Youtube)
LINKS
Available on Nuget: https://www.nuget.org/packages/Plugin.MauiMTAdmob
Tutorial: https://www.xamarinexpert.it/admob-made-easy/
To report any issue: https://github.com/marcojak/MTAdmob/issues
DISCLAIMER OF LIABILITY
By using the MTAdmob plugin you agree that:
- The Plugin is provided "as is" without any warranties or guarantees of any kind, either expressed or implied.
- I shall not be responsible or liable for any direct, indirect, incidental, special, or consequential damages arising out of the use or inability to use the Plugin.
- I do not warrant that the Plugin will meet your specific requirements or operate without interruption.
You acknowledge that the use of the Plugin is at your own risk. The author of the plugin disclaims all liability for any damage to your computer system or loss of data that results from the use of the Plugin.
This disclaimer of liability is a fundamental part of the agreement between you and the author of the plugin. You agree that the limitations and exclusions of liability set forth in this disclaimer are reasonable and fair.
If you do not agree to these terms, do not use the Plugin.