乐于分享
好东西不私藏

iOS App 第一次出海:归因与投放入门指南

iOS App 第一次出海:归因与投放入门指南

🌈

📖 「想要更好的阅读体验?」 本文配有完整网页版, 带目录导航、图示和排版优化, 推荐在电脑或手机浏览器中阅读:「https://mingyuyang.com/articles/overseas-ios-first-launch-attribution[1]

你写好了 App 、准备去海外买量, 却发现 iOS 上「钱花了、人来了、但不知道是哪条广告带来的」。这份文档从零讲清楚:iOS 归因为什么这么难、 ATT 和 SKAN 是什么、以及用 Adjust 把 Google / Meta / TikTok 接起来的完整路径。


01 先搞懂: 归因到底在解决什么

在碰 ATT 、 SKAN 这些术语之前, 先花两分钟理解「归因」这件事本身。想明白了, 后面所有配置都有了落脚点。

假设你的 App 上线了, 你在 Google 、 TikTok 、 Meta 三个平台各投了一笔广告。一周后来了 1 万个新用户。问题来了: 这 1 万人里,「谁是被哪条广告带来的? 谁是自己搜到的?」 如果答不上来, 你就没法判断哪个渠道值得加预算、哪个在烧钱。

「📌 归因 (Attribution)」

  • 「是什么」: 把一次「安装/激活」这个结果, 追溯并归功于此前某一次广告「点击」或「展示」的过程。简单说, 就是回答「这个用户是从哪来的」。
  • 「为什么」: 因为你的钱分散在多个渠道, 只有把用户和来源对应起来, 才能算出每个渠道的成本和回报, 进而决定预算怎么分。没有归因, 买量就是盲投。
  • 「例子」: 用户 A 在 TikTok 刷到你的广告 → 点击 → 跳转 App Store → 下载 → 打开。归因系统识别出「这次安装来自 TikTok 的某条广告」, 于是这一个用户就算在 TikTok 头上。

🏢 MMP: 为什么需要 Adjust 这样的第三方

你可能会问:Google 、 Meta 自己不就能告诉我效果吗? 能, 但每个平台都只会说「你的用户都是我带来的」——它们各自统计、口径不一、还可能重复邀功。你需要一个「中立的第三方裁判」, 把所有渠道的数据汇总到一个后台、用统一口径归因, 这就是 「MMP(Mobile Measurement Partner, 移动测量合作伙伴)」。 Adjust 、 AppsFlyer 都属于这一类。

🌈

「🔗 打个比方」: 如果说各个广告平台是「每家店铺自己报的销售额」, 那 MMP 就是那位「拿着统一账本、坐在收银总台的会计」。他不偏向任何一家店, 只按同一套规则记账, 最后告诉你每家店真实贡献了多少。 iOS 上, 这位会计的工作因为苹果的隐私政策变得格外复杂——这正是后面几章要展开的。


02 iOS 生态与 ATT / SKAN 基础认知

iOS 归因难, 难在苹果 2021 年 (iOS 14.5) 推出的隐私新政。理解两个核心框架——ATT 和 SKAdNetwork——是一切的前提。

🕰️ 背景:IDFA 从「默认可用」变成「要用户同意」

过去, 每台 iPhone 有一个广告标识符叫 「IDFA」(相当于设备的广告身份证),App 可以直接读取它, 归因就靠它精确匹配「点击的人」和「安装的人」是不是同一台设备。「iOS 14.5 之后, 苹果规定: 想读 IDFA, 必须先弹窗征得用户同意。」 而大部分用户会点「拒绝」。于是那个曾经好用的「身份证」大面积失效了。

为了应对这个变化, 你需要认识苹果给出的两套机制: 一套是「问用户要不要授权」 (ATT), 另一套是「就算不授权也能做的隐私归因」 (SKAdNetwork) 。

