Ich arbeite an einem SpriteKit-Spiel und implementiere Bannerwerbung über AdMob (Google Firebase). Ich habe die Google-Lernprogramme here und here zum Einrichten der ersten Anzeigenanfrage verwendet. Wenn ich die App jedoch entweder auf der SIM-Karte oder auf meinem Gerät (iPhone 6s) ausführe, wird das Banner nicht angezeigt. In den Tutorials habe ich die Banneransicht über das Storyboard implementiert und der Rest wurde programmgesteuert eingerichtet. Unten ist der Code meines View-Controllers.AdMob-Banneranzeige nicht mit Swift 3
F: Warum wird mein Banner nicht angezeigt?
Follow-up F: Kann ich das Banner nur auf bestimmten SKScenes anzeigen?
import UIKit
import SpriteKit
import GoogleMobileAds
class GameViewController: UIViewController, GADBannerViewDelegate {
@IBOutlet weak var bannerView: GADBannerView!
override func viewDidLoad() {
super.viewDidLoad()
print("Google Mobile Ads SDK version: " + GADRequest.sdkVersion())
bannerView.delegate = self
bannerView.adUnitID = "ca-app-pub-9474695450721030/1823667708"
bannerView.rootViewController = self
let req = GADRequest()
req.testDevices = ["91fbd46dff1179ce0a5e7226cea1ee0b", kGADSimulatorID]
req.tag(forChildDirectedTreatment: true)
bannerView.load(GADRequest())
view.addSubview(bannerView)
showBanner()
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if let skView = self.view as? SKView {
if skView.scene == nil {
let aspectRatio = view.bounds.size.height/view.bounds.size.width
let scene = MenuScene(size: CGSize(width: 750, height: 750 * aspectRatio))
scene.scaleMode = .aspectFill
skView.ignoresSiblingOrder = true
if kDebug {
skView.showsFPS = true
skView.showsDrawCount = true
skView.showsNodeCount = true
skView.showsPhysics = true
}
let transition = SKTransition.fade(with: SKColor.black, duration: 0.5)
skView.presentScene(scene, transition: transition)
}
}
}
func showBanner() {
bannerView.isHidden = false
let request = GADRequest()
request.testDevices = ["2077ef9a63d2b398840261c8221a0c9b"]
bannerView.load(request)
}
func hideBanner() {
bannerView.isHidden = true
}
}
Sie brauchen nicht ein neues Banner Sie jedes Mal zu beantragen showAd laufen(). Einfach einblenden. In deinem viewDidLoad-Code initialisierst du eine Banner-Anzeige und lädst dann eine andere ein. – Nik
@Nik In Bezug auf das Aufrufen von show/hideBanner(), wie greife ich auf diese funcs (und das bannerView selbst) von den anderen Szenedateien Wenn sie hier in der VC-Datei lokal sind? Gahh, ich würde das tun! Komisch, ich erinnere mich, dass ich diese Zeile betrachtet habe und mir selbst gesagt habe, ich solle das ändern, während ich die Attribute der req-Variable festlege. Prost! – Mike
Werfen Sie einen Blick auf diese Aufruf von VC-Funktionen von Szenen: http://Stackoverflow.com/a/40409261/6728196 – Nik