如何验证设备归因

验证设备归因

使用 Singular Device Assist 应用和 Attribution Details API 端点进行 设备归因验证的完整指南,适用于集成测试 和追踪链接验证。

Singular 提供两种验证设备归因的方法:用于移动端测试的 Device Assist 应用和用于程序化验证的 Attribution Details API 端点。

在测试新的 SDK/S2S 集成以及在活动投放前验证 Singular Links 时, 验证归因是必不可少的环节。

目标受众 UA 经理、开发人员、QA 工程师
前提条件
  • 用于测试的移动设备(Device Assist 应用方法)
  • Singular API 密钥(API 端点方法)
  • 设备广告标识符(IDFA、IDFV、GAID 等)

归因验证使用场景

何时需要验证归因

设备归因验证在集成和活动投放生命周期的多个阶段至关重要。

使用场景 目的
SDK/S2S 集成测试

验证 SDK 在集成开发过程中是否正确追踪安装事件并 将其归因到正确的来源。

完整测试控制台指南

追踪链接验证

在活动投放前测试新的 Singular Links, 以确保归因正确 且参数传递无误。

如何测试追踪链接

活动问题排查 通过检查测试设备的归因状态,诊断正在投放的 活动中的归因问题
合作伙伴集成验证 确认归因数据从广告合作伙伴正确流入 Singular 平台

方法对比

选择验证方法

根据测试需求和技术能力,选择合适的 验证方法。

方法 最适合 要求 局限性
Device Assist 应用
  • 快速手动测试
  • 非技术人员
  • 可视化验证
  • 移动设备
  • 安装应用
手动流程,自动化程度有限
Attribution Details API
  • 自动化测试
  • 程序化验证
  • CI/CD 集成
  • API 密钥
  • 设备标识符
  • HTTP 客户端
仅用于测试(测试版),需要技术知识

方法一:Device Assist 应用

一款移动应用,可在测试设备上直接快速地对设备归因状态、 安装详情和事件追踪摘要进行可视化验证。

Device Assist 应用概述

应用功能

Device Assist 应用可显示 Singular 为特定设备记录的全面归因信息。

显示的归因数据:

  • 安装归因: 安装时间戳、归因网络 和活动名称
  • 再互动归因: 再互动时间戳、归因 网络和活动详情
  • 事件摘要: Singular 为该设备追踪的 会话和应用内事件
  • 设备标识符: 用于追踪的 IDFA、IDFV、GAID 或其他标识符

使用 Device Assist 应用

分步操作流程

1

下载 Device Assist 应用

在测试设备上安装 Singular Device Assist 应用:

2

启动归因检查

打开 Device Assist 应用,从主菜单中选择 检查实现

Device Assist 主菜单

其他功能: Device Assist 应用 还提供设备标识符查询 和 SDK 实现验证工具, 均可从主菜单访问。

3

选择设备标识符

应用会自动为该平台选择合适的设备标识符。 确认选择后,再次点击 检查实现 继续操作。

选择设备标识符

标识符选择:

  • iOS: IDFA(如果 ATT 已授权) 或 IDFV(如果 ATT 未授权或未实现)
  • Android: GAID(Google 广告 ID)或在 GAID 不可用时使用替代标识符
4

查看归因详情

应用将显示 Singular 平台记录的该设备完整归因信息。

归因详情展示

显示的归因信息
安装归因详情

安装时间戳: 首次启动应用 (安装事件)的日期和时间

归因网络: 归因该安装的广告网络 或来源(例如 Facebook、Google Ads、 自然量)

活动名称: 归因该安装的营销活动

附加参数: 通过追踪链接传递的 活动特定参数


解读安装归因
  • "Organic": 在归因窗口内未找到 匹配的触点——安装未 归因于付费活动
  • "Unattributed": 设备已追踪,但归因 决策待处理或未完成
  • 网络名称: 安装已成功归因 到特定广告合作伙伴
再互动归因详情

再互动时间戳: 最近一次再互动会话的日期和时间