「🔐 ATT(App Tracking Transparency, 应用追踪透明度)」

  • 「是什么」: 苹果规定的一个授权框架。 App 想跨应用追踪用户 (读取 IDFA), 必须弹出一个标准弹窗问用户「是否允许追踪」。
  • 「为什么」: 把选择权交还用户, 是苹果隐私战略的核心。用户同意了, 你才拿得到 IDFA, 才能做传统的精确归因; 用户拒绝了, 你就只能靠其他手段。
  • 「例子」: 就是你在很多 App 首次打开时见到的那个弹窗: 「允许 XX 追踪你在其他公司 App 和网站上的活动吗? 」下面两个选项: 「要求 App 不追踪」/「允许」。

「🛡️ SKAdNetwork(简称 SKAN)」

  • 「是什么」: 苹果官方提供的一套「隐私保护的归因框架」。它不依赖 IDFA 、不识别具体某个人, 而是由苹果系统层面统计「某条广告带来了多少安装」, 再以聚合、延迟、加了噪声的方式回传给广告平台。
  • 「为什么」: 因为用户大量拒绝 ATT 授权后, 总得有一条「不侵犯隐私也能衡量广告效果」的路。 SKAN 就是苹果给的官方答案——牺牲了精细度, 换来了合规。
  • 「例子」: 你在 SKAN 后台看到的不是「用户 A 来自广告 X 」, 而是「广告系列 X 这个周期带来了约 500 次安装, 转化值分布如下」——只有群体数据, 没有个人。

⚖️ 关键:SKAN 和 ATT 是两套独立框架, 别混为一谈

新手最常见的困惑, 是把 ATT 和 SKAN 当成一回事。它们其实是「并行、独立」的两套机制, 监测和报告归因的方式都不同。你需要理解各自的原理和限制, 然后针对不同的分析和优化目标, 使用不同来源的数据。「这些框架之间的关键差异, 可能会导致两边看到的安装量对不上」——这是正常现象, 不是数据错了。

对比维度
安装 (SKAdNetwork)
安装 (ATT)
归因精度
始终为精确归因
在 ATT 政策允许的情况下, 可通过概率模型进行归因
受用户授权影响
用户 ATT 状态不影响归因
按 ATT 政策, 未授权用户的归因会受到限制
归因窗口
固定归因窗口
可自定义, 或与 SKAN 窗口不同, 取决于 Adjust 后台的应用配置
可归因来源
除 SKAN 注册合作伙伴外, 不归因到自然流量/自有渠道/网络红人
可以针对任意来源归因并报告

「一句话记住」: 同一次广告点击, 会同时走 ATT 和 SKAN 两条独立的归因链路, 最终在 Adjust 后台分开呈现——所以两边数字对不上很正常。


03 ATT 最佳实践: 要不要弹窗、怎么接

第一次出海, 你要在 App 里做两件事: 加对框架、弹好那个授权窗。这一章讲清楚具体怎么做。

🧩 第一步: 在 Adjust SDK 中添加对应框架

光装 Adjust SDK 还不够, 要让它能读到设备标识、能弹 ATT 窗, 你得在 Xcode 里额外引入苹果的两个系统框架:

  • 「📦 AdSupport.framework」: 允许读取设备 IDFA 。对于操作系统为 iOS 14 及更早版本的设备, 添加该框架也会允许读取 LAT(限制广告追踪) 信息。
  • 「📦 App Tracking Transparency.framework」: 允许 Adjust SDK 包装用户 ATT 许可对话框, 并读取 iOS 14 或更新系统设备的许可响应 (用户点了同意还是拒绝) 。

🌈

📎 两个框架的接入文档:dev.adjust.com/zh/sdk/ios#add-ios-frameworks

💬 第二步: 启用 ATT 许可弹窗

如果你要记录设备的广告主 ID(即 IDFA), 就「需要先展示弹窗获得用户的授权」。要达到这个目的, 你需要在应用中添加 Apple 的 ATT 框架 (就是上面那个) 。 Adjust SDK 会存储用户的授权状态, 并在每次请求中把该信息发送至 Adjust 服务器。

