ios - 在 Swift3 的 uiViewController 中添加广告横幅

标签 ios swift3 banner admob

我想添加和广告横幅,我使用了谷歌框架

pod 'Google-Mobile-Ads-SDK'

在我的 pod 文件中

我向我的 uiViewController > GoogleBannerView 添加了一个 View

这是我的代码

导入 GoogleMobileAds

在viewdidLoad中:

    GoogleBannerView.adUnitID = "ca-app-pub-5462393278951241/1172515484"
    GoogleBannerView.delegate = self
    GoogleBannerView.rootViewController = self
    GoogleBannerView.load(GADRequest())

但它没有在 View 中显示任何内容,并在控制台中给我一条消息:

要在此设备上获取测试广告,请调用:request.testDevices = @[ kGADSimulatorID ];

感谢任何帮助! 谢谢..

最佳答案

我会显示一个页脚 (320x50) 广告,如果有广告,该广告将从底部升起;如果不再有广告可供转换,则该广告会逐渐消失。这是一个繁重的实现,如果您不想隐藏/显示空间,可以简化。

我的 UIViewController 有一个带有约束的硬编码 View (宽度 320,高度 50,水平居中,固定到安全区域的底部。我链接如下:

  • 广告 View 到横幅 View
  • 广告 View 高度限制为bannerViewHeightConstraint

Note that in the code sample I use your adUnitID. Our ID looks different as we are using DFP.

import GoogleMobileAds

class SomeClass: UIViewController
{
    @IBOutlet weak var bannerView: DFPBannerView!
    @IBOutlet weak var bannerViewHeightConstraint: NSLayoutConstraint!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        bannerView.delegate = self
        bannerView.adUnitID = "ca-app-pub-5462393278951241/1172515484"
        bannerView.rootViewController = self
        bannerView.validAdSizes = [ NSValueFromGADAdSize(kGADAdSizeBanner) ]
        bannerView.translatesAutoresizingMaskIntoConstraints = false
    }

    override func viewWillAppear(_ animated: Bool)
    {
        super.viewWillAppear(animated)
        bannerView.frame.origin.y += bannerView.frame.size.height
        bannerView.isHidden = true

        let request = GADRequest()
    //***** NOTE : per Google Documentation (https://developers.google.com/mobile-ads-sdk/docs/dfp/ios/test-ads)
    //        "iOS simulators are automatically configured as test devices."
//      request.testDevices = [ kGADSimulatorID ] //***** This was requried in previous versions, now on automatically done, don't think you can disable it.
        bannerView.load(request)
    }
}

extension SomeClass : GADBannerViewDelegate
{
    /// Tells the delegate an ad request loaded an ad.
    func adViewDidReceiveAd(_ bannerView: GADBannerView) {
        print("*** adViewDidReceiveAd for 'Banner' at \(Date())")
        if bannerView == self.bannerView
        {
            if bannerView.isHidden
            {
                bannerView.frame.origin.y += bannerView.frame.size.height
                bannerViewHeightConstraint.constant = 0
                bannerView.isHidden = false

                UIView.animate(withDuration: 0.3, delay: 0.0, options: .curveEaseIn, animations: {
                    bannerView.frame.origin.y -= bannerView.frame.size.height
                    self.bannerViewHeightConstraint.constant = 50
                }, completion: nil )
            }
        }
    }

    /// Tells the delegate an ad request failed.
    func adView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError) {
        print("*** adView:didFailToReceiveAdWithError: \(error.localizedDescription) for 'Banner'")
        if bannerView == self.bannerView
        {
            print("Hidden: \(bannerView.isHidden)")
            if !bannerView.isHidden
            {
                UIView.animate(withDuration: 0.3, delay: 0.0, options: .curveEaseIn, animations: {
                    bannerView.frame.origin.y += bannerView.frame.size.height
                    self.bannerViewHeightConstraint.constant = 0
                }, completion: {finished in
                    if finished
                    {
                        bannerView.isHidden = true
                    }
                })
            }
        }
    }

    /// Tells the delegate that a full screen view will be presented in response
    /// to the user clicking on an ad.
    func adViewWillPresentScreen(_ bannerView: GADBannerView) {
        print("*** adViewWillPresentScreen for 'Banner'")
    }

    /// Tells the delegate that the full screen view will be dismissed.
    func adViewWillDismissScreen(_ bannerView: GADBannerView) {
        print("*** adViewWillDismissScreen for 'Banner'")
    }

    /// Tells the delegate that the full screen view has been dismissed.
    func adViewDidDismissScreen(_ bannerView: GADBannerView) {
        print("*** adViewDidDismissScreen for 'Banner'")
    }

    /// Tells the delegate that a user click will open another app (such as
    /// the App Store), backgrounding the current app.
    func adViewWillLeaveApplication(_ bannerView: GADBannerView) {
        print("*** adViewWillLeaveApplication for 'Banner'")
    }
}

关于ios - 在 Swift3 的 uiViewController 中添加广告横幅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48291823/

相关文章:

ios - swift 3 图 : FILTER and CONTAINS for Entities

macos - NSSplitviewController 以编程方式

java - Spring Boot中的classpath和classpath*有什么区别?

html - 随着浏览器窗口的增加,随时保持横幅响应

ios - swift:如何在另一个 View Controller 中访问一个变量?

ios - 在 iPhone 上使用 OAuth2 访问 Google Calendar API

swift - 如何从选择器中获取值(或索引)并将其与实体属性的值进行比较?

html - 如何使页眉直接穿过页面?

ios - 可以在 iPad 上编辑 Firebase Cloud Functions 并部署更改吗?

javascript - 适用于 Android 和 iOS 的 Google channel API