如何测试 Singular SDK 集成

测试 Singular SDK 集成

使用测试控制台、导出日志和 SDK 审计报告在正式发布前验证 Singular SDK 及 S2S 集成的综合指南。

将 Singular SDK 集成到应用中或构建服务器到服务器集成后, 在正式发布前验证数据是否传输到 Singular 至关重要。

目标受众 开发者、QA 工程师
前提条件
  • 已在应用中实现 Singular SDK 或 S2S 集成
  • 用于测试控制台验证的移动设备
  • 已配置 SDK/Secret 密钥的测试环境

测试工具概述

可用测试方法

Singular 提供三种互补的集成验证工具,每种工具针对不同的测试阶段 和需求。

工具 用途 时机 适合场景
测试控制台 从测试设备实时流式传输数据,在实现过程中立即验证功能 实时 活跃开发与调试
导出日志 下载用户级数据,在测试后进行详细分析和验证 约 3 小时延迟 历史数据分析
SDK 审计 自动识别集成问题并提供可操作的解决建议 最近 3 天数据 全面验证

测试策略: 在活跃开发期间使用测试控制台获取即时反馈, 使用导出日志进行详细验证,在正式发布前使用 SDK 审计进行最终全面验证。


测试控制台

实时测试工具,从已注册的测试设备流式传输实时数据,用于立即进行 集成验证和调试。

前提条件

使用测试控制台前

开始测试控制台验证前,请确保满足以下要求:

  • 全新测试设备: 使用从未安装过测试应用的设备, 以确保安装归因测试的准确性
  • 事件测试计划: 准备好在测试会话期间需要验证的 事件和归因列表
  • iOS ATT 注意事项: 确认是否会出现 App Tracking Transparency (ATT) 提示,这将影响测试所用的标识符类型 (IDFV 还是 IDFA)

重要限制: 测试控制台不提供历史报告。事件必须在 设备处于选中状态且 🟢 实时指示器处于活跃状态时发生, 才会显示在控制台中。


第 1 步:添加测试设备

设备注册

在测试控制台中使用适当的设备标识符注册测试设备,以实现实时 事件流式传输。

如何添加设备

注册步骤

  1. 在 Singular 平台中导航至 开发者工具 → 测试控制台
  2. 点击 添加设备 按钮
  3. 从下拉菜单中选择 设备类型
    • Android: 按优先级顺序选择 Google Advertising ID (GAID/aifa)、AppSetID (asid) 或 AndroidID (andi)
    • iOS: 有 IDFA 时优先使用(需要 ATT 授权), 否则使用 IDFV
  4. 输入从设备捕获的 设备 ID
  5. 提供一个便于识别的 设备名称
  6. 点击 保存设备 完成注册

Add Device to Testing Console

捕获设备标识符

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:

SWIFT OBJECTIVE-C
// Example in Swift
print("IDFA", ASIdentifierManager.shared().advertisingIdentifier.uuidString)

IDFV 捕获: 在未实现 ATT 或跟踪未获授权时使用。

SWIFT OBJECTIVE-C
// Example in Swift
print("IDFV", UIDevice.current.identifierForVendor!.uuidString)

第 2 步:测试 SDK 初始化

验证会话跟踪

第一步验证通过检验会话事件传输,确认 SDK 已正确初始化并与 Singular 平台正常通信。

关键首项测试: 会话事件代表 SDK 初始化成功,并使 Singular 能够跟踪归因。若无会话事件,归因将无法正常工作。

初始化测试步骤

  1. 事件日志 中,从 设备 下拉菜单中选择设备名称, 并确认 🟢 实时指示器可见
  2. 从测试平台初始化应用或在设备上打开应用
  3. 验证 session 事件是否出现在事件日志中,表明 SDK 已成功初始化

Session Event in Testing Console


第 3 步:测试集成功能

功能专项验证

确认 SDK 初始化后,使用测试控制台的实时监控功能验证集成中 实现的具体功能。

测试自定义用户 ID

目的

验证自定义用户 ID 是否正确传输到 Singular,用于跨设备 用户跟踪和数据分析。


测试步骤

  1. 在测试控制台中注册设备
  2. 在测试设备上打开应用
  3. 如果不自动发送,触发发送用户 ID 的操作(例如登录)
  4. 在测试控制台中展开事件详情,验证 custom_user_id 字段是否包含预期值

Custom User ID in Event Details


故障排除

如果自定义用户 ID 未出现:

  • 验证设置用户 ID 的方法是否在应用流程的适当时机被实际调用
  • 添加名为 "setting_custom_user_id" 的 Singular SDK 事件, 以提高在测试控制台中的可见性
  • 检查 SDK 日志以确认用户 ID 已成功赋值