🌈

「💡 新手常见疑问: 用户都会拒绝, 还弹它干嘛?」

弹窗值得做。因为「只要有一部分用户点了「允许」」, 你就能对这部分用户做精确归因、拿到 IDFA 级别的数据, 归因质量会明显更好。弹窗文案、弹出时机 (比如先给用户一个「前置说明页」解释为什么要授权) 都会影响同意率——这是出海运营里一个专门的优化课题。而没授权的用户, 还有下面的概率模型和 SKAN 兜底, 不至于完全「看不见」。

🌈

「💬 一句话理清 IDFA / ATT / AdSupport 的关系」:IDFA 是那个你想拿到的「设备广告身份证」;ATT 是苹果设的「门禁」, 不刷卡 (不弹窗获同意) 就不让你拿 IDFA;AdSupport 与 ATT 框架是你必须先装好的「读卡器」。三者缺一,IDFA 就到不了你手上。


04 Adjust 应用设置与归因窗口

SDK 装好后, 后台还有几个关键开关要设。设错了, 数据要么归不上、要么和渠道对不齐。

🎚️ 归因设置的三个层级

Adjust 允许你在三个层级做自定义归因设置:「应用层级、合作伙伴层级、跟踪链接层级」。它们有优先级——越具体的越优先:

「应用层级 (优先级最低, 兜底) < 合作伙伴层级 (覆盖应用层级) < 跟踪链接层级 (优先级最高, 最终生效)」

同一项设置, 越具体的层级会覆盖越宽泛的层级。

🎲 关键建议:iOS 应用请启用「概率模型」匹配

「概率模型 (Probabilistic Model) 匹配」

  • 「是什么」: 当拿不到 IDFA 做精确匹配时, 用一组非隐私敏感的信号 (如 IP 、设备型号、系统版本、时间等) 来「大概率推断」某次点击和某次安装是不是同一个用户。
  • 「为什么」:ATT 大量拒绝后, 精确匹配覆盖不到的用户, 靠概率模型补上一块, 能显著提高可归因的比例。所以「推广 iOS 应用时, 建议启用概率模型匹配」
  • 「例子」: 后台「安装设置 → 基于点击的归因」里, 把「启用概率模型」打开, 设一个归因窗口 (如 6 小时, 可选 1–24 小时) 。设备匹配的点击归因窗口另设 (如 7 天, 可选 1–30 天) 。

📏 归因窗口: 尽量和各渠道对齐

「归因窗口 (Attribution Window)」

  • 「是什么」: 一次点击/展示之后, 多长时间内发生的安装, 还算这次广告的功劳。比如「点击后 7 天内安装才归因」。
  • 「为什么」: 不同渠道 (SAN, 自归因渠道) 自己用的窗口长度不一样。如果你 Adjust 这边设的窗口和渠道那边对不上, 两边算出的安装量就会差一截。

下面是几个主流渠道 (SAN) 公开文档里的归因窗口, 供接入时对齐参考:

渠道
点击-设备匹配
点击-概率模型
展示-设备匹配
展示-概率模型
Meta
7d
1d (AEM)
1d
6h
Google
30d
1d (ICM)
1d
6h
TikTok (SAN)
7d
6h
1d
6h
Snapchat
28d
6h
1d
6h
Apple Search Ads
30d
6h
1d
6h

🌈

「⚠️ 官方建议」:Adjust 归因窗口期尽量与各 SAN 渠道的归因窗口「保持一致」, 以降低数据差异。以上窗口期设置来自渠道公开文档,「具体设置请与媒体侧对接并进行确认」(数值可能随渠道政策变化) 。


05 主流渠道接入:Google / Meta / TikTok

出海第一站通常就是这三家。核心动作都是一件事: 把 Adjust 的转化数据「回传」给渠道, 让它们的算法能优化你的广告。

