Facebook广告后台收不到Adjust回传数据,我们排查了一个月终于找到了根因

一、背景

App集成Adjust SDK上报数据,通过Adjust做归因回传数据给媒体后台(Facebook、TikTok),想必是很多做出海应用的标准方式。(App也集成了FacebookSDK,不过FacebookSDK只用于Facebook登录,没有做额外的FacebookSDK侧的数据上报)。

前阵子,投放同学反馈Facebook广告后台始终收不到iOS的回传数据,安卓没问题。并提供给我们一个Facebook事件管理后台的报错截图。

然后我们围绕 "Advertiser Tracking Enabled 参数数量超出范围" 这个报错进行了一个月的排查,App迭代了多个版本尝试修复这个问题,踩了很多坑。无论是Facebook的文档,还是Adjust文档对此均没有有效的帮助。这个问题很复杂,涉及的环节比较多,每个人报错的原因可能还不一样。 网上很少有人把这个问题讲清楚的,我今天把它讲清楚,分享出来,希望能帮助到大家,少走点弯路吧。

二、Advertiser Tracking Enabled 参数数量超出范围

Facebook广告后台对于收到的数据,无论是Facebook SDK自采集的,还是第三方上报的(比如Adjust上报的),都会检查 Advertiser Tracking Enabled 值的分布情况(1或0)。0没有传该字段、未授权、不同意,1同意授权。对于iOS来说,就是IDFA弹窗用户是否同意。

Advertiser Tracking Enabled 值0和1的比例必须符合真实分布情况,即 既得有1的数据,也得有0,且得按一定比例分布,比如 0:1 的数据比例为2:1(2:1只是举例子)。

如果收到的数据中Advertiser Tracking Enabled的值全是0,或者全是1,Facebook广告后台则会认为数据失真,报"Advertiser Tracking Enabled 参数数量超出范围"。

而由于Facebook后台收到的数据口径有很多,比如 FacebookSDK直接采集上报、Adjust上报,所以,要解决这个问题,需要结合你业务的实际上报口径针对性的修改。

三、解决方案

1、检查Adjust后台事件映射是否配置正确

------这个投放同学自己去检查一下就好了。

2、检查Adjust后台-归因设置,确保 "启用进阶隐私模式" 开关处于关闭状态

------这个开关很关键,我们这次排查到最后,发现问题根因就是Adjust后台这个开关被打开导致的。

"启用进阶隐私模式"开关打开后,Adjsut会对收到的数据进行过滤,只上报ATT(IDFA授权弹窗)为同意的设备数据给媒体(Facebook、TikTok)。这就导致了Facebook广告后台收到的数据全是Advertiser Tracking Enabled=1的数据(而且数据量也会比实际少很多,因为大多数人都不会同意ATT授权,不同意的这部分数据Adjust不会报给媒体),出现"Advertiser Tracking Enabled 参数数量超出范围"这个错误。

上面这段内容是我们咨询Adjust技术支持得到的信息。这段信息很关键,但让人生气的是,Adjust文档上根本就没有这些信息!回复的邮件中这个文档我早看过了,里面根本就没有这些信息!

3、开发侧改造

前文提到Facebook广告后台的数据,有一份来自Facebook SDK自采集(比如 安装、启动、激活),所以,Facebook SDK的Advertiser Tracking Enabled上报也需要满足真实分布的要求。

旧版的FacebookSDK(17.0.0以下),Advertiser Tracking Enabled值是让开发者自己手动赋值上报的。所以,你需要在初始化FacebookSDK之前,根据IDFA授权实际情况去调用FacebookSDK的setAdvertiserTrackingEnabled方法赋值,详见文档《Advertising Tracking Enabled》

而新版的FacebookSDK(17.0.0及以上),不需要开发者自己手动赋值了,它内部会读取iOS系统的ATT API去获取状态。

所以,如果你的FacebookSDK版本已经是17.0.0及以上了,恭喜你,什么都不用做了。

如果,你的FacebookSDK版本低于17.0.0,你需要做如下处理。

方案一:升级FacebookSDK

将客户端FacebookSDK升级到17.0.0 或更高版本。服务端需要配合一起调整Facebook登录的校验逻辑,改为图谱API的方式校验,否则Facebook登录会报错

参考文档《iOS版限制登录》《用于受限登录的 OIDC 口令》

方案二:不升级FacebookSDK

因为方案一涉及到服务端调整,如果你觉得改动大,也可以不升级。按照上文所述,在初始化FacebookSDK之前,根据IDFA授权实际情况去调用FacebookSDK的setAdvertiserTrackingEnabled方法。

对于新应用来说,无脑选方案一;

老应用,可以用方案二再苟一段时间。后面Facebook也可能强制要求升级,Whatever,强制升级的那一天,和你App生命周期结束的那一天,还不知道哪一个会先来呢?

创作不易,点个赞再走吧!

参考文档

《Advertising Tracking Enabled》

《解决应用使用全事件衡量的资格相关问题》

《iOS 版限制登录》

《用于受限登录的 OIDC 口令》

相关推荐
FairGuard手游加固1 天前
iOS 游戏加固技术解析:代码混淆、资源加密、内存保护与重签名检测
安全·游戏·macos·unity·ios·objective-c
思盛iOS签名上架1 天前
iOS企业签名原理是什么?
macos·ios·cocoa
Daniel_Coder1 天前
我用 SwiftUI + GRDB 做了一个「按时吃药·服药提醒」App
ios·swiftui·swift·widgetkit
QH139292318801 天前
R&S FSPN50 FSPN26 FSWP26 相位噪声分析仪典型应用案例
人工智能·百度·微信·集成测试·音视频·facebook·oneapi
Patrick_Wilson1 天前
iOS 第三方浏览器图片下载失败问题
前端·ios·浏览器
悟空瞎说2 天前
NSNotificationCenter(NotificationCenter)官方文档白话翻译 + API 详解 + Swift 实战
ios
末代iOS程序员华仔2 天前
iOS个人开发者账号申请为啥会被卡住
ios·swift·figma
MaoJiu2 天前
从纹理采样到局部形变:实时瘦鼻 Shader 算法解析
ios