Windows Phone 8:AdMob插页式广告显示不正确

3
当我们试图在应用程序中显示插页式广告时,广告不能正确地显示。
当应用程序在720p模拟器上运行时,广告以正确的大小显示: 720p screen 在WVGA上,广告被切成四分之一(似乎广告的大小是针对720p屏幕的): WVGA screen 至于WXGA,广告周围显示有白色边框(我猜像WVGA一样,广告大小是针对720p屏幕的): WXGA 我们在设备上进行了测试,以确保问题不是模拟器特定的,但我们得到了相同的结果。
这是我们用来创建广告的代码:
InterstitialAd _ad = new InterstitialAd("<ADMOB_ID>");
AdRequest adRequest = new AdRequest();
_ad.ReceivedAd += delegate(object sender, AdEventArgs e)
{
    _ad.ShowAd();
};
_ad.LoadAd(adRequest);

有没有一种方法来定义广告的尺寸?或者这是AdMob SDK的一个错误?
3个回答

1

无论如何都没有意义,因为当用户点击广告并按下返回按钮时,WP应用程序会崩溃,这是由于最新的Abmob SDK引起的。


有一个解决方法(来源:https://groups.google.com/d/msg/google-admob-ads-sdk/vw61ZdJALYo/OyOwBtV8URUJ)。基本上,在你的App.xaml.cs中添加以下内容:private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) {if(Debugger.IsAttached){Debugger.Break();} if(e.ExceptionObject==null||e.ExceptionObject.Message==null){return;} String ex = e.ExceptionObject.ToString().ToLower(); if(ex.Contains("frameworkdispatcher.update")||ex.Contains("the given key was not present in the dictionary")){e.Handled = true;}else{}}虽然不太美观,但它确实有效 :) - Marco Batista
没有。那个修复是针对“不同”的错误。该修复解决了您的应用程序无法通过认证的问题,因为即使使用横幅广告,AdMob SDK也会使设备音频失效。您引用的代码可以解决这个问题。据我所知,目前还没有解决插页式广告在按下“返回”按钮时导致应用程序崩溃的方法。 - user3460731
嗯,奇怪,它在我们的应用程序上运行正常,所以我想我们很幸运 :) - Marco Batista
当广告被展示时,请点击广告。当您尝试使用返回按钮返回应用程序时,应用程序很可能会崩溃。这个错误已经被广泛报告,AdMob也意识到了它,但似乎不感兴趣修复它。 - user3460731
是的,我知道,但就像我说的那样,在我们的应用程序上它没有崩溃(至少自从我们添加了那一行代码以来[顺便说一下,这与我链接的那个不同])。我们现在唯一的问题是:广告不能自动关闭(像Android或iOS那样),以及在比720p更小和更大的屏幕上显示广告不正确。 - Marco Batista

0

不需要提供大小等信息...只需按照以下代码操作,在Windows Phone 8上可以很好地工作。

namespace MainPage
{
  public partial class MainPage: PhoneApplicationPage
   {
       private InterstitialAd interstitialAd;
       private AdRequest adRequest;

       public MainPage()
       {
          InitializeComponent();
          InterstitialAds();
       }

       private void InterstitialAds()
       {
          interstitialAd = new InterstitialAd("Unit-ID"); // Unit ID is a Unique Key pri
          adRequest = new AdRequest();

          interstitialAd.ReceivedAd += OnAdReceived;
          interstitialAd.LoadAd(adRequest);
        }

       private void OnAdReceived(object sender, AdEventArgs e)
       {
           System.Diagnostics.Debug.WriteLine("Ad received successfully");
           interstitialAd.ShowAd();
       }
    }
}

我以与您相同的方式显示广告。您使用的SDK版本是多少? - Marco Batista

0

终于我找到了一些关于这个问题的信息...恐怕不是好消息。

根据AdMob SDK的一位成员所说,这是一个已知的bug,目前还没有解决方案。

来源:AdMob SDK Google Group - WP8已知问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接