You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS Swift接入Google AdMob插屏广告无法正常展示问题求助

插屏广告无法弹出的常见排查点:

  • 确认调用展示时广告实例已加载完成
    你当前的广告加载是异步操作,若点击按钮时广告还未加载完成或加载失败,interstitialAd为空自然不会有弹窗。可先在展示方法中添加判断和日志定位问题:
func interstitialPresent() {
    if let ad = interstitialAd {
        ad.present(fromRootViewController: self)
    } else {
        print("广告未就绪,触发重新加载")
        interstitialSetup()
    }
}

如果日志打印出广告未就绪,可进一步查看interstitialSetup的回调中是否有加载失败的报错,排查广告单元ID、网络、AdMob账号配置的问题。测试阶段建议先使用官方测试插屏IDca-app-pub-3940256099942544/4411468910排除正式广告无填充的问题。

  • 确认展示操作在主线程执行
    SpriteKit的节点点击回调默认可能不在主队列,而所有UI相关操作(包括广告弹窗)必须在主线程执行才会生效。你在游戏场景中调用interstitialPresent时需要包一层主队列调度:
// SKScene中调用示例
DispatchQueue.main.async {
    gameViewController.interstitialPresent()
}
  • 广告展示过一次后未重新加载
    GADInterstitialAd是一次性实例,只要成功展示过一次,哪怕用户关闭了广告,当前实例也会失效,下次需要展示必须重新调用加载方法。你可以在广告关闭的回调中添加预加载逻辑:
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("广告已关闭,预加载下一次广告")
    interstitialSetup()
}
  • 确认ViewController引用正确
    检查你在游戏场景中拿到的GameViewController实例是不是当前活跃的顶层控制器,如果拿到的是已经销毁的、或者未显示的控制器实例,调用present也不会有弹窗。

内容的提问来源于stack exchange,提问作者LittleRocketMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:48:04