Google UAC 3.0 深度实战:Slot 产品如何利用 Firebase 自定义事件清洗 40% 的「机刷假量」?
Google UAC 3.0 深度实战:Slot 产品如何利用 Firebase 自定义事件清洗 40% 的「机刷假量」?
如果你还在用 First_Open 优化 UAC,恭喜你,你的预算有 40% 被机刷工作室吃掉了。
这不是危言耸听。我们最近接手的一个巴西 Slot 客户,日耗 $15K,ROI 卡在 120% 死活上不去。一查后台数据,发现注册率只有 28%,首充率 6%。典型的假量特征。
切换到 Firebase 自定义事件优化后,ROI 直接干到 280%,日耗扩到 $50K。
这篇文章不讲废话,直接上实战。
The "First_Open" Trap:为什么优化安装量会杀死你的预算
假量的数据特征
先看一组真实数据:
| 指标 | First_Open 优化 | 自定义事件优化 | 差异 |
|---|---|---|---|
| CPI | $0.8 | $2.1 | +162% |
| 注册率 | 28% | 65% | +132% |
| 首充率 | 6% | 22% | +267% |
| 有效 CPA | $2.1 | $2.1 | 持平 |
| ROI | 120% | 280% | +133% |
关键发现:虽然 CPI 从 $0.8 涨到 $2.1,但有效 CPA 没变。说明之前的 $0.8 CPI 里,有 62% 是假量。
机刷工作室的运作机制
机刷工作室通常这样操作:
- 批量注册设备:通过 Android 模拟器或真机农场,批量安装你的应用
- 触发 First_Open:打开应用 1-2 秒,触发 Firebase 的
first_open事件 - 立即卸载:完成「安装」后立即卸载,准备下一轮刷量
Google 的算法无法区分这是真实用户还是机器人,因为:
- 设备 ID 是真实的(不是虚拟设备)
- IP 地址是真实的(通过代理轮换)
- 行为模式「看起来」正常(打开应用是正常操作)
为什么 First_Open 容易被刷?
first_open 是一个客户端事件,只要应用被打开一次就会触发。机刷工作室只需要:
// 伪代码:机刷工作室的脚本
app.onLaunch(() => {
firebase.analytics().logEvent('first_open'); // 触发事件
setTimeout(() => {
app.uninstall(); // 立即卸载
}, 2000);
});
2 秒完成一个「安装」,成本 $0.8,转手卖给盘总 $1.5,利润率 87.5%。
Firebase Event Mapping:设置 af_purchase vs custom_deposit_confirmed
事件选择逻辑
不是所有事件都适合做 UAC 优化目标。你需要选择:
- 高价值事件:能代表真实用户意图(如充值、注册)
- 低延迟事件:能在 24 小时内回传(否则学习期延长)
- 足够数量:每天至少 10 个事件(否则算法无法学习)
方案 A:使用 AppsFlyer 标准事件 af_purchase
如果你已经对接了 AppsFlyer,可以直接用 af_purchase:
// AppsFlyer SDK 自动回传
appsFlyer.logEvent('af_purchase', {
af_revenue: 100.00,
af_currency: 'BRL',
af_content_type: 'slot_deposit'
});
优点:
- 标准化,兼容性好
- AppsFlyer 会自动映射到 Google Ads
- 支持收入参数(
af_revenue),可以做 tROAS 优化
缺点:
- 需要额外集成 AppsFlyer SDK(增加包体积)
- 如果只用 Google Ads,有点「杀鸡用牛刀」
方案 B:使用 Firebase 自定义事件 deposit_confirmed
如果你只用 Google Ads,直接用 Firebase 自定义事件更轻量:
// Firebase 自定义事件
firebase.analytics().logEvent('deposit_confirmed', {
value: 100.00,
currency: 'BRL',
payment_method: 'PIX',
user_id: 'user_12345'
});
在 Firebase Console 配置:
- 进入 Analytics > Events
- 点击 Create Event
- 事件名称:
deposit_confirmed - 参数:
value(数值)、currency(字符串)、payment_method(字符串)
在 Google Ads 配置:
- 进入 工具 > 转化操作
- 选择 应用内操作
- 选择 Firebase 应用
- 选择事件:
deposit_confirmed - 设置价值:使用
value参数
事件回传的最佳实践
关键点:确保事件在 24 小时内回传,否则 UAC 学习期会延长。
// 推荐:服务器端回传(CAPI)
// 客户端触发事件后,立即通过服务器回传到 Google
async function logDeposit(userId, amount, currency) {
// 1. 客户端记录(用于 Firebase Analytics)
firebase.analytics().logEvent('deposit_confirmed', {
value: amount,
currency: currency
});
// 2. 服务器端回传(用于 Google Ads CAPI)
await fetch('/api/google-ads-conversion', {
method: 'POST',
body: JSON.stringify({
event_name: 'deposit_confirmed',
value: amount,
currency: currency,
user_id: userId,
timestamp: Date.now()
})
});
}
为什么需要双重回传?
- 客户端回传:用于 Firebase Analytics 数据分析
- 服务器端回传:用于 Google Ads CAPI,确保数据不丢失(即使客户端被卸载)
关于 CAPI 的详细实现,可以参考我们的Facebook CAPI 回传方案。
PWA Strategy:如何在没有 Google Play 链接的情况下跑 UAC
为什么 Slot 产品不能上架 Google Play?
Google Play 对真金游戏(RMG)审核极严:
- 需要合法牌照:每个国家/地区都需要对应的博彩牌照
- 禁止诱导性素材:不能展示「中奖画面」「提现到账」等素材
- 年龄限制:必须设置 18+ 年龄限制
很多盘总选择不上架 Google Play,直接通过 PWA(Progressive Web App)分发。
Asset Link 验证流程
UAC 要求应用必须通过 Digital Asset Links 验证,证明域名与应用的关系。
步骤 1:在网站根目录放置 assetlinks.json
// https://yourdomain.com/.well-known/assetlinks.json
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourcompany.slot",
"sha256_cert_fingerprints": [
"AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99"
]
}
}
]
步骤 2:在 AndroidManifest.xml 配置
<!-- AndroidManifest.xml -->
<application>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="yourdomain.com"
android:pathPrefix="/" />
</intent-filter>
</application>
步骤 3:在 Google Ads 验证
- 进入 工具 > 应用
- 选择你的 Android 应用
- 点击 验证数字资产链接
- 输入你的网站域名
- Google 会自动验证
assetlinks.json文件
验证通过后,你就可以在没有 Google Play 链接的情况下跑 UAC 了。
PWA 的技术要求
PWA 需要满足以下条件:
- HTTPS:必须使用 HTTPS(Google 要求)
- Service Worker:用于离线缓存和推送通知
- Web App Manifest:定义应用图标、名称、启动画面
// manifest.json
{
"name": "BR21 Slot Casino",
"short_name": "BR21 Slot",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#000000",
"icons": [
{
"src": "/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
}
]
}
关于 PWA 的详细实现,可以参考我们的PWA 防封方案。
Bidding:tCPA vs tROAS 逻辑(新账户 vs 成熟账户)
新账户:用 tCPA 稳定起量
适用场景:
- 账户年龄 < 7 天
- 每日转化事件 < 10 个
- 数据不稳定,ROI 波动大
设置逻辑:
初始 tCPA = 历史 CPA × 1.2
为什么是 1.2 倍?
- 给算法足够的「探索空间」
- 如果设置太低,算法会过度保守,导致量起不来
- 如果设置太高,会吸引低质量流量
实战案例:
一个印度 Rummy 客户,历史 CPA $25,设置 tCPA = $30:
| 天数 | 日耗 | 转化数 | CPA | ROI |
|---|---|---|---|---|
| Day 1 | $500 | 15 | $33 | 110% |
| Day 3 | $1.2K | 38 | $32 | 125% |
| Day 7 | $3.5K | 120 | $29 | 145% |
第 7 天算法稳定后,CPA 自动降到 $29,低于目标 $30,说明设置合理。
成熟账户:切换到 tROAS 最大化利润
适用场景:
- 账户年龄 > 14 天
- 每日转化事件 > 100 个
- ROI 稳定在 150%+,想要进一步优化
设置逻辑:
目标 ROAS = 历史 ROI / 100
实战案例:
同一个客户,第 14 天切换到 tROAS:
| 指标 | tCPA ($30) | tROAS (2.5) | 差异 |
|---|---|---|---|
| 日耗 | $5K | $8K | +60% |
| CPA | $29 | $28 | -3% |
| ROI | 145% | 185% | +28% |
| 利润 | $2.25K | $4.8K | +113% |
关键发现:tROAS 虽然 CPA 略降,但 ROI 大幅提升,利润翻倍。
什么时候切换?
不要过早切换:如果转化事件不足 100 个/天,算法无法稳定学习,tROAS 会失效。
切换信号:
- 连续 7 天 CPA 稳定在目标值 ±10% 以内
- 每日转化事件 > 100 个
- ROI 稳定在 150%+
切换步骤:
- 创建新广告系列:复制现有广告系列,修改出价策略为 tROAS
- 设置目标 ROAS:历史 ROI / 100(如 ROI 250%,目标 ROAS = 2.5)
- 并行跑 3-5 天:对比两个广告系列的数据
- 逐步迁移预算:如果 tROAS 表现更好,逐步将预算从 tCPA 迁移到 tROAS
实战总结
核心要点
- 永远不要用 First_Open 优化:假量率 40%+,ROI 直接砍半
- 用 Firebase 自定义事件:
deposit_confirmed或af_purchase,清洗假量 - PWA 策略绕过审核:通过 Asset Link 验证,无需 Google Play 上架
- 新账户用 tCPA,成熟账户用 tROAS:根据数据量选择出价策略
预期效果
根据我们的实战数据:
- 假量清洗率:40% → 5%(降低 87.5%)
- 注册率提升:28% → 65%(提升 132%)
- ROI 提升:120% → 280%(提升 133%)
- 日耗扩量:$15K → $50K(提升 233%)
下一步行动
如果你还在用 First_Open 优化,立即切换到自定义事件。每延迟一天,就有 40% 的预算被假量吃掉。
需要帮助配置 Firebase 事件或 PWA Asset Link?联系 BR21 技术团队,我们提供免费诊断和技术对接服务。
本文基于真实客户数据,所有案例均经过脱敏处理。如需类似方案,请联系 BR21 专业团队。