归因网络: 归因为带回用户的 来源

活动名称: 归因该会话的再互动活动

自归因媒体: 来自自归因媒体(Twitter、 Facebook、Google Ads、 Snapchat 等)的再互动归因可能因隐私原因 显示为"Unattributed"。


再互动归因要求

发生再互动归因需满足以下条件:

  • 用户必须已有安装记录(非 新设备)
  • 再互动活动的点击必须发生在 已配置的归因窗口内
  • 会话必须发生在再互动点击之后

了解更多: 再互动归因常见问题

事件追踪摘要

Device Assist 应用显示 Singular 为该设备追踪的 所有应用内事件的摘要。

显示的事件信息:

  • 事件名称: 被追踪事件的名称(session、 purchase、level_complete 等)
  • 首次事件时间: 首次发生的时间戳
  • 最近事件时间: 最近一次发生的时间戳
  • 事件计数: 事件发生的总次数
  • 收入: 收入事件的总收入

验证事件追踪

使用事件摘要验证:

  • 会话是否被正确追踪
  • 自定义事件是否以正确名称显示
  • 收入事件是否正确捕获金额
  • 事件时间戳是否与用户实际操作相符

Device Assist 问题排查

常见问题

未显示归因数据

可能原因

  • 应用未安装: 测试应用尚未在设备上安装 或启动
  • 标识符错误: Device Assist 检查的标识符 与应用 SDK 使用的不一致
  • SDK 未初始化: Singular SDK 未在应用中 正确初始化
  • 归因待处理: 归因决策尚未完成 (通常需要 1-5 分钟)

解决步骤

  1. 确认测试应用已在设备上安装并至少启动一次
  2. 确认设备标识符与 SDK 中使用的标识符类型匹配(iOS 的 IDFA vs IDFV)
  3. 等待应用启动后 5-10 分钟,然后重新检查归因
  4. 使用 测试控制台 验证 SDK 集成
归因到错误来源

可能原因

  • 设备曾用于测试: 该设备之前用于测试, 存在缓存的归因数据
  • 多个触点: 归因窗口内有多个活动点击
  • 设备指纹匹配: 概率归因匹配了错误的点击

解决步骤

  1. 重置设备并清除归因:
    • 删除测试应用
    • 重置广告标识符
    • 如已注册,从 测试控制台 中删除该设备
  2. 测试前使用全新设备或重置标识符
  3. 测试时使用确定性归因(追踪链接中包含设备 ID) 而非设备指纹追踪
  4. 在合作伙伴配置中检查归因窗口设置
安装被归因为自然量而非活动

可能原因

  • 超出归因窗口: 安装发生在已配置归因窗口 之外
  • 无匹配触点: 未找到与该设备匹配的点击
  • 设备指纹不匹配: 点击与安装之间设备指纹发生变化
  • 未点击链接: 应用直接从应用商店安装, 未点击追踪链接

解决步骤

  1. 确认在安装应用前已点击追踪链接
  2. 检查归因窗口设置,确保留有足够时间完成安装
  3. 在追踪链接中使用设备 ID(确定性归因),以确保测试可靠
  4. 确保点击和安装过程中网络连接稳定
  5. 换用其他设备或重置标识符后重试

方法二:Attribution Details API

程序化 API 端点,可为集成测试和 CI/CD 流水线实现自动化归因验证。

测试版功能说明: Attribution Details API 端点为 测试版功能,仅供测试使用——请勿在生产环境应用 或高流量场景中调用。


API 端点规格

请求格式

端点 URL:

https://api.singular.net/api/attribution/attribution_details

请求方法: GET

完整请求示例:

https://api.singular.net/api/attribution/attribution_details?keyspace=idfa&device_id=12345678-1234-1234-1234-123456789012&api_key=your_api_key_here

查询参数

必填参数

参数 类型 说明
api_key String

平台中的 Singular 报告 API 密钥。

位置: Dashboard → Developer Tools → API Keys → Reporting API Key

