跳到主要内容

广告资源下载安装执行明细

核心概念:桌面管理 | 广告资源下载安装执行明细 | 概览

本模块用于记录 Launcher 终端设备在执行广告位配置资源时的具体操作结果。

通过该功能,管理员可以监控设备是否成功下载了图片/视频资源,应用是否安装成功,或者应用是否已存在,从而排查广告投放过程中的资源下发与执行问题。

执行回调机制

触发时机

当终端设备从服务器拉取广告配置后,会立即执行以下任务:

  1. 下载媒体资源:下载广告位配置中的图片、视频资源
  2. 下载并安装 APK:下载广告位配置中的应用安装包并安装
  3. 检测应用状态:检查目标应用是否已安装

执行完成后,设备立即通过 HTTP 接口上报执行结果。

数据处理流程

Mermaid Diagram Code:

graph LR
    A[终端设备] -->|拉取配置| B[获取广告配置]
    B -->|执行任务| C[下载资源/安装应用]
    C -->|执行完成| D[HTTP POST回调]
    D -->|消息投递| E[Kafka Topic]
    E -->|消息消费| F[Consumer处理]
    F -->|存储| G[MySQL数据库]

Kafka 解耦

系统采用 Kafka 消息队列实现回调数据的异步处理:

  • Topiclauncher-exec-record
  • 生产者ForeignLauncherController 接收设备回调后投递消息
  • 消费者LauncherExecRecordConsumer 消费消息并写入数据库

解耦优势

  • 高并发场景下避免接口阻塞
  • 支持消息重试,确保数据不丢失
  • 便于后续扩展(如实时统计、告警通知)

功能说明

使用场景

场景说明
广告投放验证确认设备是否成功下载并展示广告素材
问题排查分析广告未能正常展示的原因(下载失败/安装失败)
效果统计统计广告资源的实际触达情况

入口

资源绑定配置 列表中,当某条配置的 回调记录条数 大于 0 时,点击该数字即可进入本页面。

列表查询

界面展示了所有设备上报的执行记录流水。

列表查询

字段说明

字段名称说明
adResourceId广告位资源 ID,对应资源绑定配置中的记录 ID
类型执行结果类型
MAC设备 MAC 地址
CPU设备 CPU 序列号
设备时间设备上报时的本地时间
执行完成时间操作实际完成的时间(若设备未上报则使用服务器接收时间)
创建时间记录入库时间

执行类型说明

类型值类型名称说明
0图片下载完成设备成功下载图片资源
1视频下载完成设备成功下载视频资源
2app安装完成设备成功安装应用包
3app已存在应用已安装,无需重复安装
说明

执行记录由设备端主动上报,只有设备成功执行操作后才会有记录。如果某资源配置没有任何回调记录,可能是:

  1. 设备尚未请求该广告配置
  2. 设备请求了但下载/安装失败
  3. 设备网络问题导致上报失败

核心概念:桌面管理 | 广告资源下载安装执行明细 | 技术实现与数据流

技术实现与数据流

1. 数据采集 (Controller层)

终端设备在完成资源下载或应用安装检测后,通过 HTTP 接口上报执行结果:

项目说明
上报接口/launcher/ad/cb
请求方式HTTP POST
数据格式JSON

时间校准机制

  • 尝试从请求体或 Header (d-time) 中获取设备时间
  • 若设备时间与服务器时间偏差在 1 分钟内,使用设备时间
  • 否则使用服务器当前时间

Kafka 投递

  • 数据封装为 JSON 后投递至 Topic:launcher-exec-record
  • 实现异步处理,避免接口阻塞

2. 消息处理 (Consumer层)

LauncherExecRecordConsumer 消费 Kafka 消息并持久化:

  • 监听 Topic:launcher-exec-record
  • 反序列化 JSON 消息为实体对象
  • 遍历记录列表写入 MySQL 数据库

3. 架构图解

Mermaid Diagram Code:

graph TD
    Device["终端设备"] -- "HTTP POST /launcher/ad/cb" --> API["ForeignLauncherController"]
    API -- "时间校准" --> API
    API -- "消息投递" --> Kafka{{"Kafka<br/>launcher-exec-record"}}
    
    Kafka -- "消息消费" --> Consumer["LauncherExecRecordConsumer"]
    
    Consumer -- "写入" --> DB[("MySQL<br/>launcher_exec_record")]
    
    Admin["管理后台"] -- "查询" --> DB

    style Kafka fill:#f9f,stroke:#333,stroke-width:2px
    style DB fill:#6db,stroke:#333,stroke-width:2px

数据模型关系图

下图展示了执行记录的数据结构:

Mermaid Diagram Code:

classDiagram
    class LauncherExecRecordDO {
        +Long id
        +String mac "设备MAC"
        +String cpu "设备CPU"
        +Long adResourceId "资源ID"
        +Integer type "执行类型"
        +LocalDateTime ts "执行完成时间"
        +LocalDateTime dTime "设备上报时间"
        +LocalDateTime createTime "入库时间"
    }
    
    note for LauncherExecRecordDO "类型(type)枚举:<br/>0: 图片下载完成<br/>1: 视频下载完成<br/>2: app安装完成<br/>3: app已存在"
开发文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答