🟦 Google: 数据分享 + ICM

「必要步骤」: 启用 Google Ads 数据分享, 把 Adjust 的 first_open(首次打开) 转化数据导入 Google Ads 。这样 Google 才知道你的广告带来了哪些安装, 进而优化投放。

「Google ICM(Integrated Conversion Measurement, 整合转化衡量)」

  • 「是什么」:Adjust × Google 的一项能力, 用来「弥合 Google App Campaign 中的 SKAN 报告缺口」。它基于端侧 (on-device) 转化衡量技术, 用去标识化的 App 事件数据, 在保护隐私的前提下实时捕获并回传转化。
  • 「为什么」: 在 IDFA 受限后, 可直接观测到的转化数量大幅减少, 你看到的数据不一定代表真实的转化全貌。开启 ICM 后, 可以显著提升对 iOS 14.5 及以上设备转化用户的识别能力, 揭示大量原本不可见的转化行为。

「ICM 相比标准 SKAN 的四个优势:」

  • 「全面的数据报告」: 补足标准 iOS 衡量方案留下的空白, 覆盖点击、互动展示 (Engaged Views) 以及再安装 (Reinstalls) 等关键行为。
  • 「以隐私为核心」: 基于端侧转化衡量技术, 通过去标识化的 App 事件数据提升可观测转化量, 全程不牺牲用户隐私。
  • 「无数据延迟」: 广告主可实时获取效果数据、即时优化决策, 无需等待 SKAN / AdAttributionKit 常见的延迟回传。
  • 「事件级洞察」: 不再只局限于聚合数据摘要, 提供更细粒度的事件级数据, 支持更深入的分析与优化。

「获取 ICM 数据的必须步骤:」

  1. 升级 Adjust SDK 至 V5.4.1 或以上版本 (下载:github.com/adjust/ios_sdk/releases)
  2. 接入 Adjust ODM 插件 (文档:dev.adjust.com/zh/sdk/ios/plugins/google-odm)
  3. 接入 Firebase SDK V11.14.0 或以上版本 (或接入独立的 Google ODM SDK)
  4. 在 Adjust 后台的 Google Ads ACI 中启用「设备匹配」和「概率匹配」 (链接层级设置, 会覆盖应用层级)

🟦 Meta(Facebook): 数据分享 + MAE / AEM

启用 Facebook 数据分享。 Adjust 的 Meta 集成「自动支持 MAI 推广活动」(Mobile App Install, 以安装为目标) 。如果你想开展 「MAE 推广活动」(Mobile App Engagement, 以应用内互动/事件为目标), 则需要完成下列两个额外步骤:

  1. 配置应用 Scheme 并在应用中启用通用链接 (Universal Links) 。 iOS 9 及更高版本所需的 Apple 特定深度链接协议, 需先在 Apple Developer 账户和 Xcode 中配置好。
  2. 打开「为 MAE 启用 AEM 」开关。 AEM = Aggregated Event Measurement,Meta 版的聚合事件衡量。

🌈

「🧩 Meta AEM 设置示例」(设置深度链接弹窗里): 填入 「App ID prefix(即 team id)」 → 输入 「App scheme」。这一步就是为了支持 Meta MAE 的广告类型。示例格式: 应用 ID 前缀如 123ABC45DE, 应用 scheme 如 yourapp://。

⬛ TikTok: 数据分享 + SAN 设置

启用 TikTok 数据分享, 并设置 「TikTok For Business(SAN)」。在数据分享配置里, 可以选择「仅归因至 TikTok For Business 的数据」, 并按需勾选要分享的数据类型 (如会话、应用内收入等), 再把你的 App 事件映射到 TikTok 的合作伙伴事件 (例如把「 Buy 1-month subscription 」映射成 Subscribe) 。

🌈

