测试 Singular SDK 集成
使用测试控制台、导出日志和 SDK 审计报告在正式发布前验证 Singular SDK 及 S2S 集成的综合指南。
将 Singular SDK 集成到应用中或构建服务器到服务器集成后, 在正式发布前验证数据是否传输到 Singular 至关重要。
| 目标受众 | 开发者、QA 工程师 |
| 前提条件 |
|
测试工具概述
可用测试方法
Singular 提供三种互补的集成验证工具,每种工具针对不同的测试阶段 和需求。
| 工具 | 用途 | 时机 | 适合场景 |
|---|---|---|---|
| 测试控制台 | 从测试设备实时流式传输数据,在实现过程中立即验证功能 | 实时 | 活跃开发与调试 |
| 导出日志 | 下载用户级数据,在测试后进行详细分析和验证 | 约 3 小时延迟 | 历史数据分析 |
| SDK 审计 | 自动识别集成问题并提供可操作的解决建议 | 最近 3 天数据 | 全面验证 |
测试策略: 在活跃开发期间使用测试控制台获取即时反馈, 使用导出日志进行详细验证,在正式发布前使用 SDK 审计进行最终全面验证。
测试控制台
实时测试工具,从已注册的测试设备流式传输实时数据,用于立即进行 集成验证和调试。
前提条件
使用测试控制台前
开始测试控制台验证前,请确保满足以下要求:
- 全新测试设备: 使用从未安装过测试应用的设备, 以确保安装归因测试的准确性
- 事件测试计划: 准备好在测试会话期间需要验证的 事件和归因列表
- iOS ATT 注意事项: 确认是否会出现 App Tracking Transparency (ATT) 提示,这将影响测试所用的标识符类型 (IDFV 还是 IDFA)
重要限制: 测试控制台不提供历史报告。事件必须在 设备处于选中状态且 🟢 实时指示器处于活跃状态时发生, 才会显示在控制台中。
第 1 步:添加测试设备
设备注册
在测试控制台中使用适当的设备标识符注册测试设备,以实现实时 事件流式传输。
注册步骤
- 在 Singular 平台中导航至 开发者工具 → 测试控制台
- 点击 添加设备 按钮
-
从下拉菜单中选择
设备类型
:
- Android: 按优先级顺序选择 Google Advertising ID (GAID/aifa)、AppSetID (asid) 或 AndroidID (andi)
- iOS: 有 IDFA 时优先使用(需要 ATT 授权), 否则使用 IDFV
- 输入从设备捕获的 设备 ID
- 提供一个便于识别的 设备名称
- 点击 保存设备 完成注册
Android 设备标识符
推荐方法: 使用 Singular Device Assist 应用 ( Android ) 获取 GAID/aifa。
备用方法: 启用 Singular SDK 日志记录并从 Android LogCat 捕获标识符:
SingularConfig config = new SingularConfig(SdkKey, SdkSecret)
.withLoggingEnabled()
.withLogLevel(1);
LogCat 输出示例:
2023-06-01 15:48:32.224 27442-27560/com.singular.test D/Singular: DeviceInfo [worker] - andi : 8868adc2f7ffffff
2023-06-01 15:48:32.224 27442-27560/com.singular.test D/Singular: DeviceInfo [worker] - asid : 12dc3652-5e46-f2bb-a93a-b3c092ffffff
2023-06-01 15:48:32.224 27442-27560/com.singular.test D/Singular: DeviceInfo [worker] - aifa : 3bbc76b0-cebb-4a9f-b6ec-10ca1affffff
iOS 设备标识符
IDFA 捕获: 在实现了 ATT 框架且已授权跟踪时使用。
方法 1: Singular Device Assist 应用( iOS ) ——在系统提示时授予跟踪权限。
方法 2: 在 Xcode 调试控制台中记录 IDFA:
// Example in Swift
print("IDFA", ASIdentifierManager.shared().advertisingIdentifier.uuidString)
// Example in Objective-C
NSString *IDFA = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog(@"IDFA: %@", IDFA);
IDFV 捕获: 在未实现 ATT 或跟踪未获授权时使用。
// Example in Swift
print("IDFV", UIDevice.current.identifierForVendor!.uuidString)
// Example in Objective-C
NSString *IDFV = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
NSLog(@"IDFV: %@", IDFV);
第 2 步:测试 SDK 初始化
验证会话跟踪
第一步验证通过检验会话事件传输,确认 SDK 已正确初始化并与 Singular 平台正常通信。
关键首项测试: 会话事件代表 SDK 初始化成功,并使 Singular 能够跟踪归因。若无会话事件,归因将无法正常工作。
初始化测试步骤
- 在 事件日志 中,从 设备 下拉菜单中选择设备名称, 并确认 🟢 实时指示器可见
- 从测试平台初始化应用或在设备上打开应用
- 验证 session 事件是否出现在事件日志中,表明 SDK 已成功初始化
第 3 步:测试集成功能
功能专项验证
确认 SDK 初始化后,使用测试控制台的实时监控功能验证集成中 实现的具体功能。
目的
验证自定义用户 ID 是否正确传输到 Singular,用于跨设备 用户跟踪和数据分析。
测试步骤
- 在测试控制台中注册设备
- 在测试设备上打开应用
- 如果不自动发送,触发发送用户 ID 的操作(例如登录)
-
在测试控制台中展开事件详情,验证
custom_user_id字段是否包含预期值
故障排除
如果自定义用户 ID 未出现:
- 验证设置用户 ID 的方法是否在应用流程的适当时机被实际调用
- 添加名为 "setting_custom_user_id" 的 Singular SDK 事件, 以提高在测试控制台中的可见性
- 检查 SDK 日志以确认用户 ID 已成功赋值
目的
验证事件跟踪实现是否以正确的名称和归因将事件发送至 Singular。
测试步骤
对于 SDK 集成中实现的每个事件:
- 在应用中触发事件,验证该事件是否以正确名称出现在测试控制台中
- 点击事件行展开详情,确认 事件数据 部分包含预期归因
故障排除
如果事件未出现:
- 验证设备完全注册到测试控制台后,应用是否已打开
- 在 导出日志 中查找该事件(约 3 小时后可用)
- 确认应用中事件触发代码已正确执行
更多资源
目的
验证收入跟踪实现是否正确报告购买金额、货币及其他收入详情。
测试步骤
对于每种已实现的收入事件类型:
- 在应用中触发收入事件,验证该事件是否出现在测试控制台中
-
展开事件行,确认以下字段存在:
-
pcc——货币代码(如 USD、EUR) -
r——收入金额 - 已实现的其他收入事件归因
-
默认收入事件名称:
如果收入事件未指定自定义名称,
则显示为
__iap__
(默认收入事件名称)。
更多资源
目的
验证深度链接实现是否正确处理 Singular Links 并将用户 引导至应用内的预期目标。
前提条件: 本测试假设组织使用 Singular Links 进行广告活动跟踪。
1. 设置测试目标
- 在 Singular 平台中导航至 设置 → 应用
- 找到应用并点击打开配置
- 添加与 SDK 集成中目标处理代码匹配的深度链接目标
2. 创建测试链接
- 前往 归因 → 管理链接 并选择应用
- 点击 创建链接
- 在 链接类型 下选择"自定义来源",在 来源名称 下选择"Email"
- 提供链接名称
- 展开 链接设置和再营销 部分
- 从 深度链接 下拉菜单中选择测试目标
- 在 其他平台的备用目标 字段中输入网站 URL
- 点击 生成 并从 点击跟踪链接 字段复制链接
3. 测试链接功能
- 确保测试设备上已安装应用
- 将复制的链接通过电子邮件发送到测试设备
- 在设备上打开邮件并点击链接——应用应打开并显示预期的 页面或内容
- 在测试控制台中,验证深度链接值是否出现在会话参数中
Android 测试替代方案
使用 ADB(Android Debug Bridge) 通过命令行验证 Android 深度链接。
前提条件:
- 安装 ADB(包含在 Android SDK 平台工具中)
- 在设备上启用开发者选项和 USB 调试
- 通过 USB 将设备连接到电脑
测试命令:
adb shell am start -W -a android.intent.action.VIEW -d "https://yourdomain.sng.link/xxxxx?_dl=yourapp://deeplink"
故障排除
问题: 深度链接打开了新的应用实例,而非切换到 现有实例。
解决方案: 在 AndroidManifest.xml 的 activity 中添加以下内容:
android:launchMode="singleTask"
有关 launchMode 选项,请参阅 Google 的 <activity> 文档 。
目的
验证卸载跟踪实现是否正确检测并报告应用卸载, 用于流失分析。
测试复杂性: 卸载跟踪验证比其他 SDK 功能更为复杂, 因为 Singular 依赖 Google/iOS 服务来报告卸载。无法 实时查看卸载事件,也无法使用测试控制台进行验证。
前提条件
测试前,请验证:
- FCM/APNS token 已发送至 Singular(参见 Android SDK:跟踪卸载 和 iOS SDK:跟踪卸载 )
- FCM 服务器密钥 (Android)或 iOS 推送证书 已在应用配置页面中填写
测试步骤
- 在 真实设备 上安装应用(非模拟器)
- 打开应用,使安装信息注册到 Singular
- 从设备卸载应用
-
通过以下方法之一验证卸载事件:
- 导出归因日志 并找到卸载事件(可能需要几天时间才会出现)
- 如果已配置 postback 至内部 BI 系统,则接收关于卸载的 postback
- 联系 Singular 支持 或 Customer Success Manager 寻求验证协助
重要提示: 在等待验证卸载事件期间,请勿重置 设备 ID 或重新安装应用——这会使测试结果失效。
测试控制台故障排除
常见问题
常见原因
如果设备已注册但事件日志中无事件显示,请检查以下内容:
- 需要实时监控: 测试控制台仅在设备处于选中状态 且 🟢 实时指示器可见时显示实时事件,不会检索历史事件
- 应用已打开: 确保已在测试设备上打开应用以 生成会话事件
- 事件已触发: 如果在测试特定事件,请确保在 应用中已执行了触发操作
- 设备 ID 准确性: 仔细检查测试控制台中输入的 设备 ID 是否正确
- 设备 ID 类型: 对于无 ATT 提示的 iOS,无法使用 IDFA,必须使用 IDFV
SDK 12.0.0 及更高版本
从 Singular SDK 12.0.0 起,无需再测试
_InstallReferrer
事件。应用发布到商店后,SDK 会自动将 _InstallReferrer 数据放入
首次会话中。只需验证会话是否出现在测试控制台中即可。
SDK 版本 <12.0.0>
对于旧版 Android SDK,仍需在测试控制台中检查
_InstallReferrer
事件,以确保安装归因正确。
验证步骤
仔细核对 IDFA 准确性:
- 使用已授予跟踪权限的 Singular Device Assist 应用(iOS)
- 在 Xcode 调试控制台中记录 IDFA
- 在导出日志(1 小时以上后)中检查"App Tracking Transparency 状态" 字段——值为 0(未确定)意味着 ATT 提示未显示
配置检查
- 设备设置: 在设置 → 隐私 → 跟踪中,确认 "允许 App 请求跟踪"已启用
- ATT 提示: 确认测试期间出现了 ATT 提示—— 若未显示,则 IDFA 未被跟踪
- 重置 IDFA: 若设备曾被使用过,请在设置 → 隐私 → 跟踪中重置广告标识符
- SDK 版本: 验证最新版 Singular SDK 是否已 正确集成
- SDK 初始化: 确认 SDK 已按文档要求在 AppDelegate 或 SceneDelegate 中初始化
- 检查错误: 在 Xcode 控制台中查看 SDK 初始化或跟踪错误
若按照上述步骤操作后问题仍然存在,请参阅 Apple ATT 文档 或联系 Singular 集成工程师。
重置要求
要在同一设备上重新测试 SDK 集成,需清除设备上本地缓存的数据, 并清除 Singular 平台中该设备的归因数据。
Android 重置步骤
- 关闭应用并确认其未在运行(如有需要,使用 强制停止 )
- 进入 设置 菜单
- 导航至 应用 ,长按应用,选择 应用信息
- 选择 存储 ,点击 清除缓存 和 清除数据
- 在测试控制台中,选择设备,点击编辑图标,然后点击 删除设备 以移除归因数据
iOS 重置步骤
- 关闭应用并从设备卸载
- 在测试控制台中,找到设备,点击编辑图标,然后点击 删除设备 以移除归因数据
再互动测试: 测试设备(在测试控制台中启用了眼睛图标的设备) 免除 不活跃期 要求,无需等待不活跃期即可进行再互动归因测试。
iOS TestFlight 限制: 测试控制台不支持 iOS TestFlight 应用。 TestFlight 构建版本在每次启动时会重置 IDFV,导致无法捕获实时事件。
导出日志
在测试后下载用户级数据,进行详细的集成验证,事件发生后约有 1 小时延迟。
导出日志概述
用途与时机
导出日志功能支持手动下载用户级数据,包括转化(安装量)、事件、 会话和归因详情,用于全面验证集成。
最佳实践:
- 日期选择: 下载数据前,仔细检查所选的日期、 应用和站点是否正确
- 数据延迟: 导出日志数据约比实时数据滞后 3 小时——测试后请留出足够时间再进行验证
- 文档: 如需完整的导出日志使用说明,请参阅 导出日志与用户级数据常见问题
使用导出日志
数据获取流程
- 在 Singular 平台中导航至 归因 → 导出日志
- 选择覆盖测试期间的日期范围
- 选择要导出数据的应用和站点
- 选择数据类型(转化、事件、会话等)
- 配置列以包含验证所需的相关字段
- 点击 下载 获取包含用户级数据的 CSV 文件
验证使用场景
需要验证的内容
- 事件跟踪: 确认所有触发的事件均以正确名称和 时间戳出现
- 事件归因: 验证事件归因以预期值正确传输
- 收入跟踪: 验证收入金额、货币代码和购买详情
- 自定义用户 ID: 检查自定义用户 ID 是否正确 与设备关联
- 设备标识符: 验证是否捕获了正确的设备标识符 (IDFA、IDFV、GAID)
- 归因数据: 确认归因来源和广告活动参数正确
SDK 审计报告
自动化集成验证工具,在正式发布前识别实现问题并提供可操作的 解决建议。
SDK 审计概述
用途与范围
SDK 审计报告分析应用在最近 3 天内接收到的数据,自动检测集成 问题并提供故障排除指导。
审计检查项:
- 会话跟踪: 验证应用是否上报用户会话(SDK/S2S 的基础功能,支撑归因运作)
- 事件跟踪: 确认应用是否正确上报应用内事件 和收入
- 收入最佳实践: 验证收入跟踪是否遵循推荐的 实现模式
- 延迟深度链接: 检查 DDL 的启用状态
- 可选功能: 识别可能增强跟踪能力的缺失可选功能
运行 SDK 审计
审计执行步骤
| 1 |
执行审计报告
|
| 2 |
审查并解决问题
问题优先级排定: 并非所有问题都是关键性的或相关的, 取决于已实现的功能。查看 验证名称 以确定是否为您选择不实现的可选功能——若是,可安全忽略该错误信息。 |
理解审计报告
报告结构
SDK 审计报告列出集成问题及其背景信息,用于故障排除和解决。
| 列 | 说明 |
|---|---|
| 应用名称 | 在 Singular 平台中配置的应用名称 |
| 应用 Bundle | 应用 bundle 标识符(如 com.example.appname) |
| 平台 | iOS、Android 或 Amazon |
| 应用版本 | 应用版本号(如有) |
| 验证名称 | 发现问题的集成领域(如"自定义用户 ID"、"收入事件") |
| 类型 |
问题严重程度:
|
| 错误描述 | 详细的问题信息和推荐的解决步骤 |
问题解决指南
优先级别
解决优先级
必须在正式发布前解决 ——这些问题会阻止核心功能正常运行。
常见错误问题
- 未收到会话: SDK 未初始化或未向 Singular 发送数据
- SDK 密钥无效: SDK key 或 secret 配置不正确
- 平台不匹配: 应用上报了错误的平台标识符
解决方法
- 查看错误描述获取具体指导
- 参阅受影响平台的 SDK 集成指南
- 验证 SDK 配置和初始化代码
- 修复后使用测试控制台重新测试
- 运行新的 SDK 审计确认问题已解决
解决优先级
应按最佳实践解决 ——集成可以运行,但建议进行改进。
常见警告问题
- 无自定义用户 ID: 未实现跨设备跟踪的自定义用户 ID
- 收入跟踪问题: 收入事件未遵循最佳实践
- 缺少事件归因: 事件跟踪缺少推荐归因
解决方法
- 评估缺失功能对业务的影响
- 查阅该功能的实现文档
- 若功能符合需求,则予以实现
- 使用测试控制台测试实现效果
解决优先级
审查后决定 ——可能不适用于特定使用场景的可选功能。
常见信息问题
- 延迟深度链接未启用: DDL 可能与营销策略无关
- 未配置卸载跟踪: 卸载跟踪根据需求属于可选项
- 可选 SDK 功能: 对基础功能非关键的附加功能
解决方法
- 查看验证名称以识别可选功能
- 判断该功能是否与业务需求相关
- 若不相关,可安全忽略该问题
- 若相关,请按照 SDK 文档进行实现
更多资源
SDK 集成、测试和故障排除的完整文档。
相关文档
- 测试控制台 API 参考 [BETA] ——以编程方式访问测试控制台
- 如何验证设备归因 ——归因验证流程
- 导出日志与用户级数据常见问题 ——导出日志使用指南
- Singular SDK/S2S 入门 ——初始集成前提条件