使用 Admob SDK 版本 6.12.0 的 Xamarin iOS 应用程序上的 Admob 问题

Posted

技术标签:

【中文标题】使用 Admob SDK 版本 6.12.0 的 Xamarin iOS 应用程序上的 Admob 问题【英文标题】:Admob issues on Xamarin iOS apps with Admob SDK version 6.12.0 【发布时间】:2014-12-10 12:20:33 【问题描述】:

我目前正在使用 Google AdMob Xamarin 组件(版本 6.12.0 - 请参阅 https://components.xamarin.com/view/googleadmob)在 ios 应用上显示 DFP 插页式广告和横幅广告(在表格视图中的不同位置显示)。当我在 Visual Studio 2013 中调试时,我得到以下输出:

<Google:html> You are currently using version 6.12.0 of the SDK, which doesn't
officially support iOS 8. Please consider updating your SDK to the most recent
sdk version, 6.12.2, to get iOS 8 support, including a fix for smart banner
rendering in landscape mode. The latest SDK can be downloaded from 
http://goo.gl/iGzfsP. A full list of release notes is available at
https://developers.google.com/mobile-ads-sdk/docs/admob/ios/rel-notes.

根据 Xamarin 组件的页面,6.12.0 确实支持 iOS 8。我应该忽略收到的警告吗?如果没有,当组件的最新版本只有 6.12.0 时,我该如何使用 6.12.2?可以继续使用 6.12.0 还是会导致问题?

我注意到横幅广告在 iOS8 上并没有真正显示在正确的位置,它们稍微偏右和偏低。这是因为 SDK 还是 iOS8 中关于单元格显示方式的其他一些变化?

下面是我展示横幅广告的方式:

public void InitialiseBanner(AdMobView property)
  
        _bannerViewDelegate = new AdMobBannerViewDelegate();

        _bannerView = new DFPBannerView();


        float x = (CurrentWidth/2) - (AdvertWidth/2);

        _bannerView.RootViewController = this;
        _bannerView.BackgroundColor = UIColor.White;
        _bannerView.Delegate = _bannerViewDelegate;
        _bannerView.Frame = new RectangleF(x, 5, AdvertWidth, 50);

        View.Frame = new RectangleF(0, 0, CurrentWidth, 50);
        View.AddSubview(_bannerView);
        _bannerView.AdUnitID = "/**UNITIDREMOVED**/" + property.AdAlias;
        GADRequest request = GADRequest.Request;

        .
        .
        .

        _bannerView.LoadRequest(request);

        View.BringSubviewToFront(_bannerView);

        if (DeviceHelper.IsIos8OrGreater && RespondsToSelector(new Selector("separatorInset")))
        
            _bannerView.LayoutMargins = UIEdgeInsets.Zero;
        


    

【问题讨论】:

根据文档 (developers.google.com/mobile-ads-sdk/docs/admob/ios/rel-notes),6.12.0 版本实际上支持 iOS 8,但也许他们对支持做了一些更改。 Google AdMob 6.12.2 组件计划在 1 月初发布。 【参考方案1】:

对于普通横幅,请尝试像这样加载您的 AdView: (这是我的工作示例)

作为类级声明,键入:

    GADBannerView adView;
    bool viewOnScreen = false;

    // Get you own AdmobId from: http://www.google.com/ads/admob/
    const string AdmobId = "<your admob id>";

然后在您的 viewDidLoad 中,您可以指定横幅的位置并加载它:

            adView = new GADBannerView (size: GADAdSizeCons.Banner, origin: new PointF (0, UIScreen.MainScreen.Bounds.Height-100)) 
            AdUnitID = AdmobId,
            RootViewController = this
        ;

        adView.DidReceiveAd += (sender, args) => 
            if (!viewOnScreen) View.AddSubview (adView);
            viewOnScreen = true;
        ;

        adView.LoadRequest (GADRequest.Request);

我也遇到了同样的错误,但这并不重要。我也首先认为这是问题所在,但我的设置有点错误,我认为您的代码也是如此。在我的示例中,我刚刚将 AdView 添加到 MainView,但是使用自定义单元格,您应该能够在 UITable 视图中实现它。另外,请查看组件部分中提供的示例。至于显示 DFP 插页式广告:设置也一定有问题,但我在您提供的代码中看不到。

【讨论】:

以上是关于使用 Admob SDK 版本 6.12.0 的 Xamarin iOS 应用程序上的 Admob 问题的主要内容,如果未能解决你的问题,请参考以下文章

Facebook admob 中介 SDK 导致崩溃

我真是一头雾水,GoogleAdMobAdsSdk-6.4.1 是 Admob SDK 的最新版本吗?

iOS - Google AdMob v6.12.0 - “idfa 类丢失,不会收集 idfa”

在科尔多瓦上使用 admob 的 Google 同意 SDK

使用 AdMob SDK 调用 DFP 时出现无效的广告请求

Admob集成到Android应用程序中