Ho sviluppato un gioco con MonoGame per alcuni mesi e l'ho appena pubblicato pochi giorni fa. Ora, sto cercando di far funzionare correttamente AdMob in modo da poter pubblicare una versione gratuita della app. Sono un novizio per i layout di Android, quindi non ho idea di cosa sto facendo.Come visualizzare l'annuncio AdMob nella parte inferiore dello schermo nell'app per Android con Xamarin/Monogame?
Sono stato in grado di visualizzare un annuncio all'interno della mia app dopo aver setacciato il Web per alcune informazioni sull'implementazione di AdMob con MonoGame, ma l'app viene sempre visualizzata nella parte superiore dello schermo. Ho avuto pochissima fortuna nel trovare informazioni sul riposizionamento dell'annuncio in modo specifico con MonoGame/Xamarin.
Ecco il codice che funziona, e visualizza l'annuncio sulla parte superiore dello schermo:
Activity1.cs:
public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity
{
internal View adView = null;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Game1.Activity = this;
var g = new Game1();
FrameLayout fl = new FrameLayout(this);
fl.AddView(g.Window);
adView = AdMobHelper.CreateAdView(this, "<my id here>");
var layoutParams = new ViewGroup.LayoutParams(Android.Views.ViewGroup.LayoutParams.FillParent, Android.Views.ViewGroup.LayoutParams.WrapContent);
fl.AddView(adView, layoutParams);
SetContentView(fl);
AdMobHelper.RequestFreshAd(adView);
g.Run();
}
}
Questo funziona senza layout aggiuntivi. Ora, ecco il codice che ho assimilato da alcuni siti web che coprono l'argomento:
Activity1.cs:
public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity
{
internal View adView = null;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Game1.Activity = this;
var g = new Game1();
SetContentView(Resource.Layout.Main);
View gameView = FindViewById(Resource.Id.GameView);
ViewGroup parent = (ViewGroup)gameView.Parent;
int index = parent.IndexOfChild(gameView);
parent.RemoveView(gameView);
parent.AddView(g.Window, index);
adView = FindViewById(Resource.Id.Ad);
parent = (ViewGroup)adView.Parent;
index = parent.IndexOfChild(adView);
parent.RemoveView(adView);
var layoutParams = adView.LayoutParameters;
adView = AdMobHelper.CreateAdView(this, "<my id here>");
adView.LayoutParameters = layoutParams;
parent.AddView(adView, index);
AdMobHelper.RequestFreshAd(adView);
g.Run();
}
}
e il mio ulteriore file di Main.axml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<SurfaceView
android:id="@+id/GameView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<com.google.ads.AdView
android:id="@+id/Ad"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom" />
</FrameLayout>
Tuttavia, quando eseguo questo, corro in un arresto alla linea "SetContentView (Resource.Layout.Main);" in Activity1.cs. Visual Studio restituisce l'errore:
Unhandled Exception:
Android.Views.InflateException: Binary XML file line #1: Error inflating class com.admob.android.ads.AdView
Sebbene non ci siano errori nella finestra di output degli errori per controllare ... Qualsiasi aiuto? Idealmente, mi piacerebbe solo visualizzare questo annuncio di AdMob in fondo alla mia app. Grazie!
Il collegamento è interrotto –