测试事件

目的

验证事件跟踪实现是否以正确的名称和归因将事件发送至 Singular。


测试步骤

对于 SDK 集成中实现的每个事件:

  1. 在应用中触发事件,验证该事件是否以正确名称出现在测试控制台中
  2. 点击事件行展开详情,确认 事件数据 部分包含预期归因

Events in Testing Console

Event Data Details


故障排除

如果事件未出现:

  • 验证设备完全注册到测试控制台后,应用是否已打开
  • 导出日志 中查找该事件(约 3 小时后可用)
  • 确认应用中事件触发代码已正确执行

更多资源

测试收入

目的

验证收入跟踪实现是否正确报告购买金额、货币及其他收入详情。


测试步骤

对于每种已实现的收入事件类型:

  1. 在应用中触发收入事件,验证该事件是否出现在测试控制台中
  2. 展开事件行,确认以下字段存在:
    • pcc ——货币代码(如 USD、EUR)
    • r ——收入金额
    • 已实现的其他收入事件归因

默认收入事件名称: 如果收入事件未指定自定义名称, 则显示为 __iap__ (默认收入事件名称)。

Revenue Event Details


更多资源

测试深度链接

目的

验证深度链接实现是否正确处理 Singular Links 并将用户 引导至应用内的预期目标。

前提条件: 本测试假设组织使用 Singular Links 进行广告活动跟踪。


1. 设置测试目标

  1. 在 Singular 平台中导航至 设置 → 应用
  2. 找到应用并点击打开配置
  3. 添加与 SDK 集成中目标处理代码匹配的深度链接目标

Add Deep Link Destination


2. 创建测试链接

  1. 前往 归因 → 管理链接 并选择应用
  2. 点击 创建链接
  3. 链接类型 下选择"自定义来源",在 来源名称 下选择"Email"
  4. 提供链接名称
  5. 展开 链接设置和再营销 部分
  6. 深度链接 下拉菜单中选择测试目标
  7. 其他平台的备用目标 字段中输入网站 URL
  8. 点击 生成 并从 点击跟踪链接 字段复制链接

Generate Tracking Link


3. 测试链接功能

  1. 确保测试设备上已安装应用
  2. 将复制的链接通过电子邮件发送到测试设备
  3. 在设备上打开邮件并点击链接——应用应打开并显示预期的 页面或内容
  4. 在测试控制台中,验证深度链接值是否出现在会话参数中

Deep Link in Session Arguments


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> 文档

测试延迟深度链接

目的

验证 延迟深度链接 是否正确处理在安装应用前点击的链接,在首次启动时将用户 引导至预期目标。


测试步骤

  1. 检查测试控制台中的会话事件,确认已启用延迟深度链接
  2. 按照上述深度链接步骤设置测试目标和链接
  3. 从测试设备卸载应用
  4. 重置设备广告标识符
  5. 将新标识符添加到测试控制台
  6. 将深度链接通过电子邮件发送到设备,并在设备上点击链接
  7. 链接应再营销至应用商店——安装应用(对于本地构建,请从 Android Studio 或 Xcode 侧载,而非安装商店版本)
  8. 安装后,打开应用——应显示深度链接中指定的页面或内容
  9. 在测试控制台中,验证 延迟深度链接 值是否出现在 首次会话 事件中

Deferred Deep Linking Enabled

Deferred Deep Link in First Session

测试卸载跟踪

目的

验证卸载跟踪实现是否正确检测并报告应用卸载, 用于流失分析。

测试复杂性: 卸载跟踪验证比其他 SDK 功能更为复杂, 因为 Singular 依赖 Google/iOS 服务来报告卸载。无法 实时查看卸载事件,也无法使用测试控制台进行验证。


前提条件

测试前,请验证:


测试步骤

  1. 真实设备 上安装应用(非模拟器)
  2. 打开应用,使安装信息注册到 Singular
  3. 从设备卸载应用
  4. 通过以下方法之一验证卸载事件:
    • 导出归因日志 并找到卸载事件(可能需要几天时间才会出现)
    • 如果已配置 postback 至内部 BI 系统,则接收关于卸载的 postback
    • 联系 Singular 支持 或 Customer Success Manager 寻求验证协助

重要提示: 在等待验证卸载事件期间,请勿重置 设备 ID 或重新安装应用——这会使测试结果失效。


测试控制台故障排除

常见问题

为什么没有事件显示?

常见原因

