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

Swift iOS开发:如何实现用户点击AdMob横幅广告奖励积分功能

实现AdMob横幅广告点击奖励积分的方案

前置前提

  • 你已经完成AdMob SDK的集成,横幅广告可以正常展示和触发回调
  • 你已有成熟的用户积分管理模块,包含积分查询、增减的后端/本地存储逻辑

核心实现逻辑

AdMob的横幅广告点击事件会触发GADBannerViewDelegate的专属回调,你只需要在对应的回调方法里调用你的积分增加接口即可,不需要额外监听点击手势,避免重复触发或者误判。


步骤1:设置横幅广告的代理

首先你需要给每个展示的GADBannerView实例设置delegate,通常在你初始化横幅的ViewController里操作:

// Swift 示例
import GoogleMobileAds

class YourViewController: UIViewController, GADBannerViewDelegate {
    @IBOutlet weak var bannerView: GADBannerView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        bannerView.delegate = self
        // 原有广告加载逻辑保持不变
        bannerView.adUnitID = "你的AdMob广告单元ID"
        bannerView.rootViewController = self
        bannerView.load(GADRequest())
    }
}
// Objective-C 示例
#import "YourViewController.h"
@import GoogleMobileAds;

@interface YourViewController () <GADBannerViewDelegate>
@property (nonatomic, weak) IBOutlet GADBannerView *bannerView;
@end

@implementation YourViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.bannerView.delegate = self;
    // 原有广告加载逻辑不变
    self.bannerView.adUnitID = @"你的AdMob广告单元ID";
    self.bannerView.rootViewController = self;
    [self.bannerView loadRequest:[GADRequest request]];
}
@end

步骤2:在点击回调中实现积分奖励

AdMob的bannerViewDidRecordClick:回调是官方提供的、仅当用户真实点击广告时触发的方法,你在这里调用你的积分增加逻辑即可:

Swift 代码示例

func bannerViewDidRecordClick(_ bannerView: GADBannerView) {
    // 调用你的积分增加接口,每次点击加2积分
    let addPoints = 2
    UserPointsManager.shared.addPoints(amount: addPoints) { [weak self] success in
        guard success else { return }
        // 可选:给用户弹出提示,告知获得积分
        let alert = UIAlertController(title: "积分到账", message: "恭喜你获得\(addPoints)积分,可用于发布帖子", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "知道了", style: .default))
        self?.present(alert, animated: true)
    }
}

Objective-C 代码示例

- (void)bannerViewDidRecordClick:(GADBannerView *)bannerView {
    NSInteger addPoints = 2;
    [[UserPointsManager sharedManager] addPointsWithAmount:addPoints completion:^(BOOL success) {
        if (success) {
            // 可选:弹出积分到账提示
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"积分到账" message:[NSString stringWithFormat:@"恭喜你获得%ld积分,可用于发布帖子", (long)addPoints] preferredStyle:UIAlertControllerStyleAlert];
            [alert addAction:[UIAlertAction actionWithTitle:@"知道了" style:UIAlertActionStyleDefault handler:nil]];
            [self presentViewController:alert animated:YES completion:nil];
        }
    }];
}

注意事项

  • 不要用自定义手势监听横幅的点击,一方面会违反AdMob的政策,另一方面可能会触发无效点击的判定,导致账号受限,必须用官方提供的回调
  • 建议积分增加逻辑走后端校验,不要只存在本地,避免用户篡改数据
  • 可以根据需要控制用户每天点击广告获得积分的上限,避免恶意刷积分的情况
  • 如果你有多个页面都展示了横幅广告,建议把代理的积分奖励逻辑封装到公共工具类里,不用每个页面重复写代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:54:03