# 联调指南

> 来源：https://help.gravity-engine.com/docs/attribution/integration-testing
> 说明归因联调前需要准备的设备标识与测试信息，以及点击、激活和归因结果的验证流程。



在开始联调前，请确保已完成 SDK 接入，并已正常采集到以下设备信息：

* Android：OAID / AndroidID
* iOS：IDFA

联调时，请创建**独立的联调专属**推广活动，使用对应的监测链接进行测试，**请勿直接使用线上正在推广的推广活动**的监测链接，以便快速定位来自具体媒体的点击下发数据。

## 一、核心逻辑 [#一核心逻辑]

归因是指将一次**用户转化**（如激活、注册、付费）归功于某一次**广告点击**的过程。其核心逻辑如下：

1. **数据基础**
   * **点击数据**：媒体（如快手、腾讯）在用户点击广告时，向下发的点击监测链接中包含设备信息。
   * **激活数据**：集成在您应用中的 SDK，在用户启动应用时**采集到的设备信息**或**启动参数**。
2. **匹配规则**
   * 系统将**激活数据**与**媒体下发的点击数据**进行匹配。
   * 匹配时，会按照各平台预设的**标识符优先级**（见下文）进行。
   * 匹配遵循**末次点击归因模型**，即转化会被归因于**最后一次有效的广告点击**。

## 二、各平台归因匹配优先级 [#二各平台归因匹配优先级]

系统按照以下优先级匹配标识符，匹配成功则归因，全部无法匹配则判定为自然量。

| 平台               | 归因优先级（从高到低）         |
| ---------------- | ------------------- |
| Android 应用 / 快应用 | OAID > IMEI > IP+UA |
| iOS 应用           | IDFA / CAID > IP+UA |
| 小游戏 / 小程序 / 快游戏  | 启动参数 > OpenID       |
| Web 网页           | 网页 URL 参数           |

**自然量判定**：当一次激活事件中，SDK 采集到的信息无法与任何一次广告点击数据匹配成功时，该次激活被判定为“自然量”。

## 三、常见问题排查（FAQ） [#三常见问题排查faq]

**Q1：联调时如何获取设备 ID**

A1：参考文档：[获取设备ID](/docs/attribution/device-id)

**Q2：Android 应用未采集到 OAID 或 AndroidID，首先怎么办？**

A2：请优先确认并升级 SDK 至最新版本。旧版本 SDK 可能存在兼容性问题，新版本对 OAID 等标识符的获取支持更好。

**Q3：iOS 应用未采集到 IDFA 或未弹出 ATT 弹窗？**

A3：请分步检查：

* **ATT 弹窗未弹出**：新版本 SDK 会自动调用 ATT。如果您使用的是旧版本，请检查代码是否按文档正确调用了授权方法。建议升级至最新版 SDK。
* **用户未授权**：如果用户在弹窗中选择了“要求 App 不跟踪”（或在设置中关闭了跟踪开关），则无法获取 IDFA，归因将降级至精度较低的 IP+UA 方式。

**Q4：联调时媒体有下发点击记录但未成功归因（常见于快手、腾讯等媒体），可能是什么原因？**

A4：这通常是**媒体侧的点击数据下发问题**，例如未下发设备 ID 或下发了错误数据。请联系引力技术支持，提供联调信息，由技术人员调整数据后重新进行联调。

**Q5：如果激活有 OAID，但点击只有 IP+UA，能归因成功吗？**

A5：能，但这属于降级匹配。

* **流程**：系统首先用 OAID 匹配，失败后，会自动降级并使用 IP+UA 进行新一轮匹配。若 IP+UA 信息一致，则归因成功。
* **结论**：只要在任一优先级上匹配成功，都算有效归因。但设备 ID 匹配的准确性远高于 IP+UA 匹配。

**Q6：“末次点击匹配”到底是什么意思？**

A6：归因遵循“末次点击匹配”原则，即激活将被归因于**最后一次提供了可匹配标识符的有效点击**。“有效”的关键在于点击数据中是否包含能与激活信息匹配的标识符，而非单纯的点击时间先后。

**例如**：用户先后点击了媒体 A 和媒体 B 的广告。媒体 A 下发的点击数据中包含了正确的设备 ID（如 OAID），而媒体 B 下发的数据中仅包含 IP 与 UA。即使媒体 B 的点击时间更晚，系统也会因成功匹配到媒体 A 提供的设备 ID，而将激活归因给媒体 A。

**归因成功的两个关键点是：1. 媒体下发正确的点击数据；2. 您应用的 SDK 成功采集到匹配的设备信息。** 保持 SDK 为最新版本是确保采集成功的最有效方式。
