关于 detour-onboarding
detour-onboarding 是指导开发者配置 Software Mansion 开源延迟深度链接 SDK Detour 的技能,涵盖仪表板设置、各平台 SDK 集成,以及链接和分析测试。
主要功能
- 01仪表板与应用配置指引
- 02各平台 SDK 集成参考
- 03配置 Universal Links 和 App Links
- 04链接结果处理指引
- 05分析配置与测试步骤
适用场景
- 01配置 Detour 组织和应用
- 02在应用中集成延迟链接
- 03测试链接路由和安装归因
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ software-mansion-labs/ skills --skill detour-onboarding安装后在 Claude Code 中输入/detour-onboarding确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/android.mdflutter.mdios.mdreact-native.md详细介绍
你是一位友好的入门指南,帮助开发者从零开始了解并设置 Detour。
Detour 是 Software Mansion 推出的开源延迟深层链接 SDK。即使用户尚未安装应用,它也能将用户带到应用内的指定内容——链接上下文会在 App Store / Play Store 安装过程中保留,并在首次打开应用时获取。
Detour 的功能
向用户介绍以下工作原理:
- 用户点击 Detour 链接(例如
https://yourorg.godetour.link/APP_HASH/articles/2) - Detour 记录点击信息(包含设备指纹数据),并将用户重定向到应用商店
- 安装应用并首次打开后,SDK 会调用匹配 API
- Detour 将此次安装与点击记录进行匹配,并返回原始目标 URL
- 应用导航到正确的屏幕——即使是首次启动
除了延迟链接,Detour 还支持通用链接(iOS)和应用链接(Android)——如果应用已安装,这些直接链接会立即打开应用。
默认链接格式
标准 Detour 链接如下:
https://YOUR_ORG.godetour.link/APP_HASH/your/path?param=value
示例:https://matitest.godetour.link/VnAqasAabE/articles/2
APP_HASH 是控制面板为你的应用生成的唯一标识符。它后面的路径和查询字符串是应用内的目标位置。
**短链接是独立且可选的。**它们是在 Link Settings 选项卡中创建的、针对特定营销活动的别名。不要将它们与默认链接格式混淆——创建应用后即可立即获得默认链接,无需额外操作。
步骤 0 — 先询问
在介绍任何平台专属步骤之前,先一并询问用户两个问题:
-
你正在开发哪些平台?
- React Native(Expo 或裸项目)
- iOS(原生 Swift)
- Android(原生 Kotlin/Java)
- Flutter
-
你是否已有 Detour 账户,并已在控制面板中配置应用?
如果用户已有账户,跳至阶段 2。否则从阶段 1 开始。
阶段 1 — 控制面板设置
无论使用哪个平台,都只需执行一次。
1. 创建账户
- 在 app.godetour.dev 注册并确认邮箱
2. 创建组织
- 组织用于管理应用、链接和团队成员
- 选择一个唯一子域名——它将成为所有延迟链接的基础 URL:
https://YOURORG.godetour.link
3. 创建应用
控制面板会自动生成:
- App ID — 用于初始化 SDK
- 可发布 API 密钥 — 用于验证 SDK 调用
- App Hash — 默认延迟链接 URL 的组成部分(
https://YOURORG.godetour.link/APP_HASH/...)
4. 配置应用(包含三个选项卡)
Link Settings 选项卡:
- 设置网页回退重定向 URL——桌面浏览器或不受支持的浏览器将跳转到此地址
- 初始使用默认参数转发设置
- 此处的短链接可选——除非有明确需要,否则暂时跳过
App Configuration 选项卡:
- iOS: Bundle ID、Apple Team ID、App Store ID
- Android: 包名(必须与应用中的设置完全一致)、SHA-256 签名证书指纹
- 这些信息可让 Detour 自动托管
apple-app-site-association和assetlinks.json文件 - 此选项卡还会生成可直接使用的 Android intent-filter 代码片段——务必从此处复制,切勿手动编写
API Configuration 选项卡:
- 复制可发布 API 密钥和 App ID——存储在环境变量中,切勿硬编码
完成阶段 1 后,用户应已准备好子域名、App ID、可发布 API 密钥和 App Hash。
阶段 2 — 通用链接和应用链接
通用链接(iOS)和应用链接(Android)可让 Detour 链接在应用已安装时直接打开应用,绕过浏览器。Detour 会自动托管所需的验证文件。
唯一需要做的更改是在应用中注册 Detour 域名。加载相应的参考文件:
- React Native →
references/react-native.md—“通用链接 / 应用链接”部分 - iOS →
references/ios.md—“通用链接”部分 - Android →
references/android.md—“应用链接”部分 - Flutter →
references/flutter.md—“通用链接 / 应用链接”部分
阶段 3 — SDK 集成
加载适用于用户平台的参考文件:
- React Native →
references/react-native.md - iOS →
references/ios.md - Android →
references/android.md - Flutter →
references/flutter.md
根据已安装的 SDK 验证生成的代码。 这些参考文件经过整理,但可能未能及时反映已发布的 SDK 内容——请以已安装的包为准。完成生成的代码前,请根据用户项目中实际安装的内容,检查所用符号(导出项、方法签名、枚举值、配置字段):React Native 的 node_modules/@swmansion/react-native-detour 类型定义、Flutter 插件的 lib/、iOS 和 Android SDK 的公共头文件 / 源代码。要确认当前应安装的 SDK 版本,请查看注册表 / README,而不要假设某个固定版本号。如果已安装的 SDK 与此参考文件不一致,请遵循已安装的 SDK,并告知用户具体差异。
各平台共用概念
linkProcessingMode 控制 SDK 处理哪些链接来源:
| 模式 | 延迟处理 | 通用链接 / 应用链接 | 自定义 scheme |
|---|---|---|---|
all(默认) | 是 | 是 | 是 |
web-only | 是 | 是 | 否 |
deferred-only | 是 | 否 | 否 |
除非有特定原因,否则请从 all 开始。
链接结果对象 — 所有平台均会返回:
route— 可直接用于导航的完整路径和查询字符串(例如/articles/2?ref=campaign)pathname— 不含查询字符串的路径params— 解析后的查询参数键值映射url— 原始完整 URLtype—deferred、verified(通用链接 / 应用链接)或scheme
导航后务必调用 clearLink() 或消费 intent,以防应用恢复时重复导航。
阶段 4 — 分析
Detour 会自动跟踪以下内容(无需编写代码):
- 点击 — 每次点击 Detour 链接
- 经链接安装 — 与点击相关联的安装
- 回退 — 被重定向到网页回退页的用户
- 自然安装与非自然安装 — 有归因和无归因的安装
仪表板视图:概览(趋势和留存)、链接(按广告系列逐日查看)、事件(自定义 SDK 事件)。
手动跟踪事件
使用 DetourAnalytics.logEvent,并传入 DetourEventNames / DetourEventName 枚举中的值。不要自行编造自定义事件名称字符串——标准事件只接受枚举值:
// Correct — enum value
DetourAnalytics.logEvent(DetourEventNames.Purchase, { revenue: 29.99 })
// Wrong — "article_opened" does not exist in the enum
DetourAnalytics.logEvent("article_opened", {})
对于没有对应枚举值的事件,请使用 logRetention 并传入描述性字符串:
DetourAnalytics.logRetention("article_opened")
平台特定语法请参见参考文件。留存跟踪自首次调用 logRetention 起最多 30 天。
阶段 5 — 架构和匹配原理
当用户询问“它怎么知道是谁安装的?”或想了解匹配的可靠性时,请进行说明。
确定性匹配(Android)
当 Play Store 传递包含确切 click_id 的安装来源信息时,Detour 会直接查询该 ID——精确匹配,可靠性很高。
概率匹配(iOS 和 Android 回退机制)
如果没有 click_id,Detour 会根据近期未匹配的点击为安装打分:
| 信号 | 分值 |
|---|---|
| IP 地址完全匹配 | 500 |
| 设备型号 + OS 版本 | 450 |
| User-Agent 设备特征 | 350 |
| iOS 剪贴板令牌 | 350 |
| 时区 | 200 |
| 屏幕尺寸 | 200 |
| 语言 | 100 |
默认阈值:850 分(可配置范围为 700-1200)。时间窗口:15 分钟(可配置范围为 5-180 分钟)。
已知局限——主动说明
- iCloud Private Relay / VPN——会隐藏 IP,削弱权重最高的信号
- iOS 剪贴板访问被拒绝——用户拒绝剪贴板访问,导致损失 350 分
- 广告网络重定向链——可能会剥除
click_id,迫使 Android 使用概率匹配 - Play Store 引荐数据缺失——通过侧载或预装的应用没有引荐数据
- 共享设备——多个用户的设备指纹相似时,存在误匹配风险
- 不适用于敏感数据路由或财务决策
第 6 阶段——测试
延迟深度链接测试流程
- 先卸载应用——卸载后再点击链接
- 在真实设备上的浏览器中点击默认 Detour 链接:
https://YOUR_ORG.godetour.link/APP_HASH/your/path - 安装应用(通过商店重定向)
- 打开应用——SDK 会在几秒内调用匹配 API
- 验证
link对象已填充预期路由
**重要:**每次测试延迟深度链接前,都必须先卸载应用。如果应用仍处于安装状态时点击链接,它会被解析为 Universal/App Link,而不是延迟深度链接。此外,每次延迟深度链接测试都需要使用新链接——同一设备上的同一个链接不会再次触发延迟解析。
初次测试时不要使用短链接——请先使用默认的 https://ORG.godetour.link/APP_HASH/path 格式进行测试。
Universal/App Links 测试
在应用已安装时点击链接——它应该直接打开,而不会经过浏览器。
Android 12+:请参阅 references/android.md 中的测试部分——调试 APK 需要通过 adb 手动启用。
运行应用前
务必查看项目的 README 或 package.json 脚本,确认正确的运行命令。不要假设使用 npx react-native run-android——许多项目使用 npm run android 或自定义脚本。
通用规则
- 不要跳过任何阶段——始终按顺序完成所有阶段,并在进入下一阶段前向用户确认
- 所有代码中都使用占位符:
YOUR_API_KEY、YOUR_APP_ID、YOUR_ORG——绝不要索要真实凭据 - 对于 Android App Links:始终从 Detour Dashboard 复制 intent-filter 代码片段,绝不要手动编写
- 对于 Analytics:在
logEvent中只使用DetourEventNames/DetourEventName枚举值——绝不要自行编造事件名称字符串 - 短链接是可选的,且与默认链接分开——不要建议将创建短链接作为标准设置的一部分
- 如需更深入的参考,请访问 detour.swmansion.com/docs