2013-04-12 3 views
7

Я развиваю игру с MonoGame в течение нескольких месяцев, и я только что выпустил ее несколько дней назад. Теперь я пытаюсь заставить AdMob работать правильно, поэтому я могу освободить бесплатную облегченную версию приложения. Я новичок в макетах Android, поэтому я понятия не имею, что я делаю.Как показывать объявление AdMob в нижней части экрана в приложении для Android с помощью Xamarin/Monogame?

Я смог получить объявление для просмотра в своем приложении после очистки веб-страницы за информацию об использовании AdMob с MonoGame, но приложение всегда отображается в верхней части экрана. Мне очень не повезло найти информацию о перепозиционировании объявления специально с MonoGame/Xamarin.

Вот код, который работает и отображает объявление в верхней части экрана:

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(); 


     } 
    } 

Это работает без каких-либо дополнительных макетов. Теперь, вот код, который я усвоил от нескольких веб-сайтов, охватывающих темы:

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(); 
     } 
    } 

и мой дополнительный 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> 

Однако, когда я запускаю это, я сталкиваюсь с сбоем в строке «SetContentView (Resource.Layout.Main)»; в Activity1.cs. Visual Studio дает ошибку:

Unhandled Exception: 
Android.Views.InflateException: Binary XML file line #1: Error inflating class com.admob.android.ads.AdView 

Хотя ошибок в окне вывода ошибок нет, чтобы проверить ... Любая помощь? В идеале, я хотел бы просто добавить это объявление admob в нижней части моего приложения. Благодаря!

ответ

2

Это код для добавления admob. Я сделал успешно, он может работать для вас

<com.google.ads.AdView 
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
android:id="@+id/adView" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
ads:adSize="BANNER" 
ads:adUnitId="Your Admob 15 digit alpha numeric ID" 
/> 

и в своей деятельности, в OnCreate метод добавить следующий код

AdView adview = (AdView)findViewById(R.id.adView); 
AdRequest re = new AdRequest(); 
re.setTesting(true); 
adview.loadAd(re); 

Это работа для меня. Для более подробной информации вы можете посетить сайт AdMob

1

Решение # 2
Быстрый способ без кодирования, чтобы просто добавить Xmlns к элементу приложения и ads:loadAdOnCreate="true" к adView элементу в AndroidManifest.xml

0

Это должно работать на вас, я использую его таким образом без проблем.

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); 
     LinearLayout ll = new LinearLayout(this); 
     ll.setOrientation(LinearLayout.VERTICAL); 
     ll.setGravity(Gravity.BOTTOM); 
     fl.AddView(g.Window); 
     adView = AdMobHelper.CreateAdView(this, "<my id here>"); 
     ll.addView(adView); 
     fl.AddView(ll); 
     SetContentView(fl); 
     AdMobHelper.RequestFreshAd(adView); 
     g.Run(); 


    } 
} 
Смежные вопросы