如何测试 Singular SDK 集成

文档

测试 Singular SDK 集成

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

将 Singular SDK 集成到应用程序或构建服务器到服务器集成后,在生产发布前验证数据传输到 Singular 至关重要

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

测试工具概述

可用测试方法

Singular 为集成验证提供了三种互补工具,每种工具都能满足特定的测试阶段和要求。

工具 目的 时间安排 最适合
测试控制台 在实施过程中从测试设备传输实时数据流,以便立即进行功能验证 实时 主动开发和调试
导出日志 下载用户级数据,以便在测试后进行详细分析和验证 ~3 小时延迟 历史数据分析
SDK 审计 自动识别集成问题,并提供可行的解决建议 最近 3 天的数据 全面验证

测试策略:在积极开发期间使用测试控制台获得即时反馈,使用导出日志进行详细验证,并在生产发布前使用 SDK 审计进行最终全面验证。


测试控制台

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

先决条件

使用测试控制台之前

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

  • 干净的测试设备:使用从未安装过测试应用程序的设备,以进行准确的安装归因测试
  • 事件测试计划:准备在测试过程中验证的事件和属性列表
  • iOS ATT 意识:确定是否出现应用程序跟踪透明度 (ATT) 提示,影响标识符类型(IDFV 与 IDFA)以进行测试

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


步骤 1:添加测试设备

设备注册

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

如何添加设备
#

注册步骤

  1. 在Singular平台中导航至开发工具→测试控制台
  2. 点击添加设备按钮
  3. 从下拉菜单中选择设备类型
    • 安卓:依次选择谷歌广告 ID (GAID/aifa)、AppSetID (asid) 或 AndroidID (andi)
    • iOS:可用时使用 IDFA(需要 ATT 同意),否则使用 IDFV
  4. 输入从设备获取的设备ID
  5. 提供独特的设备名称以方便识别
  6. 单击 "保存设备 "完成注册

Add Device to Testing Console

捕获设备标识符
#

安卓设备标识符

推荐方法:使用 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:

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

IDFV 捕捉:当 ATT 未实施或追踪未授权时使用。

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

第 2 步:测试 SDK 初始化

验证会话跟踪

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

关键的第一次测试:会话事件代表 SDK 初始化成功,使 Singular 能够跟踪归因。没有会话事件,归因就无法发挥作用。

初始化测试步骤

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

Session Event in Testing Console


步骤 3:测试集成功能

特定功能验证

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

测试自定义用户 ID
#

目的

验证自定义用户 ID 是否正确传输到 Singular,以便进行跨设备用户跟踪和分析。


测试步骤

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

Custom User ID in Event Details


故障排除

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

  • 验证设置用户 ID 的方法是否在应用程序流程的适当时间被调用
  • 添加名为 "setting_custom_user_id "的奇异 SDK 事件,以便在测试控制台中可见
  • 检查 SDK 日志以确认用户 ID 分配
测试事件
#

目的

验证事件跟踪实施是否以正确的名称和属性向 Singular 发送事件。


测试步骤

针对 SDK 集成中实施的每个事件:

  1. 在应用程序中触发事件,并验证事件是否以正确的名称出现在测试控制台中
  2. 点击事件行展开详细信息,确认事件数据部分包含预期属性

Events in Testing Console

Event Data Details


故障排除

如果事件未出现:

  • 在设备完全注册到测试控制台后,验证应用程序是否已打开
  • 检查事件的导出日志(延迟 ~3 小时后可用
  • 确认应用程序中正确执行了事件触发代码

其他资源

测试收入
#

目的

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


测试程序

针对实施的每种收入事件类型:

  1. 在应用程序中触发收入事件并验证事件是否出现在测试控制台中
  2. 展开事件行,确认存在以下字段:
    • pcc - 货币代码(如美元、欧元
    • r - 收入金额
    • 附加收入事件属性(如果已实施

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

Revenue Event Details


其他资源

测试深度链接
#

目的

验证深层链接实施是否能正确处理奇异链接并将用户引导至预期的应用内目的地。

前提条件:本测试假定组织使用Singular Links进行营销活动跟踪。


1.设置测试目的地

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

Add Deep Link Destination


2.创建测试链接

  1. 进入 "归属"→"管理链接"并选择应用程序
  2. 点击创建链接
  3. 链接类型下选择 "自定义源",在源名称下选择 "电子邮件
  4. 提供链接名称
  5. 展开链接设置和重定向部分
  6. "深度链接 "下拉菜单中选择测试目的地
  7. "其他平台的后备目标"字段中输入网站 URL
  8. 单击 "生成 "并从"点击跟踪链接 "字段中复制链接

Generate Tracking Link


3.测试链接功能

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

Deep Link in Session Arguments


安卓测试替代方案

使用ADB(Android 调试桥)测试 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 中为活动添加以下内容:

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. 使用以下方法之一验证卸载事件:
    • 导出属性日志并查找卸载事件(可能需要几天才能出现
    • 如果回传配置到内部 BI 系统,接收有关卸载的回传
    • 联系Singular 支持或客户成功经理以获得验证帮助

重要:在等待验证卸载事件期间,请勿重置设备 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 个多小时后)中的 "应用程序跟踪透明度状态 "字段 - 值 0(未确定)表示未显示 ATT 提示

配置检查

  1. 设备设置:验证设置 → 隐私 → 跟踪显示 "允许应用程序请求跟踪 "已启用
  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 平台中的设备属性。


安卓重置步骤

  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 平台中配置的应用程序名称
应用程序捆绑 应用程序捆绑标识符(如 com.example.appname)
平台 iOS、安卓或亚马逊
应用程序版本 应用程序版本号(如有
验证名称 发现问题的集成区域(例如,"自定义用户 ID"、"收入事件
类型

问题严重程度:

  • 错误:妨碍集成运行的关键问题--必须在生产发布前修复(例如,未收到用户会话
  • 警告:集成可正常运行,但违反最佳实践 - 应修复以优化跟踪(例如,缺少自定义用户 ID
  • 信息:未实施可选功能--可能是根据需求故意为之(例如,未启用 DDL
错误描述 详细的问题信息和建议的解决步骤

问题解决指南

优先级别

错误类型问题(严重)
#

解决优先级

必须在产品发布前解决- 这些问题会妨碍核心功能。


常见错误问题

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

解决方法

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

解决优先级

应解决最佳实践- 集成功能,但建议改进。


常见警告问题

  • 无自定义用户 ID:自定义用户 ID 未用于跨设备跟踪
  • 收入跟踪问题:收入事件未遵循最佳实践
  • 缺少事件属性:跟踪的事件没有建议的属性

解决方法

  1. 评估缺失功能对业务的影响
  2. 审查功能的实施文档
  3. 如果功能符合要求,则实施
  4. 使用测试控制台测试实施情况
信息类型问题(可选)
#

解决优先级

审查并决定- 可能不适用于特定用例的可选功能。


常见信息问题

  • 延迟深度链接禁用:DDL 可能与营销策略无关
  • 未配置卸载跟踪:根据需求可选择卸载跟踪
  • 可选 SDK 功能:对基本功能不重要的附加功能

解决方法

  1. 查看验证名称以确定可选功能
  2. 确定功能是否与业务需求相关
  3. 如果不相关,则安全地忽略问题
  4. 如果相关,则按照 SDK 文档实施

其他资源

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

相关文档