Server-to-Server - 基础知识
实施 Singular 的 REST API 以实现完整的服务器端追踪,作为 SDK 集成的替代方案,从而完全掌控数据收集、传输和归因工作流。
选择你的集成方式:SDK 还是 S2S? 如果你能够嵌入客户端 SDK,请先查看 SDK 集成文档 。当你需要服务器端事件投递、所在平台没有 SDK,或者希望完全掌控数据收集时,请使用 Server-to-Server。本套文档涵盖 S2S 路径,并作为 Mobile、Web 和 PC/主机 S2S 指南的共享参考。
概述
Server-to-Server 使用场景
Server-to-server(S2S)集成提供 REST API 端点,可在你的后端基础设施上构建完整的归因和分析方案,无需在客户端应用中嵌入 Singular SDK。
集成方式:
- 纯 S2S: 100% 服务器端实施,同时处理会话和事件追踪
- 混合模式: Singular SDK 管理会话,同时由服务器端处理事件追踪
纯 S2S 集成
纯 S2S 是完全的服务器端实施:由你的后端收集所需数据、维护设备图谱,并将会话和事件同时投递给 Singular。分步流程请参见下方的实施阶段。
混合集成模式
混合集成将用于会话管理的 Singular SDK 与用于后端事件追踪的服务器端 EVENT API 相结合,在易于实施与服务器端灵活性之间取得平衡。
混合模式的优势:
- SDK 自动处理复杂的会话逻辑、深度链接和设备数据收集
- 服务器端发送在后端系统中处理的交易事件
- 降低客户端实施的复杂度
- 无需 SESSION 端点——由 SDK 管理会话生命周期
设备数据获取方式:
- 客户端管理流程: 在客户端捕获所需的数据点,并通过内部 API 转发到服务器,以配合 Singular EVENT 端点使用
- Internal BI 回传: 配置 Singular Internal BI 回传,以在安装、再互动或事件发生后接收包含设备标识符的实时 JSON 负载( 设置指南 )
设备图谱维护: 两种方式都需要服务器端逻辑来维护设备图谱。当 SDK 检测到设备标识符发生变化时,请相应更新服务器,以确保追踪准确。
相关资源:
- 获取设备数据指南 (iOS/Android 代码示例)
关键集成原则
无论你使用哪个平台或采用哪种方式,这些原则都适用于每一次 S2S 集成:
| 原则 | 说明 |
|---|---|
| 灵活性 | 完全掌控数据收集和传输时机 |
| 功能对等 | 在提供恰当数据的前提下,支持所有 SDK 功能 |
| 集成路径 | 客户端 → 你的服务器 → Singular API |
| 实时处理 | 一次处理一个请求——不支持批量处理 |
| 顺序流程 | 事件必须按时间顺序处理 |
| 不去重 | Singular 不做去重——请在服务器端实现去重 |
| 数据永久性 | 设备级数据一经摄入即无法删除——发送前请先验证 |
实施阶段
完整的 S2S 集成会经历四个阶段,按顺序进行,每个阶段都建立在前一阶段的基础之上。
阶段 1:数据收集
必需的数据点
建立数据收集机制,捕获每一个必需参数,使 Singular 拥有准确归因和报告所需的一切。
所有必需参数均为强制项: 遗漏必需参数会导致数据差异和归因错误。没有任何参数是可选的。
异步函数处理: 在收集客户端数据以传输至服务器时,请等待异步函数完成并处理边缘情况。这是导致数据缺失和归因不完整的常见问题。
实施资源:
- SESSION 端点必需参数
- EVENT 端点必需参数
- 获取设备数据指南 (iOS/Android 代码示例)
- SKAdNetwork 4 实施指南 (iOS 特有数据点)
阶段 2:实时流式传输
关键时序要求
实时数据流式传输可维持归因准确性,并支持诸如 SKAdNetwork 转化值更新等对时间敏感的功能。
对归因的影响:
- 延迟的会话: 严重影响归因准确性——系统需要精确的时间数据来关联广告系列
- SKAdNetwork 计时器: 转化值的设备端计时窗口非常严格,使实时流式传输至关重要。延迟会导致错过转化值更新和广告系列数据不完整
最佳实践:
- 为应用会话启动实现服务器端事件监听器
- 立即转发 会话数据 ,并包含所有必需参数
- 为应用内事件实现服务器端事件监听器
- 立即转发 事件数据 ,并包含所有必需参数
- 采用 webhook 架构以实现可靠的数据传输
- 为失败的请求实现重试机制
- 监控数据流以进行质量保障
阶段 3:响应处理
双向通信
响应处理将你的服务器端 API 调用连回客户端应用,这正是实现延迟深度链接和转化值更新的关键所在。
关键响应类型:
- 延迟深度链接: API 响应包含待处理的深度链接数据,需立即中继给应用,以进行用户路由和个性化
- 转化值: iOS SKAdNetwork 转化值必须及时转发给应用,以实现准确的广告系列衡量
最佳实践:
- 在服务器基础设施上实现响应处理
- 解析并验证 Singular API 响应
- 将相关响应数据转发给客户端应用(对 iOS SKAdNetwork 至关重要)
- 实现客户端响应处理
- 以恰当的 HTTP 状态码优雅地处理错误
- 记录失败的响应以用于重试机制
阶段 4:测试与验证
数据流验证
在部署到生产环境之前,请端到端验证完整的数据管道,并确认归因准确无误。
会话归因流程:
- 首次会话(新安装): Singular 识别新安装并触发安装归因流程
- 符合再互动条件: Singular 触发再互动归因流程( 再互动常见问题 )
- 标准会话: Singular 记录会话,用于用户活跃度和留存指标
关键时序要求:
- 会话先于事件: 必须先接收到单个 SESSION,然后才能接收任何事件。SDK 在应用打开时触发会话,随后发送应用内事件。应用进入后台 1 分钟以上后,会话会超时。应用重回前台时会发送新会话。请使用应用生命周期事件和计时器进行会话管理
- 实时事件: 应用内发生的事件必须在其对应会话之后实时发送
验证清单:
- 测试会话数据流——验证首次及后续会话具有正确的数据点和值
- 确认仅在会话上报给 Singular 之后才接收事件(会话之前的事件会造成自然量归因)
- 确认会话响应已被处理并传递给客户端应用(对延迟深度链接至关重要)
集成完成:
- ✓ 数据收集与存储已验证
- ✓ 向 Singular 的实时流式传输已验证
- ✓ 响应处理与日志记录已验证
- ✓ 所有测试数据流已验证
测试指南: S2S 集成测试指南
附加功能
实施跨设备追踪、收入追踪、卸载监控以及数据隐私合规,以获得全面的分析能力。
跨设备追踪
自定义用户 ID 的实施
利用
custom_user_id
参数将用户与设备级会话关联起来,以进行跨设备报告和用户级分析。
隐私合规:
遵守数据隐私政策,避免在
custom_user_id
中使用个人身份信息(PII)。请使用经过哈希处理的用户名、电子邮件,或随机生成的字符串作为唯一用户标识符。
在保护用户隐私的同时,支持全面的跨设备报告、用户级数据导出以及 Internal BI 回传。
更多信息: 自定义用户 ID 参数
收入追踪
应用内购买报告
追踪应用内购买产生的收入,用于 ROI 分析、广告系列效果衡量以及导出/回传数据的丰富。
-
is_revenue_event:收入事件设为 true;否则设为 false。 -
purchase_receipt:Android/iOS 应用内购买对象——强烈建议提供,以获取交易详情并丰富报告 -
receipt_signature(Android):强烈建议提供,用于交易验证和防欺诈 -
amt:收入金额,Double 类型(例如 "amt=1.99") -
cur:ISO 4217 货币代码(例如 "cur=USD")
实施指南: 订阅状态管理
数据隐私合规
用户同意处理
将终端用户的数据共享同意情况告知 Singular,以符合 GDPR、CCPA 及其他隐私法规。
使用
data_sharing_options
参数来传达用户的选择:
-
{"limit_data_sharing":false}:用户已同意(选择加入)共享信息 -
{"limit_data_sharing":true}:用户拒绝共享信息
Singular 在
用户隐私回传
中使用
limit_data_sharing
,并将信息传递给需要合规的合作伙伴。
可选但推荐: 该参数为可选,但某些归因信息只有在用户明确选择加入时才会由合作伙伴共享。
更多信息: 用户隐私与限制数据共享
端点参考
每个端点参考都在其内文档中完整记录了必需和可选参数。完整的参数表请参见以下内容:
指南
本文是 S2S 套件的共享参考。请使用与你的平台匹配的指南,并参考端点参考获取完整的参数详情。
平台指南
功能指南