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

SwiftUI中使用AdMob测试ID加载激励/插屏广告失败:无广告可展示

问题:iOS SwiftUI应用中AdMob插屏/激励广告加载失败(报错Request Error: No ad to show)

环境与现象

  • 开发栈:SwiftUI + Xcode 14,依赖GoogleMobileAds 9.11.0
  • 限制条件:无Google AdMob账户,使用官方测试AdUnitID;无Apple开发者账户,仅能在iOS模拟器运行
  • 异常现象:Banner广告可正常加载,但插屏、激励、激励插屏广告加载时始终报错Request Error: No ad to show

激励广告加载代码

func LoadRewarded(){
    let request = GADRequest()
    
      GADRewardedAd.load(
        withAdUnitID: "ca-app-pub-3940256099942544/5224354917",
            request: request, completionHandler: { (ad, error) in
                 if let error = error {
                     print("Rewarded ad failed to load with error: \(error.localizedDescription) ")
                     return
                 }
                 self.rewardedAd = ad
                 self.rewardedAd?.fullScreenContentDelegate = self
            }
      )
}

可能的原因与解决方案

1. 模拟器的广告填充限制

Google AdMob的全屏测试广告(插屏、激励类)在部分iOS模拟器环境下填充率极低,甚至无法返回广告。这是因为测试广告池对模拟器的硬件/系统版本有适配范围限制。

  • 尝试切换不同iOS版本的模拟器(比如iOS 15、iOS 16)测试;
  • 若有条件,使用真实iOS设备测试(无需开发者账户也可通过Xcode直接部署到设备),真实设备的测试广告填充稳定性远高于模拟器。

2. GoogleMobileAds版本兼容性问题

你使用的9.11.0版本属于较旧版本,可能与Xcode 14的编译环境存在适配冲突,导致广告请求流程异常。

  • 升级到GoogleMobileAds 9.x系列的最新稳定版本,或直接迁移到10.x版本(注意10.x有API变更,需调整代码适配),重新测试广告加载。

3. 测试AdUnitID的请求频率限制

即使是官方测试AdUnitID,频繁重复的广告请求也可能触发临时的填充限制。

  • 检查代码中是否存在多次重复调用广告加载方法的逻辑,确保广告请求间隔合理;
  • 暂停一段时间后再发起请求,避免短时间内大量请求导致被限制。

4. 广告加载时机问题

确保广告加载请求是在应用处于活跃状态时发起的,避免在视图初始化等非活跃阶段调用。

  • 将广告加载方法放在视图的onAppear回调中执行,确保AdMob SDK已经完成初始化流程。

内容的提问来源于stack exchange,提问作者revati.at

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:30:47