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

求Swift语言的iOS AdMob Rewarded interstitial广告实现示例及指引

AdMob 激励插屏广告 Swift 实现指南

你已经完成过AdMob横幅、开屏广告的集成,无需重复配置基础SDK和Info.plist相关项,直接按以下步骤实现激励插屏广告即可:

1. 导入AdMob框架

在需要使用广告的控制器头部引入依赖:

import GoogleMobileAds

2. 声明广告实例

在控制器类中声明激励插屏广告的全局可选属性:

var rewardedInterstitialAd: GADRewardedInterstitialAd?

3. 预加载广告

建议提前调用加载方法,不要等到需要展示广告时才触发加载:

func loadRewardedInterstitialAd() {
    // 测试阶段使用官方测试ID,上线前替换为你自己的正式广告ID
    let adUnitID = "ca-app-pub-3940256099942544/6978759866"
    GADRewardedInterstitialAd.load(withAdUnitID: adUnitID, request: GADRequest()) { [weak self] ad, error in
        guard let self = self else { return }
        if let error = error {
            print("激励插屏广告加载失败: \(error.localizedDescription)")
            self.rewardedInterstitialAd = nil
            return
        }
        self.rewardedInterstitialAd = ad
        // 绑定广告生命周期代理
        self.rewardedInterstitialAd?.fullScreenContentDelegate = self
    }
}

4. 展示广告

在需要触发广告的业务逻辑中调用展示方法:

func showRewardedInterstitialAd() {
    guard let ad = rewardedInterstitialAd else {
        print("广告未加载完成,无法展示")
        // 触发重新加载广告
        loadRewardedInterstitialAd()
        return
    }
    ad.present(fromRootViewController: self) {
        // 用户完成广告观看,此处执行奖励发放逻辑
        let reward = ad.adReward
        print("用户获得奖励: \(reward.amount) \(reward.type)")
        // 例如:增加金币、解锁付费内容等
    }
}

5. 实现广告生命周期代理

让控制器遵守GADFullScreenContentDelegate协议,处理广告的展示失败、关闭等事件:

// 替换为你自己的ViewController类名
extension YourViewController: GADFullScreenContentDelegate {
    // 广告展示失败回调
    func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
        print("广告展示失败: \(error.localizedDescription)")
        rewardedInterstitialAd = nil
        loadRewardedInterstitialAd()
    }
    
    // 用户关闭广告回调
    func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
        print("用户关闭广告")
        // 清空旧广告实例,预加载下一次广告
        rewardedInterstitialAd = nil
        loadRewardedInterstitialAd()
    }
    
    // 广告被点击回调(可选实现)
    func adDidRecordClick(_ ad: GADFullScreenPresentingAd) {
        print("用户点击了广告")
    }
}

注意事项

  • 请在测试阶段使用官方提供的测试ID,避免因频繁测试触发AdMob的流量违规判定,正式上线前再替换为你后台申请的广告ID
  • 建议在App启动、广告关闭、广告加载失败时都触发预加载逻辑,保证用户触发广告时无需等待
  • 上述代码适配AdMob SDK v8.0及以上版本,最低支持iOS 13,如果你需要兼容更低版本请对应调整旧版本API

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:15:04