「🔁 三家渠道的共同套路」: 抛开各家名词差异, 接入逻辑是同一个:「① 在 Adjust 开启对该渠道的「数据分享」→ ② 把你关心的 App 事件映射成渠道认识的事件 → ③ 视需要做深度链接 / 端侧衡量的额外配置。」 先理解这条主线, 再看每家的细节就不会晕。


06 SKAdNetwork 配置方案

前面 ATT 那条线是「尽量拿到用户授权」。这条 SKAN 线是「就算没授权, 也能通过苹果官方框架衡量效果」。两条都要配。

📦 第一步: 在 Adjust SDK 中添加 StoreKit.framework

若要允许 Adjust 处理 iOS 14 或更新系统设备上与 SKAdNetwork 的通讯, 那么「必须添加 StoreKit.framework」。这是 SKAN 能跑起来的前提。

🌈

📎 文档:dev.adjust.com/zh/sdk/ios#add-ios-frameworks

🔗 第二步: 关联投放账户与 SKAdNetwork 数据服务

在 Adjust 左侧菜单进入 「DataWorks」, 点击「关联」。然后点右上角「+ 新关联」添加。在弹窗里选择合作伙伴 (如 Adwords / Google Ads), 服务勾选 「SKAN」(下拉里还有 Ad Spend 、 Audience Builder 、 Bids/Budgets 、 CV Mapping Sharing 、 Offline Conversions 等可选), 再按提示用对应渠道的登录方式完成授权关联。

🎯 第三步: 配置 SKAN Conversion Hub(转化值管理)

「转化值 (Conversion Value) 与 Conversion Hub」

  • 「是什么」:SKAN 里, 苹果只允许你回传一个很小的「转化值」 (有粗粒度和细粒度之分) 来间接表达「这个用户做了什么」。「Conversion Hub 是 Adjust 提供的、创建转化值映射的一站式平台」, 帮你快速设置自定义转化值。
  • 「为什么」:SKAN 不回传具体事件, 只回传这个编码后的值。你得提前设计好「值 = 什么行为」的映射表 (比如注册=1 、付费=2……), 渠道才能据此优化。这就是转化值管理要做的事。

「通过 Adjust 管理转化值, 需要:」

  1. 「适配 SDK」:Adjust iOS SDK 在 4.33.0 以上。
  2. 「完成 iOS 应用 ID 验证」: 要求管理员或编辑员权限。在 DataWorks 关联页面选择「 iOS 应用验证」作为服务并关联至 App Store Connect; 或在 AppView → 选择应用 → 平台 → 找到应用 ID 字段 → 选「请求验证」→ 弹窗确认。 Adjust 确认无误后通过验证, 后台状态会变为「已验证」。
  3. 「在 Conversion Hub 中进行转化值管理配置」: 入口一: 左侧 AppView → 所有应用 / SKAdNetwork Conversion Hub 进入。入口二: 所有应用列表里选中应用后点「映射转化值」。选好要设置的应用, 点击「映射转化值」即可开始配置。

07 数据与效果: 该看哪些指标

配置都做完、量也跑起来了, 你要在后台看什么?ATT 和 SKAN 两条线各有一套指标, 分开看。

🔓 ATT 授权相关指标

在 Adjust 里搜 ATT 就能找到这组 「AppTrackingTransparency(ATT)」 指标, 状态可筛选 Authorized(授权)/ Denied(拒绝)/ Not Determined(待定)/ Restricted(受限):

指标
含义
ATT–授权用户
ATT 状态为「已授权」的用户数量
ATT–待定用户
ATT 状态为「待定」的用户数量 (还没做选择)
ATT–拒绝用户
ATT 状态为「拒绝」的用户数量
ATT–受限用户
ATT 状态为「受限」的用户数量 (如家长控制等情形)
ATT 许可率
= ATT 授权用户数量 ÷(ATT 授权用户 + ATT 拒绝用户) 。衡量你的授权弹窗做得好不好的核心指标

