ios - 延迟 5 秒后调用 Admob 插页式 - Swift iOS

标签 ios swift admob nstimer

请任何人帮助我重写我的代码,因为我在延迟 5 秒后努力展示我的插页式广告。我使用 youTube 上的 VEA 软件教程(本教程使用 UIButton 触发插页式广告)构建了一个 View Controller (如下)。然后我添加了一个 NSTimer 行来运行一个名为 timerFunc 的函数。

现在我只在代码中留下了 UIButtontimerFunc 来证明它可以工作。最后,我希望 NSTimer 在 5 秒后调用广告,而无需用户进行任何交互。

我已经包括了所有必要的框架,我相信有人可能会认为这是一个简单的挑战,但如果有人能提供帮助,我将不胜感激,如有任何问题,请告诉我。

谢谢。

import UIKit
import SpriteKit
import GoogleMobileAds



class GameOverViewController: UIViewController {

var intersitital: GADInterstitial!

@IBOutlet weak var bannerView: GADBannerView!
// start google tracking

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(true)

    var tracker = GAI.sharedInstance().defaultTracker
    tracker.set(kGAIScreenName, value: "Game Over Screen")

    var builder = GAIDictionaryBuilder.createScreenView()
    tracker.send(builder.build() as [NSObject : AnyObject])

    //end google tracking
}

override func viewDidLoad() {
    super.viewDidLoad()

    self.intersitital = self.createAndLoadAd()


    NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: "timerFunc", userInfo: nil, repeats: false)

}

override func shouldAutorotate() -> Bool {
    return true
}

override func supportedInterfaceOrientations() -> Int {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return Int(UIInterfaceOrientationMask.AllButUpsideDown.rawValue)
    } else {
        return Int(UIInterfaceOrientationMask.All.rawValue)
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Release any cached data, images, etc that aren't in use.
}

func createAndLoadAd() -> GADInterstitial    {
    var ad = GADInterstitial(adUnitID: "ca-app-pub-7019466409243282/2303966909")

    var request = GADRequest()

    request.testDevices = [""]
    ad.loadRequest(request)
    return ad

}


func someSelector() {
    // Something after a delay
}
//

@IBAction func adButton(sender: AnyObject) {

    if (self.intersitital.isReady)
    {
        self.intersitital.presentFromRootViewController(self)
        self.intersitital = self.createAndLoadAd()
        }


}

func timerFunc() {
    println("Timer")
}

override func prefersStatusBarHidden() -> Bool {
    return true
}
}

最佳答案

最简洁的方法是使用dispatch_after:

let seconds: Double = 5
let delayTime = dispatch_time(DISPATCH_TIME_NOW, 
                              Int64(seconds * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
    // show your ad
}

也就是说,在 5 秒后显示广告的应用程序是邪恶的,很可能会立即被删除,至少在我的设备上是这样。

关于ios - 延迟 5 秒后调用 Admob 插页式 - Swift iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31764005/

相关文章:

ios - ScrollView 以及 Collection View 单元格

ios - AVAudioSessionRouteChangeNotification 不断被调用

oop - 信息隐藏 "Swifter"方式?

android - AdMob:AdLoader 在获取 URL 时 60000 毫秒后超时

java - 向 AdMob 中介添加新的广告网络适配器,老客户会怎样?

android - Android 上的 AdMob 横幅尺寸

ios - 调用删除按钮Api后如何删除模型类中保存的数据?

ios - uiwebview 即使有 delegate = self 也没有加载请求

ios - 尝试使用 URLsession 从 DataTask 创建图像无效

swift - 保存后更改 NSUserDefaults 类属性 (Swift)