使用 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 问题的主要内容,如果未能解决你的问题,请参考以下文章
我真是一头雾水,GoogleAdMobAdsSdk-6.4.1 是 Admob SDK 的最新版本吗?
iOS - Google AdMob v6.12.0 - “idfa 类丢失,不会收集 idfa”
在科尔多瓦上使用 admob 的 Google 同意 SDK