ios - AdMob 插页式广告永远不会变成 "ready"

标签 ios swift admob

我使用的是Xcode 7.3、Swift、SpriteKit 和 AdMob。我正在尝试显示插页式广告,但无论我等待多久,请求都不会被满足,并且 self.interstitial.isReady 始终为 false。这是我的代码:

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 永远不会为 true。 *一个可能的问题 - 我可能使用了错误的测试 adUnitId 或 request.testDevices 未设置为正确的内容。

为什么这个请求无法满足?

最佳答案

对于后来阅读本文的人,我修复了它,有两个问题:

我实际上没有使用广告,因此 request.testDevices 不应设置为任何内容

此外,当我调用 GameViewController().displayAd() 时,我正在创建一个 GameViewController 的新实例,并且它必须是原始实例。为了避免这种情况,我创建了一个引用 GameViewController's self 的变量,然后执行了 variable.displayAd()

关于ios - AdMob 插页式广告永远不会变成 "ready",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36534490/

相关文章:

ios - 安装旧版本的 Firebase

ios - sendbird sdk自动重连

swift - 使用 swift 停止 SpriteKit 中的 Action

android - admob 收到广告响应。错误代码 : 0 Failed to load ad:0

android - 将 Google Play 服务库添加到现有库项目

ios - 处理程序声明不起作用

ios - 线程 1 : EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, 子代码 = 0x0) 与 WebView SWIFT

c# - Objective-C 等效于 C# 只读变量

swift - 两种查询方式的区别

java - admob 设置已启用 false