【问题标题】:Google AdMob is not working in Xamarin Form iOS for larger screen devices like iPhone 7 and 7 PlusGoogle AdMob 不适用于 iPhone 7 和 7 Plus 等大屏幕设备的 Xamarin Form iOS
【发布时间】:2017-06-01 13:51:45
【问题描述】:

我正在使用 Xamarin Forms 平台开发 iOS 应用程序。我正在使用 Google AdMob 并按照此 URL http://motzcod.es/post/154696375922/xamarinforms-google-admob-ads-in-ios 实施它

它在 iOS 版本为 10.2 的所有设备和模拟器上都能正常运行

它也适用于 iOS 10.3 版,但仅适用于 iPhone 5s 和 5c 等少数设备,但不适用于 iPhone 6、6s、6s Plus、7、7 Plus 的设备和模拟器

进一步调试会引发以下错误,“Error Domain=com.google.ads Code=13”Request Error: Received invalid response.” UserInfo={NSLocalizedDescription=Request Error: Received invalid response., NSLocalizedFailureReason=Request Error: Received无效响应。}"

我搜索了这个错误并应用了修复,但效果不佳。

如果有人可以提供帮助,我将不胜感激。谢谢

【问题讨论】:

  • 我可能弄错了,但我相信现在更高版本的 iOS 要求 URL 必须是“https”而不是“http”
  • 您好,为了让它运行,必须添加一个密钥 NSAppTransportSecurity,我在第一次运行项目时已经这样做了。
  • 有人可以帮忙吗?我正在处理同样的问题。

标签: ios iphone xamarin.ios xamarin.forms google-admob


【解决方案1】:

仅供参考,我关注了这个博客http://motzcod.es/post/154696375922/xamarinforms-google-admob-ads-in-ios

iOS的自定义渲染器中这样使用BannerView

        adView = new BannerView(size: AdSizeCons.SmartBannerPortrait,
                                       origin: new CGPoint(0, UIScreen.MainScreen.Bounds.Size.Height - AdSizeCons.Banner.Size.Height))
        {
            AdUnitID = bannerId,
            RootViewController = GetVisibleViewController()
        };

不要使用参数化构造函数创建它的对象,而是像这样创建它

        adView = new BannerView()
        {
            AdUnitID = bannerId,
            RootViewController = GetVisibleViewController()
        };

上述实施解决了所有 iOS 版本和设备中的问题。

【讨论】:

    【解决方案2】:

    您可能想尝试App Transport Security 并将以下行添加到Info.plist

    <key>NSAppTransportSecurity</key><dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/></dict>
    

    这可能会解决您的问题。

    【讨论】:

    • 您好,感谢您的回复。我在第一次运行项目时已经添加了这些键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    相关资源
    最近更新 更多