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)
所以它工作得很好,加载用户可能需要很长时间才能完成!
为什么会发生这种情况?
答案 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)
这就是我希望的方式!