2016-04-25 4 views
1

In meiner Spieledatei GameScene schrieb ich Code für iAd, um dort angezeigt zu werden.Wie kann ich iAd in SpriteKit hinzufügen und deaktivieren, wenn sich eine Szene ändert?

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 
} 

Nun, es sieht zunächst wie es funktioniert, aber nicht perfekt, weil, wenn eine Szene auf einer andere Spielszene Datei transitioned genannt GameOverScene, meine bannerView nicht verschwindet und dort bleibt, wo es immer schien, bis der Lauf vorbei ist. Ich möchte das deaktivieren. Ist mein Code falsch oben geschrieben? In meinem Quellcode insgesamt möchte ich zwei adBanner Ansichten in GameScene und GameOverScene jeweils. Meine Annahme für den Fehler ist, dass ich diesen Code nicht in GameViewController geschrieben habe, aber ich bin mir nicht sicher. Kannst du mir zeigen, wie man es implementiert und mir erklärt, wo es geschrieben werden muss?

+1

nur damit Sie wissen, ist Apple das Juni iAd Netzwerk für Ihre Antwort 30. –

Antwort

1

In den iAd Delegate-Methoden können Sie die alpha Eigenschaften Ihres Banners ändern. Zum Beispiel:

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

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

Und dann, wenn Sie Szenen sind zu ändern oder sicherstellen möchten, dass die iAd-Banner erscheint nicht Sie seine hidden Eigenschaft könnte. Zum Beispiel:

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 
} 

Dies würden Sie benötigen, um Ihre addiAd Funktion zur Aktualisierung auch: bannerView.hidden = true zu bannerView.alpha = 0.0 ändern.

Und schließlich sollten Sie nicht die iAd-Banner aus dem Superview hier entfernt werden:

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

Dank Schließen! Könnte ich noch eine Frage stellen? Es wäre schöner, eine x-Schaltfläche zu haben, um das bannerView zu löschen, wenn es angezeigt wird. Gibt es dafür einen einfachen Code? – bagels

+0

@ryohei Erstellen Sie eine benutzerdefinierte UIButton für Ihre Schließen-Schaltfläche und positionieren Sie es an der Ecke Ihres ADBannerView. Dann muss die UIButton die Funktion hideBanner aufrufen, wenn sie angetippt wird. –

+0

Ah! Cool! Dachte, da war ein eingebauter Code dafür! Just UIButton zum Hinzufügen. Aha. Danke für deine Antwort :) – bagels

Verwandte Themen