AdMob需要很长时间才能生成

时间:2016-05-10 03:03:54

标签: swift admob

SWIFT - AdMob

我有一个tabBarController有4个视图,其中3个我显示了GADBanner。它们在测试广告出现前大约需要一分钟。在我的另一个应用程序中,它会在几秒钟内生成,但这只是在一个视图上。

我已在我的应用委托中实施了loadBanner功能,以便在视图更改时不会生成新广告。它适用于iAd但不适用于AdMob。

在我的appDelegate.swift文件中,我在didFinishLaunchingWithOptions中调用以下函数:

func loadBanner() {

    let testAdId = "ca-app-pub-3940256099942544/2934735716"

        banner = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
        banner.adUnitID = testAdId

    let req : GADRequest = GADRequest()
    banner.loadRequest(req)
    banner.frame = CGRectMake(100, 100, banner.frame.size.width, banner.frame.size.height)
} 

然后在每个视图控制器的viewWillAppear中我有以下内容:

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let VCBanner = appDelegate.banner
VCBanner.rootViewController = self
VCBanner.center = CGPoint(x: view.frame.midX, y: view.frame.height - VCBanner.frame.height / 2)
view.addSubview(VCBanner)

所以它工作得很好,加载用户可能需要很长时间才能完成!

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

因为我没有运气伸出手。我提出了另一种解决方案,它工作正常,不确定它是否是最佳方式,但现在就是这样。

在最初的ViewController(首先出现的那个)中。我宣布了一个全局变量var banner : GADBannerView!,在viewDidAppear()我运行了函数loadBanner()

let testAdId = "ca-app-pub-3940256099942544/2934735716"

func loadBanner() {
    banner = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
    banner.adUnitID = testAdId

    banner.rootViewController = self
    let req : GADRequest = GADRequest()
    banner.loadRequest(req)
    banner.frame = CGRectMake(0, self.view.frame.height - banner.frame.height, banner.frame.size.width, banner.frame.size.height)

    self.view.addSubview(banner)
}

现在因为它是一个全局变量(在类外声明),所以可以从所有viewControllers访问它。所以现在在每个viewControllers中我想要显示广告,我可以像这样调用viewDidAppear()

self.view.addSubview(banner)

这就是我希望的方式!