Swift 3 - AdMob未在现有View控制器上显示

时间:2017-10-17 17:27:05

标签: ios swift xcode swift3 uiviewcontroller

我正在尝试将AdMob集成到基于Swift的应用程序中,但无论我尝试使用哪种代码,它都无法正常工作。

我创建了一个新的视图控制器并使用完全相同的代码作为我的'Home'控制器,这似乎有效,但它不适用于我拥有的任何现有ViewControllers。 / p>

我当前的故事板如下所示: Current storyboard

我当前的广告代码如下:

import UIKit
import GoogleMobileAds
import AudioToolbox

class AdTest: UIViewController, GADBannerViewDelegate {
    // Ad banner
    var adMobBannerView = GADBannerView()
    let ADMOB_BANNER_UNIT_ID = "ca-app-pub-9999999999"




    override func viewDidLoad() {
        super.viewDidLoad()


        // Init AdMob banner
        initAdMobBanner()
    }





    // MARK: -  ADMOB BANNER
    func initAdMobBanner() {

        if UIDevice.current.userInterfaceIdiom == .phone {
            // iPhone
            adMobBannerView.adSize =  GADAdSizeFromCGSize(CGSize(width: 320, height: 50))
            adMobBannerView.frame = CGRect(x: 0, y: view.frame.size.height, width: 320, height: 50)
        } else  {
            // iPad
            adMobBannerView.adSize =  GADAdSizeFromCGSize(CGSize(width: 468, height: 60))
            adMobBannerView.frame = CGRect(x: 0, y: view.frame.size.height, width: 468, height: 60)
        }

        adMobBannerView.adUnitID = ADMOB_BANNER_UNIT_ID
        adMobBannerView.rootViewController = self
        adMobBannerView.delegate = self
        view.addSubview(adMobBannerView)

        let request = GADRequest()
        adMobBannerView.load(request)
    }


    // Hide the banner
    func hideBanner(_ banner: UIView) {
        UIView.beginAnimations("hideBanner", context: nil)
        banner.frame = CGRect(x: view.frame.size.width/2 - banner.frame.size.width/2, y: view.frame.size.height - banner.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height)
        UIView.commitAnimations()
        banner.isHidden = true
    }

    // Show the banner
    func showBanner(_ banner: UIView) {
        UIView.beginAnimations("showBanner", context: nil)
        banner.frame = CGRect(x: view.frame.size.width/2 - banner.frame.size.width/2, y: view.frame.size.height - banner.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height)
        UIView.commitAnimations()
        banner.isHidden = false
    }





    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

我的AdTest ViewController显示了这个:

AdTest ViewController

而我的Home ViewController根本不显示广告:

Home ViewController

1 个答案:

答案 0 :(得分:0)

所以我发现了这个问题,结果发现如果更改全局用户默认值,AdMob将无效。

作为临时解决方案,我已在展示广告之前添加了此权限。

//MARK : - Load table data
UserDefaults.standard.register(defaults: ["UserAgent": "AB-" + UIDevice.current.identifierForVendor!.uuidString])
////////////
//GET CODE//
////////////

//MARK : - Load AdMob
UserDefaults.standard.register(defaults: ["UserAgent": "Mozilla/5.0 (iPhone;         CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372"])
initAdMobBanner()

//Set browser back so the app works
UserDefaults.standard.register(defaults: ["UserAgent": "AB-" + UIDevice.current.identifierForVendor!.uuidString])