重要提示: 请使用 Reporting API Key, 而非 SDK Key。不同密钥 用途各异。

device_id String

设备广告标识符的值。

必须与 keyspace 参数中指定的标识符类型匹配。

keyspace String (Enum)

device_id 中提供的广告标识符类型:

  • idfa - iOS 广告主标识符 (需要 ATT 授权)
  • idfv - iOS 供应商标识符(IDFA 不可用时的替代方案)
  • aifa - Android 广告标识符 (即 GAID)
  • sdid - Singular 设备 ID,用于网页追踪 (SDK 初始化后通过 singularSdk.getSingularDeviceId() 获取)

API 响应

响应格式

API 返回包含所请求设备归因详情的 JSON 数组。

响应示例

[
  {
    "app_long_name": "com.example.myapp",
    "app_name": "My App",

    "install_info": {
      "install_time": "2020-06-10 11:58:46",
      "network": "Network 1",
      "additional_parameters": {
        "kw": "my keyword",
        "pcid": "1234"
      },
      "campaign_name": "Campaign Name",
      "view_through_attribution": false
    },

    "re_engagement_info": {
      "notes": "Attributions from Self-Attributing networks including: Twitter, Facebook, Google Ads, Snapchat, etc are redacted and always show as 'Unattributed'",
      "install_time": "2020-06-15 15:27:12",
      "network": "Unattributed"
    },

    "uninstall_pre_requisites": {
      "gcm_token": "enE8iQR10RI:APA91bERgfA_xm8T7zgqH9OW_1s05SFFmKnle1zIm0cMrDfuaSxEmC_3j72dj4qN36vh5V8TAEnrXa3Pq3SmLW-XNOHP7daMwcBrBTibdkv_pKMJbN9SbefV6_9nuEfIeI5Zhtz0nlLY"
    },

    "events": [
      {
        "event_name": "Session",
        "first_event_time": "2020-04-02 00:09:55",
        "last_event_time": "2020-04-07 20:59:55",
        "event_count": 2
      },
      {
        "event_name": "Save New Transaction",
        "first_event_time": "2020-04-02 00:11:51",
        "last_event_time": "2020-04-02 00:11:51",
        "event_count": 1
      }
    ]
  }
]

响应参数

JSON 响应字段

字段 说明
app_long_name

应用 Bundle ID(例如 com.example.myapp)

app_name

在 Singular 平台中配置的应用显示名称

install_info

包含安装归因详情和决策信息的对象:

  • install_time - 首次应用会话(安装)的时间戳
  • network - 归因该安装的广告网络
  • campaign_name - 归因该安装的活动名称
  • view_through_attribution - 布尔值,表示归因基于广告展示(true) 还是广告点击(false)。 了解更多: Singular 安装归因流程
  • additional_parameters - 通过追踪链接传递的自定义参数。 详情: 追踪链接参数与报告维度
re_engagement_info

install_info 结构相同的对象,但针对再互动归因。

了解更多: 再互动归因常见问题

隐私说明: 来自自归因媒体(Facebook、Google Ads、Twitter、Snapchat) 的再互动归因因隐私合规要求 将显示为"Unattributed"。

events

包含 SDK 追踪的应用内事件摘要的对象数组:

  • event_name - 被追踪事件的名称
  • first_event_time - 首次发生的时间戳
  • last_event_time - 最近一次发生的时间戳
  • event_count - 事件发生的总次数
  • revenue - 收入事件的总收入(如适用)
uninstall_pre_requisites

包含卸载追踪配置的对象:


API 使用示例

实现示例

CURL PYTHON JAVASCRIPT

iOS 设备(IDFA)

curl -X GET "https://api.singular.net/api/attribution/attribution_details?keyspace=idfa&device_id=12345678-1234-1234-1234-123456789012&api_key=your_api_key_here"

Android 设备(GAID)

curl -X GET "https://api.singular.net/api/attribution/attribution_details?keyspace=aifa&device_id=12345678-1234-1234-1234-123456789012&api_key=your_api_key_here"

