Мой iAd отлично работает при подключении к Интернету, но при отсутствии Интернета он представляет собой серый экран. Мой код также может работать, когда я устанавливаю симулятор, чтобы давать ошибки, переключаясь на следующий экран. Я попытался проверить, загружено ли объявление, и перейти, если это не так, но автоматически переходит на следующий экран.Удаление межсайтового объявления iAd, когда нет подключения к Интернету
Мой код:
class TransistionScene: SKScene, ADInterstitialAdDelegate {
var interAd = ADInterstitialAd()
var interAdView = UIView()
var closeButton = UIButton()
var adLoaded = false
override func didMoveToView(view: SKView) {
closeButton.frame = CGRectMake(20, 20, 30, 30)
closeButton.layer.cornerRadius = 15
closeButton.setTitle("x", forState: .Normal)
closeButton.setTitleColor(UIColor.blackColor(), forState: .Normal)
closeButton.backgroundColor = UIColor.whiteColor()
closeButton.layer.borderColor = UIColor.blackColor().CGColor
closeButton.layer.borderWidth = 1
loadAd()
closeButton.addTarget(self, action: "close:", forControlEvents: UIControlEvents.TouchDown)
}
func close(sender: UIButton) {
closeButton.removeFromSuperview()
interAdView.removeFromSuperview()
adLoaded = false
let myScene = GameOver(size: self.size)
myScene.scaleMode = self.scaleMode
let transition = SKTransition.flipHorizontalWithDuration(1.0)
self.view?.presentScene(myScene, transition: transition)
}
func loadAd() {
interAd = ADInterstitialAd()
interAd.delegate = self
}
func interstitialAdWillLoad(interstitialAd: ADInterstitialAd!) {
}
func interstitialAdDidLoad(interstitialAd: ADInterstitialAd!) {
interAdView = UIView()
interAdView.frame = self.view!.frame
view!.addSubview(interAdView)
interAd.presentInView(interAdView)
UIViewController.prepareInterstitialAds()
interAdView.addSubview(closeButton)
}
func interstitialAdDidUnload(interstitialAd: ADInterstitialAd!) {
interAdView.removeFromSuperview()
let myScene = GameOver(size: self.size)
myScene.scaleMode = self.scaleMode
let transition = SKTransition.flipHorizontalWithDuration(1.0)
self.view?.presentScene(myScene, transition: transition)
adLoaded = false
}
func interstitialAd(interstitialAd: ADInterstitialAd!, didFailWithError error: NSError!) {
adLoaded = false
closeButton.removeFromSuperview()
let myScene = GameOver(size: self.size)
myScene.scaleMode = self.scaleMode
let transition = SKTransition.flipHorizontalWithDuration(1.0)
self.view?.presentScene(myScene, transition: transition)
interAdView.removeFromSuperview()
}
func interstitialAdActionShouldBegin(interstitialAd: ADInterstitialAd!, willLeaveApplication willLeave: Bool) -> Bool {
return true
}
func interstitialAdActionDidFinish(interstitialAd: ADInterstitialAd!) {
// Done with this ad. Lets get a new one
interAdView.removeFromSuperview()
//adLoaded = false
}
}
положите loadAd() в условие if, и если условие проверяет подключение к Интернету. если true loadAd еще нет. –
Как бы вы могли проверить подключение? –
[Avinash Tag] (http://stackoverflow.com/users/1308160/avinash-tag) 's метод небезопасен, так как пользователь вполне может быть подключен к Интернету, но устройство все еще не извлекло объявление из сервер еще. После выгрузки объявлений требуется некоторое время, прежде чем появится новое объявление. Хуже того, пользователь может быть подключен к действительно плохому интернет-соединению, или iDD CDN может быть недоступен, поэтому вы по-прежнему будете видеть, что пользователь подключен к Интернету, но пока не может отображать рекламу. –