admob bannerAd在游戏场景中大约一分钟后显示广告忽略bannerAd.isHidden xcode 8

时间:2016-12-28 19:52:48

标签: ios swift xcode admob

我的游戏有两个bannerAd类型顶部横幅和底部横幅顶部仅在游戏场景中显示,底部仅在主菜单中显示它有效除了某些原因,在游戏过程中大约一分钟后我的顶部横幅隐藏,我的底部显示这个是我的代码

`

    var bannerView = GADBannerView(adSize: kGADAdSizeSmartBannerLandscape)
    var bannerViewPortrait = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)

    override func viewDidLoad() {
            super.viewDidLoad()

            initializeAds()
            initializePortraitAds()

            NotificationCenter.default.addObserver(self, selector: #selector(showBanner), name: Notification.Name("showBanner"), object: nil)
            NotificationCenter.default.addObserver(self, selector: #selector(hideBanner), name: Notification.Name("hideBanner"), object: nil)
            NotificationCenter.default.addObserver(self, selector: #selector(showPortraitBanner), name: Notification.Name("showPortraitBanner"), object: nil)
            NotificationCenter.default.addObserver(self, selector: #selector(hidePortraitBanner), name: Notification.Name("hidePortraitBanner"), object: nil)



            if let view = self.view as! SKView? {
                    if let scene = MainMenuScene(fileNamed: "MainMenu") {
                            scene.scaleMode = .aspectFill
                            view.presentScene(scene)
                    }

                    view.ignoresSiblingOrder = true

                    view.showsFPS = true
                    view.showsNodeCount = true
                    view.showsPhysics = false
            }
    }

    func showBanner() {
            bannerView.isHidden = false
    }
    func showPortraitBanner() {
            bannerViewPortrait.isHidden = false
    }
    func hidePortraitBanner() {
            bannerViewPortrait.isHidden = true
    }
    func hideBanner() {
            bannerView.isHidden = true
    }

    func initializeAds() {
            bannerView.translatesAutoresizingMaskIntoConstraints = false
            view.addSubview(bannerView)
            bannerView.isHidden = true

            bannerView.delegate = self

            bannerView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
            bannerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
            bannerView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true

            bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
            bannerView.rootViewController = self
            bannerView.load(GADRequest())
    }
    func initializePortraitAds() {
            bannerViewPortrait.translatesAutoresizingMaskIntoConstraints = false
            view.addSubview(bannerViewPortrait)
            bannerViewPortrait.isHidden = true

            bannerViewPortrait.delegate = self

            bannerViewPortrait.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
            bannerViewPortrait.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
            bannerViewPortrait.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true

            bannerViewPortrait.adUnitID = "ca-app-pub-3940256099942544/2934735716"
            bannerViewPortrait.rootViewController = self
            bannerViewPortrait.load(GADRequest())

    }

    func adViewDidReceiveAd(_ bannerView: GADBannerView) {
            hideBanner()
            showPortraitBanner()
    }

    func adView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError) {
            hideBanner()
            hidePortraitBanner()
            print("Error: \(error.localizedDescription)")
    }`

和我的gameplayscene `

 override func didMove(to view: SKView) {

  NotificationCenter.default.post(name: Notification.Name("showBanner"), object: nil)
  NotificationCenter.default.post(name: Notification.Name("hidePortraitBanner"), object: nil)}

  override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
  NotificationCenter.default.post(name: Notification.Name("showBanner"), object: nil)
  NotificationCenter.default.post(name: Notification.Name("hidePortraitBanner"), object: nil)}`

请原谅我刚开始学习的杂乱代码

@Jake T.你是完全正确的,这里不需要两个bannerViews是我的尝试只有一个变量,你可以从我的代码中看到我非常初学者

`

   var bannerView = GADBannerView(adSize: kGADAdSizeSmartBannerLandscape)

    override func viewDidLoad() {
    super.viewDidLoad()

    initializeAds()

    NotificationCenter.default.addObserver(self, selector: #selector(topBanner), name: Notification.Name("topBanner"), object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(bottomBanner), name: Notification.Name("bottomBanner"), object: nil)



    if let view = self.view as! SKView? {
            if let scene = MainMenuScene(fileNamed: "MainMenu") {
                    scene.scaleMode = .aspectFill
                    view.presentScene(scene)
            }

            view.ignoresSiblingOrder = true

            view.showsFPS = true
            view.showsNodeCount = true
            view.showsPhysics = false
    }
    }

    func topBanner() {
    bannerView.adSize = kGADAdSizeSmartBannerLandscape
    bannerView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    bannerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    bannerView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true


    }

    func bottomBanner() {
    bannerView.adSize = kGADAdSizeSmartBannerPortrait
    bannerView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    bannerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    bannerView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true

    }

    func initializeAds() {
    bannerView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(bannerView)
    bannerView.isHidden = true

    bannerView.delegate = self

    bannerView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    bannerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    bannerView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true

    bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
    bannerView.rootViewController = self
    bannerView.load(GADRequest())
    }


    func adViewDidReceiveAd(_ bannerView: GADBannerView) {
    bannerView.isHidden = false

    }

    func adView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError) {

    bannerView.isHidden = true
    print("Error: \(error.localizedDescription)")
    }

`

1 个答案:

答案 0 :(得分:0)

func adViewDidReceiveAd(_ bannerView: GADBannerView) { hideBanner() showPortraitBanner() }

这会隐藏顶部横幅,并显示底部横幅。编辑:我无法100%确定这是您的错误的来源,因为您无法向任何地方显示此方法的调用方式,但它很可能是您的错误。您可能只想将showPortraitBanner()hidePortraitBanner()

交换

另外,你的横幅有奇怪的名字。您应该将名称更改为&#34; topBanner&#34;和&#34; bottomBanner&#34;或者其他的东西。纵向与横向相似,垂直或水平握住手机。这意味着,除非您实际上只是在正确的方向上展示这些,否则您至少使用其中一个错误的横幅。如果你的游戏只是一个方向,你应该改变你放在这里的前两行中的一条,这样它们才能正确定位。