斯威夫特3 - AdMob广告没有出现在现有的视图控制器

斯威夫特3 - AdMob广告没有出现在现有的视图控制器

问题描述:

我想给AdMob整合到我基于SWIFT的应用程序,但它不工作,没有不管我尝试什么样的代码。斯威夫特3 - AdMob广告没有出现在现有的视图控制器

我创建了一个新的视图控制器和所使用的确切相同的代码,我的“家”控制器,似乎工作,但它不会在任何我有现有ViewControllers的工作。

我现在的故事板是这样的: Current storyboard

和我目前的广告代码如下所示:

import UIKit 
import GoogleMobileAds 
import AudioToolbox 

class AdTest: UIViewController, GADBannerViewDelegate { 
    // Ad banner 
    var adMobBannerView = GADBannerView() 
    let ADMOB_BANNER_UNIT_ID = "ca-app-pub-9999999999" 




    override func viewDidLoad() { 
     super.viewDidLoad() 


     // Init AdMob banner 
     initAdMobBanner() 
    } 





    // MARK: - ADMOB BANNER 
    func initAdMobBanner() { 

     if UIDevice.current.userInterfaceIdiom == .phone { 
      // iPhone 
      adMobBannerView.adSize = GADAdSizeFromCGSize(CGSize(width: 320, height: 50)) 
      adMobBannerView.frame = CGRect(x: 0, y: view.frame.size.height, width: 320, height: 50) 
     } else { 
      // iPad 
      adMobBannerView.adSize = GADAdSizeFromCGSize(CGSize(width: 468, height: 60)) 
      adMobBannerView.frame = CGRect(x: 0, y: view.frame.size.height, width: 468, height: 60) 
     } 

     adMobBannerView.adUnitID = ADMOB_BANNER_UNIT_ID 
     adMobBannerView.rootViewController = self 
     adMobBannerView.delegate = self 
     view.addSubview(adMobBannerView) 

     let request = GADRequest() 
     adMobBannerView.load(request) 
    } 


    // Hide the banner 
    func hideBanner(_ banner: UIView) { 
     UIView.beginAnimations("hideBanner", context: nil) 
     banner.frame = CGRect(x: view.frame.size.width/2 - banner.frame.size.width/2, y: view.frame.size.height - banner.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height) 
     UIView.commitAnimations() 
     banner.isHidden = true 
    } 

    // Show the banner 
    func showBanner(_ banner: UIView) { 
     UIView.beginAnimations("showBanner", context: nil) 
     banner.frame = CGRect(x: view.frame.size.width/2 - banner.frame.size.width/2, y: view.frame.size.height - banner.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height) 
     UIView.commitAnimations() 
     banner.isHidden = false 
    } 





    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

} 

我ADTEST的ViewController表明这一点:

AdTest ViewController

而我Home ViewController根本不显示广告:

Home ViewController

+0

你不应该显示的'ADMOB_BANNER_UNIT_ID' :) –

+0

尝试真正的价值来实现'FUNC的AdView(_ bannerView:GADBannerView上, didFailToReceiveAdWithError错误:GADRequestError){ 打印(“AD浏览:didFailToReceiveAdWithError:\(错误.localizedDescription)“) }'并检查是否有错误... –

+0

^即返回‘请求错误:没有广告的展示。’ - 但即使我在谷歌网站上使用测试ID,也不会展示广告。 –

所以我找到了问题,事实证明,如果你改变了全球用户的默认AdMob将无法正常工作。

作为一个临时的解决办法,我已经添加了这项权利的显示广告前。

//MARK : - Load table data 
UserDefaults.standard.register(defaults: ["UserAgent": "AB-" + UIDevice.current.identifierForVendor!.uuidString]) 
//////////// 
//GET CODE// 
//////////// 

//MARK : - Load AdMob 
UserDefaults.standard.register(defaults: ["UserAgent": "Mozilla/5.0 (iPhone;   CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372"]) 
initAdMobBanner() 

//Set browser back so the app works 
UserDefaults.standard.register(defaults: ["UserAgent": "AB-" + UIDevice.current.identifierForVendor!.uuidString])