Monogame & Google Ads

Hello there!

If someone could help me (or anyone) on the subject of integrating Ads (maybe AdMob) in Monogame 3.3, it would be great :smile: How to do it in the most current version? Any tutorial? Iā€™ve never done it before, so any help is apprieciated.

Thanks!

I did a rough implementation of AdMob in Monogame in Doom & Destiny Free for Android and IOS.
You essentially have to use the Xamarin AdMob component and follow the samples in the componentā€¦
If you have some specific question iā€™ll be glad to help!

Wellā€¦ thank you! Thats a start :smile:.

Download the Google Play Services component from the Xamarin Components store. The code below is a test app I put together using the standard Xamarin Studio new Android app template - modify accordingly:

using System;

using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

using Android.Gms.Ads;

namespace GoogleServicesTest
{
[Activity (Label = ā€œGoogleServicesTestā€, MainLauncher = true, Icon = ā€œ@drawable/iconā€)]
public class MainActivity : Activity
{
int count = 1;

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

        // Set our view from the "main" layout resource
        SetContentView (Resource.Layout.Main);

        // Get our button from the layout resource,
        // and attach an event to it
        Button button = FindViewById<Button> (Resource.Id.myButton);
        button.Click += delegate {
            button.Text = string.Format ("{0} clicks!", count++);
        };

        // Begin Admob integration
        var ad = new AdView(this);
        ad.AdSize = AdSize.SmartBanner;
        ad.AdUnitId = "[YOUR ADMOB ID HERE]";
        var requestbuilder = new AdRequest.Builder();
        ad.LoadAd(requestbuilder.Build());

        var layout = FindViewById<LinearLayout>(Resource.Id.mainLayout);

        layout.AddView(ad);
    }
}

}

Hope this helps!

Thanks for the sample! However I did not manage to compile it. After getting Xamarin Google Play Component (succesfully added it to fresh andro project) I could not compile it. Errors were something like resource not found declared in values.xml. After that schemas not declaredā€¦

EDIT 2:
Schema and compile errors solved by adding 1G to java max heap size. Unfortunately, there are still lots of warnings on compile. But I believe itā€™s Xamarin component fault.

EDIT 1:
Okay Iā€™ve successfuly managed to run admob. However I ran into one main problem - ad is not showing up on startup (after first request build). Itā€™s there because when I pause my app and then resume it - ad comes visible. Ad also becomes visible adter scheduled refreshā€¦

EDIT 3:
Ad not showing up on startup fixed. The only way I found is by adding adlistener like this (https://blog.tommyparnell.com/admob-with-xamarin-part-2-interstitialad/) and then pinning up AdLoaded event. In that event you need to call RequestLayout(), ie. like this:

adlistener.AdLoaded += () => { ad.RequestLayout(); };

I hope my time to this solution will help some of you ;).
By the way, next helpful article for beginners - https://blog.tommyparnell.com/admob-with-xamarin-part-1-banner-ads/

Cheers.

2 Likes

@mpeg88 - awesome stuff, glad to hear you got those errors resolved! And apologies for neglecting to mention that my sample was for banner ads, not interstitialsā€¦

You also found a solution to a problem that has been bugging me for a while - the first of my banner ads to load was not being displayed, so there was about a minuteā€™s delay between the game opening and an ad actually showing. But that little trick with the AdListener calling RequestLayout on load seems to have done the trick, so thanks a lot!

I love you ! I got serveral errors too with values.xml and other things ā€¦ It was horrible ! But adding 1G to java max heap size resolve every things ! You re my hero ! Love you <3