如何在SpriteKit中添加iAd并在场景发生变化时将其停用?

时间:2016-04-25 07:52:07

标签: ios swift sprite-kit iad

在我的游戏文件GameScene中,我编写了iAd的代码以便在那里显示。

func addiAd(){
    bannerView = ADBannerView(adType: .Banner)
    bannerView.delegate = self
    bannerView.hidden = true
    bannerView.frame = CGRectOffset(bannerView.frame, 0.0, 0.0)
    bannerView.center = CGPointMake(bannerView.center.x,  
    (view?.bounds.size.height)! - bannerView.frame.size.height/2)
    view!.addSubview(bannerView)
    print("iAd is working")
}

func bannerViewDidLoadAd(banner: ADBannerView!) {
    bannerView.hidden = false
}

func bannerViewActionDidFinish(banner: ADBannerView!) {
    bannerView.removeFromSuperview()
}

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    bannerView.hidden = true
}

嗯,它首先看起来有效,但并不完美,因为当一个场景转换到另一个名为GameOverScene的游戏场景文件时,我的bannerView不会消失并保持永远显示的位置直到跑完了。我想停用它。上面的代码写错了吗?在我的源代码中,总的来说,我想分别在adBannerGameScene中有两个GameOverScene次观看。我对错误的假设是我没有在GameViewController中编写这些代码,但我不确定它。你能告诉我如何实现它并向我解释它必须写在哪里吗?

1 个答案:

答案 0 :(得分:1)

在iAd委托方法中,您可以更改横幅的alpha属性。例如:

func bannerViewDidLoadAd(banner: ADBannerView!) {
    bannerView.alpha = 1.0
}

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    bannerView.alpha = 0.0
}

然后,当您要更改场景或想要确保未显示iAd横幅时,您可以设置其hidden属性。例如:

func hideBanner() {
    // Call whenever you don't want the ADBannerView to be on screen
    bannerView.hidden = true
}

func showBanner() {
    // Call when you want the ADBannerView to be on screen
    bannerView.hidden = false
} 

这还需要您更新addiAd功能:将bannerView.hidden = true更改为bannerView.alpha = 0.0

最后你不应该从Superview中删除iAd横幅:

func bannerViewActionDidFinish(banner: ADBannerView!) {
    bannerView.removeFromSuperview()
}