Я работаю над игрой SpriteKit и реализую рекламные баннеры через AdMob (Google Firebase). Я выполнил инструкции Google here и here при настройке вашего первого запроса на объявление, но когда я запускаю приложение на SIM-карте или моем устройстве (iPhone 6s), баннер не отображается. В учебниках я реализовал представление баннера с помощью раскадровки, а остальное было настроено программно. Ниже приведен код моего контроллера.AdMob Banner Ad не показывает Swift 3
В: Почему мой баннер не отображается?
Последующие действия Q: Можно ли показывать баннер только на определенных SKScenes?
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
}
}
Вам не нужно просить новый баннер каждый раз, когда вы запускаете showAd(). Просто покажите это. Кроме того, в вашем коде viewDidLoad вы инициализируете баннерное объявление, а затем загружаете другой файл – Nik
@Nik Что касается вызова show/hideBanner(), как мне получить доступ к этим функциям (и самому баннерному) из других файлов сцены если они локальны для VC-файла здесь? Гах, я бы сделал это! Забавно, я помню, что смотрел на эту строку и говорил себе изменить это, поскольку я устанавливал атрибуты переменной req. Ура! – Mike
Взгляните на это для вызова функций vc из сцен: http://stackoverflow.com/a/40409261/6728196 – Nik