如何用swift实现iAd插页广告



我想在我的Spritekit游戏中植入插页式广告,但在添加时遇到了麻烦。我就是这么做的:

import iAd
class GameViewController: UIViewController, ADInterstitialAdDelegate {
var interAd:ADInterstitialAd?
var interAdView = UIView()
var closeButton = UIButton.buttonWithType(UIButtonType.System) as! UIButton
override func viewDidLoad() {
    super.viewDidLoad()
    closeButton.frame = CGRectMake(20, 20, 70, 44)
    closeButton.layer.cornerRadius = 10
    closeButton.backgroundColor = UIColor.whiteColor()
    closeButton.layer.borderColor = UIColor.blackColor().CGColor
    closeButton.layer.borderWidth = 1
    closeButton.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)
    closeButton.addTarget(self, action: "closeAd:", forControlEvents: UIControlEvents.TouchDown)
    closeButton.enabled = false
    closeButton.setTitle("skip", forState: UIControlState.Normal)
    closeButton.enabled = true
    closeButton.setNeedsLayout()
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "showAd", name: "showIntAD", object: nil)
func prepareAd() {
    println(" --- AD: Try Load ---")
    // Attempt to load a new ad:
    interAd = ADInterstitialAd()
    interAd?.delegate = self
}
func showAd() -> Bool {
    if interAd != nil && interAd!.loaded {
        interAdView = UIView()
        interAdView.frame = self.view!.bounds
        self.view?.addSubview(interAdView)
        interAd!.presentInView(interAdView)
        UIViewController.prepareInterstitialAds()
        interAdView.addSubview(closeButton)
    }
    return interAd?.loaded ?? false
}
func closeAd(sender: UIButton) {
    adFinished()
}
func adFinished() {
    closeButton.removeFromSuperview()
    interAdView.removeFromSuperview()
}
func interstitialAdDidLoad(interstitialAd: ADInterstitialAd!) {
    println(" --- AD: Load Success ---")
}
func interstitialAdDidUnload(interstitialAd: ADInterstitialAd!) {
    println(" --- AD: Unload --- ")
}
func interstitialAdActionDidFinish(interstitialAd: ADInterstitialAd!) {
    println(" --- ADD: Action Finished --- ")
    adFinished()
}
func interstitialAdActionShouldBegin(interstitialAd: ADInterstitialAd!, willLeaveApplication willLeave: Bool) -> Bool {
    return true
}
func interstitialAd(interstitialAd: ADInterstitialAd!, didFailWithError error: NSError!) {
    println(" --- AD: Error --- ")
    println(error.localizedDescription)
    }
}

和我试图召唤iAd在gameScene:

class GameScene: SKScene, SKPhysicsContactDelegate, ADInterstitialAdDelegate {
 func showAds(){
    NSNotificationCenter.defaultCenter().postNotificationName("showIntAD", object: nil)
}
//Those two are required by Apple to conform "AdInterstitial" protocol
func interstitialAdDidUnload(interstitialAd: ADInterstitialAd!) {
    println(" --- AD: Unload --- ")
}
func interstitialAd(interstitialAd: ADInterstitialAd!, didFailWithError error: NSError!) {
    println(" --- AD: Error --- ")
    println(error.localizedDescription)
}
}

我有一个testButton,它应该显示一个广告,如果我点击它。它什么也没显示!请帮帮我,我试着做这个几乎一个星期!!

你可以更容易地做到。在您的viewDidLoad方法中启用Automatic显示策略并使用requestInterstitialAdPresentation方法来显示插页。我已经创建了一个showIntersitialAd,它就是这样做的。

override func viewDidLoad() {
    super.viewDidLoad()
    self.interstitialPresentationPolicy = ADInterstitialPresentationPolicy.Automatic
}
private func showIntersitialAd() { //call this method whenever you want to show an interstitial
    self.requestInterstitialAdPresentation()
}

如果你正在用gameviewcontroller和SKScenes编写游戏,那么我的答案可能会对你有所帮助,因为我也在做同样的事情。

最新更新