求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
相关产品推荐
相关产品推荐