如果设备已注册但事件日志中无事件显示,请检查以下内容:

  • 需要实时监控: 测试控制台仅在设备处于选中状态 且 🟢 实时指示器可见时显示实时事件,不会检索历史事件
  • 应用已打开: 确保已在测试设备上打开应用以 生成会话事件
  • 事件已触发: 如果在测试特定事件,请确保在 应用中已执行了触发操作
  • 设备 ID 准确性: 仔细检查测试控制台中输入的 设备 ID 是否正确
  • 设备 ID 类型: 对于无 ATT 提示的 iOS,无法使用 IDFA,必须使用 IDFV
为什么缺少 _InstallReferrer 事件?

SDK 12.0.0 及更高版本

从 Singular SDK 12.0.0 起,无需再测试 _InstallReferrer 事件。应用发布到商店后,SDK 会自动将 _InstallReferrer 数据放入 首次会话中。只需验证会话是否出现在测试控制台中即可。


SDK 版本 <12.0.0>

对于旧版 Android SDK,仍需在测试控制台中检查 _InstallReferrer 事件,以确保安装归因正确。

iOS IDFA 未出现在测试控制台中

验证步骤

仔细核对 IDFA 准确性:

  • 使用已授予跟踪权限的 Singular Device Assist 应用(iOS)
  • 在 Xcode 调试控制台中记录 IDFA
  • 在导出日志(1 小时以上后)中检查"App Tracking Transparency 状态" 字段——值为 0(未确定)意味着 ATT 提示未显示

配置检查

  1. 设备设置: 在设置 → 隐私 → 跟踪中,确认 "允许 App 请求跟踪"已启用
  2. ATT 提示: 确认测试期间出现了 ATT 提示—— 若未显示,则 IDFA 未被跟踪
  3. 重置 IDFA: 若设备曾被使用过,请在设置 → 隐私 → 跟踪中重置广告标识符
  4. SDK 版本: 验证最新版 Singular SDK 是否已 正确集成
  5. SDK 初始化: 确认 SDK 已按文档要求在 AppDelegate 或 SceneDelegate 中初始化
  6. 检查错误: 在 Xcode 控制台中查看 SDK 初始化或跟踪错误

若按照上述步骤操作后问题仍然存在,请参阅 Apple ATT 文档 或联系 Singular 集成工程师。

如何删除设备

删除流程

  1. 点击测试控制台中设备旁的编辑图标
  2. 在弹出的侧边栏中,点击 删除设备
  3. 删除操作将清除所有事件日志并从 Singular 中移除该设备的 归因数据

另请参阅: 如何重置设备以进行安装归因测试

如何重置设备以重新测试

重置要求

要在同一设备上重新测试 SDK 集成,需清除设备上本地缓存的数据, 并清除 Singular 平台中该设备的归因数据。


