我的游戏有两个bannerAd类型顶部横幅和底部横幅顶部仅在游戏场景中显示,底部仅在主菜单中显示它有效除了某些原因,在游戏过程中大约一分钟后我的顶部横幅隐藏,我的底部显示这个是我的代码
`
var bannerView = GADBannerView(adSize: kGADAdSizeSmartBannerLandscape)
var bannerViewPortrait = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
override func viewDidLoad() {
super.viewDidLoad()
initializeAds()
initializePortraitAds()
NotificationCenter.default.addObserver(self, selector: #selector(showBanner), name: Notification.Name("showBanner"), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(hideBanner), name: Notification.Name("hideBanner"), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(showPortraitBanner), name: Notification.Name("showPortraitBanner"), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(hidePortraitBanner), name: Notification.Name("hidePortraitBanner"), object: nil)
if let view = self.view as! SKView? {
if let scene = MainMenuScene(fileNamed: "MainMenu") {
scene.scaleMode = .aspectFill
view.presentScene(scene)
}
view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
view.showsPhysics = false
}
}
func showBanner() {
bannerView.isHidden = false
}
func showPortraitBanner() {
bannerViewPortrait.isHidden = false
}
func hidePortraitBanner() {
bannerViewPortrait.isHidden = true
}
func hideBanner() {
bannerView.isHidden = true
}
func initializeAds() {
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
bannerView.isHidden = true
bannerView.delegate = self
bannerView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
bannerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
bannerView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
bannerView.rootViewController = self
bannerView.load(GADRequest())
}
func initializePortraitAds() {
bannerViewPortrait.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerViewPortrait)
bannerViewPortrait.isHidden = true
bannerViewPortrait.delegate = self
bannerViewPortrait.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
bannerViewPortrait.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
bannerViewPortrait.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
bannerViewPortrait.adUnitID = "ca-app-pub-3940256099942544/2934735716"
bannerViewPortrait.rootViewController = self
bannerViewPortrait.load(GADRequest())
}
func adViewDidReceiveAd(_ bannerView: GADBannerView) {
hideBanner()
showPortraitBanner()
}
func adView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError) {
hideBanner()
hidePortraitBanner()
print("Error: \(error.localizedDescription)")
}`
和我的gameplayscene `
override func didMove(to view: SKView) {
NotificationCenter.default.post(name: Notification.Name("showBanner"), object: nil)
NotificationCenter.default.post(name: Notification.Name("hidePortraitBanner"), object: nil)}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
NotificationCenter.default.post(name: Notification.Name("showBanner"), object: nil)
NotificationCenter.default.post(name: Notification.Name("hidePortraitBanner"), object: nil)}`
请原谅我刚开始学习的杂乱代码
@Jake T.你是完全正确的,这里不需要两个bannerViews是我的尝试只有一个变量,你可以从我的代码中看到我非常初学者
`
var bannerView = GADBannerView(adSize: kGADAdSizeSmartBannerLandscape)
override func viewDidLoad() {
super.viewDidLoad()
initializeAds()
NotificationCenter.default.addObserver(self, selector: #selector(topBanner), name: Notification.Name("topBanner"), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(bottomBanner), name: Notification.Name("bottomBanner"), object: nil)
if let view = self.view as! SKView? {
if let scene = MainMenuScene(fileNamed: "MainMenu") {
scene.scaleMode = .aspectFill
view.presentScene(scene)
}
view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
view.showsPhysics = false
}
}
func topBanner() {
bannerView.adSize = kGADAdSizeSmartBannerLandscape
bannerView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
bannerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
bannerView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
}
func bottomBanner() {
bannerView.adSize = kGADAdSizeSmartBannerPortrait
bannerView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
bannerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
bannerView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
}
func initializeAds() {
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
bannerView.isHidden = true
bannerView.delegate = self
bannerView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
bannerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
bannerView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
bannerView.rootViewController = self
bannerView.load(GADRequest())
}
func adViewDidReceiveAd(_ bannerView: GADBannerView) {
bannerView.isHidden = false
}
func adView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError) {
bannerView.isHidden = true
print("Error: \(error.localizedDescription)")
}
`
答案 0 :(得分:0)
func adViewDidReceiveAd(_ bannerView: GADBannerView) {
hideBanner()
showPortraitBanner()
}
这会隐藏顶部横幅,并显示底部横幅。编辑:我无法100%确定这是您的错误的来源,因为您无法向任何地方显示此方法的调用方式,但它很可能是您的错误。您可能只想将showPortraitBanner()
与hidePortraitBanner()
另外,你的横幅有奇怪的名字。您应该将名称更改为&#34; topBanner&#34;和&#34; bottomBanner&#34;或者其他的东西。纵向与横向相似,垂直或水平握住手机。这意味着,除非您实际上只是在正确的方向上展示这些,否则您至少使用其中一个错误的横幅。如果你的游戏只是一个方向,你应该改变你放在这里的前两行中的一条,这样它们才能正确定位。