使用Swift在xcode 6中进行iAd

Ben*_*ene 8 xcode iad adbannerview swift xcode6

我正在努力在场景中实现横幅广告,但它总是报告"线程1:EXC_BREAKPOINT(代码= EXC_ARM_BREAKPOINT,子代码= Oxdefe)并且程序停止运行.我在另一个关于iAd 的问题中引用了T先生的答案(" Swift - ADBannerView")但仍然无法成功.

代码如下所示:

 import UIKit
 import SpriteKit
 import iAd
 class GameViewController: UIViewController, ADBannerViewDelegate {

@IBOutlet var adBannerView: ADBannerView
override func viewDidLoad() {
    super.viewDidLoad()
    println("view loaded")

    //iAd
    self.canDisplayBannerAds = true
    self.adBannerView.delegate = self
    self.adBannerView.alpha = 0.0 
     if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
        // Configure the view.
        let skView = self.view as SKView
        skView.showsFPS = true
        skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

        skView.presentScene(scene)
    }
}
 //iAd
func bannerViewWillLoadAd(banner: ADBannerView!) {


    println("sort of working1")

}

func bannerViewDidLoadAd(banner: ADBannerView!) {


    self.adBannerView.alpha = 1.0 
    println("sort of working2")

}

func bannerViewActionDidFinish(banner: ADBannerView!) {


    println("sort of working3")

}

func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {



    println("sort of working4")
    return true 
}

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {


}
}
Run Code Online (Sandbox Code Playgroud)

我在Main.storyboard中创建了一个ADBannerView,并将其与@IBOutlet adBannerView相关联.

有谁帮我搞清楚了?

erd*_*ser 14

这就是我做到的,可能不是所有的都是必要的.

我没有在故事板中使用横幅,因此IBOutlet不是必需的.

此外,如果手动创建横幅,则无需进行设置 self.canDisplayBannerAds

此功能(从ObjC移植)是我展示广告的方式.

func loadAds(){
  adBannerView = ADBannerView(frame: CGRect.zeroRect)
  adBannerView.center = CGPoint(x: adBannerView.center.x, y: view.bounds.size.height - adBannerView.frame.size.height / 2)
  adBannerView.delegate = self
  adBannerView.hidden = true
  view.addSubview(adBannerView)
}
Run Code Online (Sandbox Code Playgroud)

这被称为viewDidLoad.然后,在didLoadAd委托方法中,我设置adBannerView.hidden = false并在didFailToReceiveAdWithError,adBannerView.hidden = true

我认为hiddenalpha这种情况更好,因为感觉更自然.我相信(但不确定)当隐藏时,GPU根本不会绘制视图,而alpha为0时,它仍然被绘制,但是不可见(如果我错了,请纠正我).

这是我的设置,它对我有用,所以希望它也适用于你的情况!