在 Swift 中解决 "Ad wasn't ready" 错误的方法如下:
首先,确保你已正确设置了 AdMob,并且已经在项目中导入了 GoogleMobileAds 框架。
然后,在你的视图控制器中,你需要设置一个 GADInterstitialDelegate 来处理广告加载完成和失败的事件。示例如下:
import UIKit
import GoogleMobileAds
class ViewController: UIViewController, GADInterstitialDelegate {
var interstitial: GADInterstitial!
override func viewDidLoad() {
super.viewDidLoad()
// 在 viewDidLoad 中初始化 interstitial
interstitial = createAndLoadInterstitial()
}
func createAndLoadInterstitial() -> GADInterstitial {
let interstitial = GADInterstitial(adUnitID: "YOUR_AD_UNIT_ID")
interstitial.delegate = self
let request = GADRequest()
interstitial.load(request)
return interstitial
}
// 在 GADInterstitialDelegate 中实现以下方法
func interstitialDidReceiveAd(_ ad: GADInterstitial) {
// 广告加载完成
if ad.isReady {
ad.present(fromRootViewController: self)
}
}
func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) {
print("加载广告失败: \(error.localizedDescription)")
}
func interstitialDidDismissScreen(_ ad: GADInterstitial) {
// 当广告消失后,重新加载下一个广告
interstitial = createAndLoadInterstitial()
}
// ... 其他代码 ...
}
在上面的代码中,YOUR_AD_UNIT_ID
需要被替换为你的真实广告单元 ID。
当进行初始化和加载广告时,确保你已经正确设置了 AdMob 应用 ID 和广告单元 ID。然后,通过调用 createAndLoadInterstitial
方法来创建和加载插页式广告。
在 interstitialDidReceiveAd
方法中,我们检查广告是否已准备好显示,如果是,我们调用 present(fromRootViewController:)
方法来显示广告。
在 interstitial(_:, didFailToReceiveAdWithError:)
方法中,我们处理广告加载失败的情况,并输出错误信息。
最后,在 interstitialDidDismissScreen
方法中,我们处理广告消失后的事件,并调用 createAndLoadInterstitial
方法来加载下一个广告。
这样,你就可以正确处理 "Ad wasn't ready" 错误,并显示广告。