网页追踪(SDID)

curl -X GET "https://api.singular.net/api/attribution/attribution_details?keyspace=sdid&device_id=singular_device_id_value&api_key=your_api_key_here"

API 问题排查

常见 API 问题

响应为空数组

问题描述

API 返回空数组 [] 而非归因数据。


可能原因

  • 无归因数据: 设备从未安装应用或 未追踪到会话
  • 标识符错误: 设备 ID 或 keyspace 不正确
  • 时间问题: 归因数据尚未处理完成 (安装后通常需要 1-5 分钟)

解决步骤

  1. 确认设备 ID 复制正确,无多余空格
  2. 确认 keyspace 与标识符类型匹配(iOS 的 idfa vs idfv)
  3. 应用安装后等待 5-10 分钟,然后重试查询
  4. 使用 Device Assist 应用检查设备归因,确认应用已安装 并被追踪
认证错误

问题描述

API 返回认证错误或 401 未授权响应。


可能原因

  • API 密钥无效: API 密钥不正确或未提供
  • 密钥类型错误: 使用了 SDK Key 而非 Reporting API Key
  • 密钥已过期: API 密钥已被撤销或重新生成

解决步骤

  1. 导航至 Dashboard → Developer Tools → API Keys → Reporting API Key
  2. 复制 Reporting API Key(非 SDK Key)
  3. 确认 API 密钥已正确粘贴到请求中
  4. 如果密钥近期已重新生成,请确保使用新的密钥值

安全警告: 切勿将 API 密钥提交到版本控制系统 或在客户端代码中暴露。请使用环境变量或 安全配置管理方案。

频率限制错误

问题描述

API 返回 429 Too Many Requests 或频率限制错误。


可能原因

  • 请求过于频繁: 短时间内 API 调用次数过多
  • 生产环境使用: API 在生产环境中使用 (非预期用途)

解决步骤

  1. 在代码中实现指数退避和重试逻辑
  2. 控制 API 请求间隔(建议每次调用间隔至少 1 秒)
  3. 尽量缓存归因数据,减少 API 调用次数
  4. 如果合法测试需要更高的频率限制,请联系 Singular 支持团队

测试版限制: Attribution Details API 仅用于测试目的。 请勿在高请求量的生产应用中使用。


最佳实践

在集成测试和活动验证过程中,有效进行归因验证的建议。

测试工作流程

推荐测试流程

  1. 使用全新设备: 使用干净的设备或在测试前 重置广告标识符,以避免缓存的归因数据干扰
  2. 及时验证: 安装后 5-10 分钟内检查归因, 在测试过程中快速获取反馈
  3. 测试多种场景: 验证不同来源的归因(自然量、付费活动、再互动)
  4. 记录结果: 记录归因验证结果, 用于集成验证文档
  5. 尽量实现自动化: 在自动化测试套件中使用 Attribution Details API,实现持续验证

方法选择指南

各方法适用场景

场景 推荐方法
快速手动测试 Device Assist 应用——开发过程中最快速的可视化验证方式
自动化测试 Attribution Details API——CI/CD 流水线中的程序化验证
非技术人员测试 Device Assist 应用——无需编程或 API 知识
批量设备验证 Attribution Details API——通过脚本批量检查多台设备
事件追踪验证 两种方法均可——Device Assist 用于快速检查,API 用于详细事件分析

集成验证清单

归因验证清单

完整归因验证:

  • 安装已归因到正确的网络/来源
  • 活动名称与预期活动一致
  • 归因时间戳合理(在预期时间范围内)
  • 归因方式适当(点击 vs 展示)
  • 自定义参数通过追踪链接正确传递
  • 会话事件被正确追踪
  • 自定义事件以正确名称显示
  • 收入事件正确捕获金额和货币
  • 再互动归因正常运行(如适用)
  • 卸载追踪已配置(如已实现)

其他资源

归因测试、SDK 集成和追踪链接配置的完整文档。

相关文档