代码之家  ›  专栏  ›  技术社区  ›  VyacheslavBakinkskiy

AdMob-“Ad未就绪”错误,单位ID为真(Swift)

  •  1
  • VyacheslavBakinkskiy  · 技术社区  · 5 年前

    我的代码:

    import UIKit
    import GoogleMobileAds
    
    class ViewController: UIViewController {
    var interstitial: GADInterstitial!
    
    override func viewDidLoad() {
       super.viewDidLoad()
       interstitial = createAndLoadInterstitial()
    }
    
    override func viewWillAppear(_ animated: Bool) {
       super.viewWillAppear(animated)
       DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
        if self.interstitial.isReady {
            self.interstitial.present(fromRootViewController: self)
        } else {
            print("Ad wasn't ready")
        }
       }
    }
    
    func createAndLoadInterstitial() -> GADInterstitial {
        let interstitial = GADInterstitial(adUnitID: "AdMob Real Unit ID")
        interstitial.delegate = self
        let request = GADRequest()
        GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = ["my device ID from console"]
        interstitial.load(request)
        return interstitial
    }
    }
    
    extension ViewController: GADInterstitialDelegate {
    func interstitialDidDismissScreen(_ ad: GADInterstitial) {
        interstitial = createAndLoadInterstitial()
    }
    }
    

    慰问: console

    1 回复  |  直到 5 年前
        1
  •  0
  •   Amod Gokhale    5 年前

    不允许在页面加载后立即启动间隙广告。 参考不允许的间隙实施政策 https://support.google.com/admob/answer/6201362?hl=en

    一个常见的问题是,即使您可能打算加载广告 在页面之间的内容,广告本身出现后不久,一个新的 要了解更多有关如何预加载你的插播广告,请 遵循AdMob Interstitial Ad developer应用指南 为Android和iOS开发。

    仅在viewDidLoad()上加载广告 https://developers.google.com/admob/ios/interstitial

    class ViewController: UIViewController {
    
      var interstitial: GADInterstitial!
    
      override func viewDidLoad() {
        super.viewDidLoad()
        interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
        let request = GADRequest()
        interstitial.load(request)
      }
    }
    

    然后,在应用程序流程的自然暂停期间,应该显示间隙。一个游戏的两级之间,或者在用户完成一个任务之后,就是一个很好的例子。

    @IBAction func doSomething(_ sender: AnyObject) {
      ...
      if interstitial.isReady {
        interstitial.present(fromRootViewController: self)
      } else {
        print("Ad wasn't ready")
      }
    }
    
        2
  •  0
  •   VyacheslavBakinkskiy    5 年前

    解决了的: 您必须在Google AdMob控制台中看到以下消息:

    Your account is approved
    Congratulations! We've verified your account information and your ad serving is enabled.