我正在使用 Xcode 7.3, Swift, SpriteKit, and AdMob . 我正在尝试显示 Interstitial 广告,但无论我等待多久,请求都永远不会被填充, self.interstitial.isReady
总是错误的 . 这是我的代码:
import UIKit
import SpriteKit
import GoogleMobileAds
class GameViewController: UIViewController {
var interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
override func viewDidLoad() {
super.viewDidLoad()
let request = GADRequest()
// Requests test ads on test devices.
request.testDevices = ["2077ef9a63d2b398840261c8221a0c9b"]
self.interstitial.loadRequest(request)
}
func displayAd() {
print(self.interstitial.isReady)
if self.interstitial.isReady {
self.interstitial.presentFromRootViewController(self)
}
}
}
在另一个swift文件中,我正在调用 GameViewController().displayAd()
. 这始终打印为false,因为interstitial.isReady永远不会为真 . *一个可能的问题 - 我可能使用了错误的测试adUnitId或者request.testDevices没有被设置为正确的东西 .
为什么这个要求不会填写?
1 回答
对于那些稍后读这篇文章的人我修了它,有两个问题:
我没有使用实际的广告,所以
request.testDevices
不应该被设置为任何东西另外,当我调用
GameViewController().displayAd()
时,我正在创建一个GameViewController
的新实例,它必须是原始实例 . 为了避免这种情况,我创建了一个引用GameViewController's
self的变量,然后做了variable.displayAd()