这些指标可以按渠道源 (Organic 、 Apple 、 Google Ads 等) 拆分查看, 帮你判断哪个渠道来的用户更愿意授权。

🛡️ SKAN 相关指标

SKAN 侧的指标分成四组, 理解它们你才能读懂 SKAN 报表:

指标组
包含什么
SKAN 转化
安装、重装;SKAN 转化总计; 有效转化 (转化值大于 0); 转化值 null 及 null 率
转化值
转化比特值 / 转化值; 粗颗粒度转化值;SKAN 收入;ARPU
ROAS
ROAS(广告支出回报率)= 总收入 (平均/最低/最高)× 安装量 ÷(广告支出 (SKAN)× 有效转化);ROI = ROAS − 1
支出和成本
同期群投资回报率; 广告支出 (SKAN)—渠道 API 拉取;eCPI(有效单次安装成本)

🌈

「🧮 举个实际报表的样子」: 在 SKAN4 Value Mapping 报表里, 你会看到按「渠道源 × 推广活动」拆分的行, 每行给出转化总计 (SKAN) 、广告支出 (SKAN) 、 eCPI 、 ROAS 、转化值 0 、 CV 大于 0 等列。例如某表汇总行: 转化总计 88,872 、广告支出 242,259.00 、 eCPI 2.8317 、 ROAS 9.59%——这就是你判断「哪个活动值得追加预算」的依据。

🌈

「🔗 怎么理解 ROAS 和 ROI」:ROAS = 赚回来的 ÷ 花出去的。比如 ROAS 是 120%, 意味着每花 1 块钱, 带回来 1.2 块的收入。 ROI = ROAS − 1, 也就是净赚的部分:ROAS 120% 对应 ROI 20%, 是真正的净回报。 ROAS 低于 100%(ROI 为负) 就是在亏钱买量。


08 首次出海接入清单

把前面所有环节收成一张可执行的清单。第一次出海, 照着这个顺序走基本不会漏。

  1. 「集成 Adjust SDK, 并加齐三个系统框架」:AdSupport(读 IDFA)+ App Tracking Transparency(弹 ATT 窗)+ StoreKit(跑 SKAN) 。
  2. 「接入并优化 ATT 授权弹窗」: 设计好文案和弹出时机, 尽量提高 ATT 许可率——授权用户越多, 精确归因覆盖越广。
  3. 「后台开启概率模型匹配」: 推广 iOS 应用建议开, 补上精确匹配覆盖不到的那部分用户。
  4. 「对齐归因窗口」:Adjust 侧窗口尽量与各 SAN 渠道公开窗口一致, 并与媒体侧确认。
  5. 「逐个接入渠道」:Google(数据分享+ICM) 、 Meta(数据分享+MAE/AEM) 、 TikTok(数据分享+SAN), 核心都是开数据分享 + 映射事件。
  6. 「配置 SKAN 链路」:DataWorks 关联投放账户与 SKAN 服务 → 完成应用 ID 验证 → 在 Conversion Hub 设计并配置转化值映射。
  7. 「搭好看数据的习惯」:ATT 侧盯许可率与各状态用户数;SKAN 侧盯转化、转化值、 ROAS/eCPI, 按渠道和活动拆分看, 指导预算分配。

🚀 一句话总结

iOS 出海归因, 本质是在苹果的隐私框架下, 同时经营好「两条数据链路」:

  • 「ATT 线」: 尽量拿到用户授权 + 概率模型兜底, 追求「看得更细」。
  • 「SKAN 线」: 用苹果官方框架 + 转化值映射, 保证「合规也能看」。

两条线各配一套、各看一套指标, 再把 Google / Meta / TikTok 按同一套「数据分享 + 事件映射」的套路接进来, 你的第一次出海就有了可信的效果衡量基础。


引用链接

[1]https://mingyuyang.com/articles/overseas-ios-first-launch-attribution