小编典典

使用Swift的xcode 6中的iAd

swift

我正在努力在现场实施横幅广告,但它总是报告“线程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!) {


}
}

我在Main.storyboard中创建了一个ADBannerView,并将其与@IBOutlet adBannerView链接。

有人帮我弄清楚吗?


阅读 229

收藏
2020-07-07

共1个答案

小编典典

这就是我的操作方式,可能并非全部都是必要的。

我没有在情节提要中使用横幅,因此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)
}

这称为viewDidLoad。然后,在didLoadAd委托方法中,设置adBannerView.hidden = falsedidFailToReceiveAdWithErroradBannerView.hidden = true

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

这是我的设置,对我有用,因此希望它也适用于您的情况!

2020-07-07