2017-10-17 53 views
1

我想給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,也不會展示廣告。 –

回答

0

所以我找到了問題,事實證明,如果你改變了全球用戶的默認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])