Android 重置步骤

  1. 关闭应用并确认其未在运行(如有需要,使用 强制停止
  2. 进入 设置 菜单
  3. 导航至 应用 ,长按应用,选择 应用信息
  4. 选择 存储 ,点击 清除缓存 清除数据
  5. 在测试控制台中,选择设备,点击编辑图标,然后点击 删除设备 以移除归因数据

Device Dropdown

Delete Device


iOS 重置步骤

  1. 关闭应用并从设备卸载
  2. 在测试控制台中,找到设备,点击编辑图标,然后点击 删除设备 以移除归因数据

再互动测试: 测试设备(在测试控制台中启用了眼睛图标的设备) 免除 不活跃期 要求,无需等待不活跃期即可进行再互动归因测试。

如何读取事件日志

事件日志界面

注册设备并发送事件后,事件会以实时更新的方式显示在测试 控制台的事件日志中。

Events Log


事件详情

点击事件行展开,查看应用发送的完整事件详情,包括所有 参数和归因。

Event Details

iOS TestFlight 限制: 测试控制台不支持 iOS TestFlight 应用。 TestFlight 构建版本在每次启动时会重置 IDFV,导致无法捕获实时事件。


导出日志

在测试后下载用户级数据,进行详细的集成验证,事件发生后约有 1 小时延迟。

导出日志概述

用途与时机

导出日志功能支持手动下载用户级数据,包括转化(安装量)、事件、 会话和归因详情,用于全面验证集成。

最佳实践:

  • 日期选择: 下载数据前,仔细检查所选的日期、 应用和站点是否正确
  • 数据延迟: 导出日志数据约比实时数据滞后 3 小时——测试后请留出足够时间再进行验证
  • 文档: 如需完整的导出日志使用说明,请参阅 导出日志与用户级数据常见问题

使用导出日志

数据获取流程

  1. 在 Singular 平台中导航至 归因 → 导出日志
  2. 选择覆盖测试期间的日期范围
  3. 选择要导出数据的应用和站点
  4. 选择数据类型(转化、事件、会话等)
  5. 配置列以包含验证所需的相关字段
  6. 点击 下载 获取包含用户级数据的 CSV 文件

验证使用场景

需要验证的内容

  • 事件跟踪: 确认所有触发的事件均以正确名称和 时间戳出现
  • 事件归因: 验证事件归因以预期值正确传输
  • 收入跟踪: 验证收入金额、货币代码和购买详情
  • 自定义用户 ID: 检查自定义用户 ID 是否正确 与设备关联
  • 设备标识符: 验证是否捕获了正确的设备标识符 (IDFA、IDFV、GAID)
  • 归因数据: 确认归因来源和广告活动参数正确

SDK 审计报告

自动化集成验证工具,在正式发布前识别实现问题并提供可操作的 解决建议。

SDK 审计概述

用途与范围

SDK 审计报告分析应用在最近 3 天内接收到的数据,自动检测集成 问题并提供故障排除指导。

审计检查项:

  • 会话跟踪: 验证应用是否上报用户会话(SDK/S2S 的基础功能,支撑归因运作)
  • 事件跟踪: 确认应用是否正确上报应用内事件 和收入
  • 收入最佳实践: 验证收入跟踪是否遵循推荐的 实现模式
  • 延迟深度链接: 检查 DDL 的启用状态
  • 可选功能: 识别可能增强跟踪能力的缺失可选功能

运行 SDK 审计

审计执行步骤

1

执行审计报告

  1. 导航至 开发者工具 → 测试控制台
  2. 点击右上角的 运行审计 按钮
  3. 等待审计完成分析(通常需要几分钟)

Run SDK Audit

2

审查并解决问题

  1. 以 CSV 格式下载已完成的审计报告
  2. 查看所有应用和平台中已识别的问题列表
  3. 根据问题类型(错误、警告、信息)和功能相关性排定修复优先级
  4. 按照 错误描述 字段中的建议解决问题

问题优先级排定: 并非所有问题都是关键性的或相关的, 取决于已实现的功能。查看 验证名称 以确定是否为您选择不实现的可选功能——若是,可安全忽略该错误信息。


理解审计报告

报告结构

SDK 审计报告列出集成问题及其背景信息,用于故障排除和解决。

SDK Audit Report Structure

说明
应用名称 在 Singular 平台中配置的应用名称
应用 Bundle 应用 bundle 标识符(如 com.example.appname)
平台 iOS、Android 或 Amazon
应用版本 应用版本号(如有)
验证名称 发现问题的集成领域(如"自定义用户 ID"、"收入事件")
类型

问题严重程度:

  • 错误: 阻止集成正常运行的关键问题——必须在正式发布前修复 (如未收到用户会话)
  • 警告: 集成可以运行,但违反了最佳实践——应修复以优化跟踪 (如缺少自定义用户 ID)
  • 信息: 未实现的可选功能——根据需求可能是有意为之 (如未启用 DDL)
错误描述 详细的问题信息和推荐的解决步骤

问题解决指南

优先级别

错误类型问题(关键)

解决优先级

必须在正式发布前解决 ——这些问题会阻止核心功能正常运行。


常见错误问题

  • 未收到会话: SDK 未初始化或未向 Singular 发送数据
  • SDK 密钥无效: SDK key 或 secret 配置不正确
  • 平台不匹配: 应用上报了错误的平台标识符

解决方法

  1. 查看错误描述获取具体指导
  2. 参阅受影响平台的 SDK 集成指南
  3. 验证 SDK 配置和初始化代码
  4. 修复后使用测试控制台重新测试
  5. 运行新的 SDK 审计确认问题已解决
警告类型问题(建议处理)

解决优先级

应按最佳实践解决 ——集成可以运行,但建议进行改进。


常见警告问题

  • 无自定义用户 ID: 未实现跨设备跟踪的自定义用户 ID
  • 收入跟踪问题: 收入事件未遵循最佳实践
  • 缺少事件归因: 事件跟踪缺少推荐归因

解决方法

  1. 评估缺失功能对业务的影响
  2. 查阅该功能的实现文档
  3. 若功能符合需求,则予以实现
  4. 使用测试控制台测试实现效果
信息类型问题(可选)

解决优先级

审查后决定 ——可能不适用于特定使用场景的可选功能。


常见信息问题

  • 延迟深度链接未启用: DDL 可能与营销策略无关
  • 未配置卸载跟踪: 卸载跟踪根据需求属于可选项
  • 可选 SDK 功能: 对基础功能非关键的附加功能

解决方法

  1. 查看验证名称以识别可选功能
  2. 判断该功能是否与业务需求相关
  3. 若不相关,可安全忽略该问题
  4. 若相关,请按照 SDK 文档进行实现

更多资源

SDK 集成、测试和故障排除的完整文档。

相关文档