头条回传开发技术文档
巨量引擎对接文档: 巨量引擎文档链接
WHAT
什么是头条监测链接?
-
就是广告主提供给头条的监测链接,头条用户点击广告主投放广告瞬间,头条将用户个人信息,例如安卓手机的
imei
号或oaid
,ios
系统的idfa
这些设备号,还有广告名字,投放位置,广告点击时间等信息,通过监测链接请求给广告主; -
广告主拿到头条用户的设备信息后,对比自身用户的设备号,如果该头条用户成功注册,那么肯定可以匹配成功,匹配成功告知头条,头条系统知道后,便可以动态调整广告流量;
WHY
为什么要开发头条回传链接?
- 用户点击广告主投放的广告,且注册成功,如果没有告诉头条注册成功,头条无法感知到该广告的效果,就无法自动帮广告主加大广告播放量,因此需要广告主自行开发广告点击的回传链接,告知头条广告投放效果,从而动态调整广告流量
HOW
怎么实现头条监测链接,并实现匹配回传?
链接入口
数据库层面:
- 头条请求表:
shu_toutiao_request_args
,每次头条请求监测链接记录请求参数,以设备号 device_id(头条传过来的IMEI/OAID/IDFA
)作为唯一键,防止同一个用户多次点击同一广告,而产生多次记录,从而发生多次匹配,多次回传; - 省省用户设备信息表:
shu_devices
,shu_user_devices
shu_devices
纯粹记录用户的设备号,但不绑定任何user_id
;shu_user_devices
记录用户id和shu_devices
的id
之间的关系,这样,一个用户就可以拥有多个设备;
代码层面:
- exp-tools服务
- 代码路径:
exp-tools/app/apis/resources/toutiao_ad.py
- 代码思路:
- 将设备信息和一些其他信息记录记录进头条请求表,如果是运营进行联调的设备信息(白名单用户:可以多次匹配),那么就更新它的回传参数
- 代码路径:
- account服务
- 代码路径:
account/server/models/login.py:261
account/server/models/login.py:284
- 代码思路:
- 客户端(
安卓app
或ios的app
)将用户的设备信息通过登录接口放在请求头部 - 后端获取得到设备信息,记录每个登录用户的设备信息到
shu_devices
和shu_user_devices
表 - 记录完成,拿到
shu_device_id
和shu_user_device_id
,通过kafka
将附带设备信息的登录信息传递给monitor服务,monitor服务进行匹配
- 客户端(
- 代码路径:
- monitor服务
- 代码路径:
monitor-server/server/messager/user.py:30
- 代码思路:
- 通过
kafka
接收到用户登录的消息,获取device_id
,通过sql
查询头条表,查找匹配的记录 - 白名单功能:运营每次新开一个广告计划,需要重新联调监测链接,因此需要开发白名单功能
- 白名单记录在
zookeeper
,白名单设备信息为imei
,imei_md5
,oaid
和idfa
- 白名单的设备信息,每次匹配都会回传信息,不会将 is_match 置为 1 ,这样每次都可以进行匹配
- 白名单记录在
- 匹配且成功回传后,更新头条请求表,更新 is_match = 1,user_id = {match_user_id},match_type = 1 / 2 / 3
- 匹配类型match_type解释:
- match_type = 1【新增用户】:用户点击广告时间小于等于用户注册省省
app
时间,并且注册渠道等于链接的渠道 - match_type = 2【回流用户】:用户点击广告时间大于用户注册时间,并且用户注册渠道不等于点击链接渠道,并且当前下载渠道等于点击链接渠道
- match_type = 3 【新增用户异常】:用户点击广告时间小于等于用户注册省省
app
时间,但是用户注册渠道不等于点击链接的渠道
- match_type = 1【新增用户】:用户点击广告时间小于等于用户注册省省
- 通过
- 代码路径:
TEST
怎么测试?
- 通过监测链接新增头条请求表数据
- 建立新账号登录省省回头车
APP
,或者修改数据库里的用户的创建时间,用老帐号登录也可 - 最后,观察头条请求表的记录更新状态,看是否 is_match = 1,观察头条广告主后台的数据变化