文档
在将 Singular SDK 集成到应用程序或构建服务器到服务器集成后,必须在新版本上线前验证 Singular 是否能接收数据。
开发人员指南 |
开发人员指南 |
前提条件 |
- 实施 Singular SDK 或为应用程序设置服务器到服务器(S2S)集成。
- 如果计划使用测试控制台,请确保有移动设备用于测试。
|
Singular 提供三种主要工具用于测试集成:
-
测试控制台:在实施过程中实时测试功能。
-
导出日志:下载至少延迟一小时的用户级数据。
-
审计报告:自动识别集成中的任何问题。
使用测试控制台
通过添加和选择测试设备,测试控制台可让您流式传输实时数据。请注意,它不提供历史报告。要开始使用,请确保具备以下条件:
-
干净的测试设备:使用从未安装过测试应用程序的设备。
-
要测试的事件和属性列表:准备好计划验证的事件和属性。
-
对于 iOS:注意是否会出现 App Tracking Transparency (ATT) 提示,因为这将决定您是使用 IDFV 还是 IDFA 标识符进行测试。
1 |
添加测试设备
向测试控制台添加设备:
- 在 Singular 平台中,转到 "开发工具" > "测试控制台"。
-
单击添加设备。
- 提供设备类型。对于 Android 设备,如果可用,我们建议依次使用Google Advertising ID(GAID/aifa)、AppSetID(asid) 或AndroidID(andi)。对于 iOS 设备,如果可用,我们建议使用IDFA。
-
提供设备 ID。
捕获设备 ID
对于 Android 设备,我们建议使用谷歌广告 ID(GAID/aifa)。Singular 设备辅助应用程序(Android)可以帮助您找到它。
启用 Singular 配置日志记录后,还可以在 Android LogCat 中找到 aifa。
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,当 ATT 框架到位且允许跟踪时,可以使用IDFA。确保也执行了 "等待跟踪授权,超时间隔"。对于所有其他情况,请使用IDFV。
可以使用下列方法之一捕获IDFA:
- 使用 App Store 中的 Singular Device Assist 应用程序(iOS)。确保授予跟踪权限。
- 在 Xcode 调试控制台中记录 IDFA
//Example in Swift
print("IDFA", ASIdentifierManager.shared().advertisingIdentifier.uuidString)
//Example in Objective-C
NSString *IDFA = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog(@"IDFA: %@", IDFA);
可以在 Xcode 的调试控制台中捕获IDFV。
//Example in Swift
print("IDFV", UIDevice.current.identifierForVendor!.uuidString)
//Example in Objective-C
NSString *IDFV = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
NSLog(@"IDFV: %@", IDFV);
-
添加一个独特的设备名称 ,然后单击 "保存设备 " 。
|
2 |
测试初始化
首先要测试的是您的 SDK 集成是否初始化成功,是否能够向 Singular 发送信息(即您要查找的事件称为:session)。这样,Singular 就可以开始跟踪此应用程序的属性!
测试初始化
-
在 "事件日志"中,从 "设备"下拉菜单中选择你的设备名称。查找 🟢Live指示器。
- 从测试平台初始化应用程序/打开应用程序。
-
当你看到会话事件时,说明你已经成功初始化了 Singular SDK。
如何在测试控制台中阅读事件日志?
注册设备并发送一些事件后,事件就会开始出现在测试控制台页面的事件日志中。
单击一行可显示应用程序发送的事件的全部详细信息。
为什么测试控制台事件日志中没有显示任何事件?
如果您已经注册了一个测试设备,并按照指南测试 SDK 集成,但事件日志中没有显示任何行,请仔细检查以下内容:
-
测试控制台只显示实时事件,即当您在页面上选定设备并显示 🟢 实时指示器时。 它不会查找设备的历史事件。如果在选择设备前触发事件,控制台中将不会显示。
- 确保在测试设备上打开了应用程序(查看用户会话)。
- 确保创建了一些应用内事件(如果要测试事件)。
- 仔细检查是否输入了正确的设备 ID
- 仔细检查是否使用了正确的设备 ID 类型(对于 iOS,如果没有看到 ATT 提示,则不能使用 IDFA)
使用 Singular SDK 12.0.0 及以上版本测试应用程序时,为什么缺少_InstallReferrer事件?
从 Singular SDK 12.0.0 开始,您不需要测试_InstallReferrer事件。一旦您的应用程序被推送到商店,我们的 SDK 就会将 _InstallReferrer 数据放到第一个会话中。您只需查看会话是否出现在测试控制台中即可。
如果您使用的是旧版本的 Android SDK,您仍然需要在测试控制台中检查 _InstallReferrer 事件。
如何重置设备并清除其归属信息,以便再次使用它来测试安装归属?
如果您想用同一台设备重新测试 SDK 集成,除了在 Singular 平台中清除设备的归属信息外,还必须删除设备上所有本地缓存数据。
安卓设备的步骤
- 关闭应用程序并确认其未在运行(如果有选项,请使用"设置 "菜单中的" 强制停止")。
- 点击通知窗口或 "应用程序 "菜单中的滚轮图标,进入 "设置 "菜单。
- 进入 "应用程序",选择要测试的应用程序,长按该应用程序并选择 "应用程序信息"。
- 选择 "存储",然后选择 "清除缓存"和"清除数据"。
-
在 Singular Testing Console 中,从下拉菜单中选择设备,然后单击编辑(铅笔)图标。在打开的架子上,单击 "删除设备",让我们的系统删除此设备属性。
iOS 设备的步骤
- 关闭应用程序,然后卸载。
-
打开 "测试控制台",在下拉菜单中找到您的设备,然后单击 "编辑 "图标。在打开的架子上,单击 "删除设备",让我们的系统删除此设备属性。
提示:使用重新激活不活动窗口进行测试
不活动窗口是一项设置,它决定了用户必须不活动多长时间才有资格获得重新吸引归因。如果您要在启动营销活动前测试重新吸引归因,不活跃窗口会增加您的难度。这就是为什么测试设备(已添加到测试控制台并启用眼睛图标的设备)不受不活动窗口限制的原因。
我正在使用 IDFA 进行测试,但 iOS 无法显示在测试控制台中。我该怎么办?
仔细检查 IDFA 是否正确。有几种方法可以做到这一点:
- 使用 Singular 使用 App Store 中的Singular Device Assist 应用程序(iOS)。确保授予跟踪权限。
- 在Xcode 调试控制台 中记录 IDFA
- 如果您已经在一个多小时前进行了测试,您可以转到导出日志,查看是否捕获了任何事件。您可以从导出日志中提取 IDFA/IDFV。从导出日志中提取时,请尝试在报告中添加 "应用程序跟踪透明度状态"。0 - 未确定,表示 ATT 提示未显示(通常是因为常规设置阻止了它或超时)。更多信息请点击此处
其他可以检查的事项
-
检查设备设置:确保设备的广告标识符 (IDFA) 未被限制。进入设备上的 "设置隐私跟踪",确保已启用 "允许应用程序请求跟踪 "选项。确保在测试时看到 ATT 提示。如果没有看到,则说明我们没有跟踪 IDFA。
-
重置广告标识符:如果设备以前曾用于测试,请重置广告标识符。转到 "设置 "隐私跟踪并重置 IDFA。
-
正确执行:确认 Singular SDK 已正确集成到您的应用程序中,并且您使用的是最新版本的 SDK。
-
等待数据出现:数据出现在测试控制台的时间不应该有延迟。如果等待时间超过一分钟,说明某些设置不正确。
-
检查 SDK 初始化:确认 Singular SDK 在应用程序代码中的初始化是否正确,尤其是在 AppDelegate 或 SceneDelegate 中,具体取决于应用程序的架构。
-
检查错误:在 Xcode 控制台中查找任何可能表明 SDK 初始化或事件跟踪问题的错误。
如果您已经按照上述步骤进行了操作,但问题仍然存在,则可能需要查看详细的集成指南,或向 Singular 集成工程师寻求进一步帮助。
|
3 |
测试特定功能
测试自定义用户 ID
如果您的 SDK 集成向 Singular 发送了自定义用户 ID,以下是测试方法。
- 在测试控制台注册设备。
- 打开应用程序。
- 如果需要,在应用程序中触发一个发送用户 ID 的动作(如登录)。操作的性质取决于您的实现。
-
在发送到 Singular 的下一个事件中,展开测试控制台中的事件详细信息,检查详细信息中是否包含 "custom_user_id "值。
如果用户 ID 未显示:
- 检查应用程序中设置用户 ID 的方法是否按照你的要求被调用。
- 您可能需要添加一个 Singular SDK 事件并将其称为 "设置自定义用户 ID",这样该事件就会显示在测试控制台中。
测试事件
如果您已经在 SDK 集成中实施了事件跟踪或收入跟踪,请按照以下说明进行测试。
有关事件的更多信息,请参阅
对于您在 SDK 集成中实施的每个事件:
-
从应用程序触发事件,并检查它是否以您为事件起的名称出现在测试控制台日志中。
-
如果您要随事件发送任何附加数据,请单击测试控制台中的事件行以展开事件详细信息,并确保数据包含在"事件数据"中。
如果事件未显示,则可能是在设备完全注册到测试控制台之前打开了应用程序。检查事件的导出日志。
测试收入
对于您在 SDK 集成中实施的每种类型的收入事件:
- 在应用程序中触发收入事件并检查事件日志。应该会出现一行事件名称。
注意: 如果您没有给事件自定义名称,它将收到收入事件的默认名称"__iap__"。
-
单击该行展开,确保已收到货币("pcc")、金额("r")和事件的其他详细信息。
测试深度链接
如果您已在 SDK 集成中实施了深度链接,请按照以下说明测试您的深度链接功能。
1.设置测试目的地
在 Singular 平台中,进入 "设置">"应用程序",找到应用程序并添加深度链接目的地。
目的地应是 SDK 集成中的处理程序代码可以识别和处理的深度链接目的地之一。
2.创建测试链接
既然有了要链接的目的地,就可以创建深度链接了。
- 转到 "属性">"管理链接",然后从侧边栏中选择应用程序。
- 单击 "创建链接"。
- 在链接类型下选择 "自定义源",在源名称 下选择 "电子邮件"。
- 为链接命名。
- 单击 "链接设置和重定向"部分展开。
- 在 "深度链接"下拉列表中选择刚刚创建的目的地。
- 在 "其他平台的后备目标 "文本框中输入网站 URL。
-
单击生成并从点击跟踪链接字段中复制链接。
3.测试链接
要测试链接,请
- 确保应用程序已安装在测试设备上。
- 将复制的链接通过电子邮件发送到测试设备。
- 在设备上打开电子邮件并点击链接。应用程序应打开并显示预定的页面或内容。
- 如果您在测试过程中使用 SDK 测试控制台,则应在会话参数中看到深度链接:
测试链接的其他方法(仅限 Android):
使用ADB(Android 调试桥)测试 Android 深度链接是验证应用程序是否正确处理深度链接的常用方法。以下是如何设置和使用 ADB 进行深度链接测试的分步指南:
先决条件
-
安装 ADB:确保已安装 ADB。它包含在 Android SDK 平台工具中,可从 Android 开发者网站下载。
-
启用开发人员选项:在 Android 设备上,启用 "开发人员选项 "和 USB 调试。
- 进入"设置" >"关于手机 ",点击Build 编号七次,启用 "开发者选项"。
- 转到"设置">"开发人员选项 ",然后启用 USB 调试。
-
连接设备:通过 USB 将 Android 设备连接到电脑。运行 ADB,确保它能被识别:
在电脑终端运行
adb devices
此命令应能列出设备。
使用 ADB 测试深度链接
-
使用 ADB 发送深度链接:要测试深度链接,请使用adb shell am start命令。该命令模拟在浏览器或其他应用程序中点击深度链接。
一般语法如下
adb shell am start -W -a android.intent.action.VIEW -d "your_deep_link_url"
-
从电脑终端触发链接:
adb shell am start -W -a android.intent.action.VIEW -d "https://seteam.sng.link/Bnuq6/i428?_dl=androidkotlinapplication%3A%2F%2Fmy_deeplink"
故障排除
"当我的应用程序已在运行时,深层链接会打开应用程序的新实例,而不是切换到现有实例。要避免这种情况,请编辑清单文件并在活动中添加以下内容:
android:launchMode="singleTask"
有关 launchMode 选项的更多信息,请参阅Google 的 <activity> 文档。
测试延迟深度链接
确认是否启用了延迟深度链接:
-
检查测试控制台中的会话事件。
- 按照上述测试深度链接中的说明设置测试目的地和链接。
- 从测试设备上卸载应用程序。
- 重置设备广告标识符。
- 将新标识符添加到测试控制台。
-
通过电子邮件将深度链接发送到设备,然后点击链接。
-
链接将带您进入应用商店。注意: 如果您在本地构建上进行测试,请不要安装商店版本,而是从 Android Studio 或 Xcode 侧载入应用程序。安装并打开应用程序后,您应该会看到所需的页面或内容。
- 如果使用 SDK 控制台进行测试,则应在第一个会话事件中找到延迟的深度链接值。
测试卸载跟踪
如果您已经在 SDK 集成中实现了卸载跟踪功能,请按照以下说明进行测试。
卸载跟踪测试比其他 SDK 功能测试更复杂,因为 Singular 依赖 Google/iOS 服务来报告卸载情况,而这一过程需要一些时间。你无法在 Singular 平台上实时看到卸载事件,也无法使用测试控制台。
测试前,请确保已向 Singular 发送 FCM/APNS 令牌(请参阅《Android SDK:跟踪卸载》和《iOS SDK:跟踪卸载》)。
此外,请仔细检查是否在应用程序配置页面输入了FCM 服务器密钥(Android)或iOS 推送证书。
测试卸载跟踪:
- 使用真实设备(而不是模拟器),在设备上安装应用程序。
- 打开应用程序,以便注册安装。
- 卸载应用程序。
-
要检查 Singular 是否收到卸载事件,您有以下几种选择:
注意: 在等待验证卸载事件期间,不要重置设备 ID,也不要重新安装应用程序。
|
注意:测试控制台不支持 iOS TestFlight 应用程序。TestFlight 构建会在每次启动应用程序时重置 IDFV,因此无法捕获实时事件。
使用导出日志
您还可以使用 "属性">"导出 日志"来验证延迟测试结果。导出日志功能允许您手动下载用户级数据,如转换(安装)、事件等。
最佳实践:
- 获取数据前,请仔细检查日期、应用程序和站点是否选择正确。
- 导出日志中的数据滞后约 3 个小时。
- 如需更多帮助,请参阅常见问题。
运行 SDK 审计
Singular 提供 SDK 审计报告,用于测试 SDK 和 S2S 集成是否正确实施。审核报告会列出发现的所有问题,并提供解决问题的提示。要使用 SDK 审核报告
1 |
运行 SDK 审核报告
转到 "开发人员工具">"测试控制台",然后单击右上角的 "运行审核"。
|
2 |
下载报告并修复相关问题
报告运行完成后,您可以下载 CSV 格式的报告。
该报告列出了在 SDK 和 S2S 集成中发现的问题。并非所有问题都是关键或相关的,这取决于您实施了哪些功能。
查看报告中的问题,并根据错误描述字段中的提示进行修复。
对于警告/信息类型的问题:检查 "验证名称",看看这是否是您选择不实施的可选 SDK 功能,如延迟深度链接 (DDL)。如果是,则可以忽略错误信息。
SDK 审计是如何工作的,在什么数据上运行?
SDK 审计会查看最近 3 天内从应用程序接收到的数据。它会检查数据是否符合预期,例如
- 应用程序是否报告用户会话(这是 SDK/S2S 集成的最基本功能,也是 Singular 跟踪归因的基础)
- 应用程序是否报告应用内事件和收入
- 是否使用最佳实践报告收入
- 是否启用了延迟深度链接
如何阅读 SDK 审计报告?
该报告列出了在 SDK 和 S2S 集成中发现的问题。
列 |
说明 |
应用程序名称 |
在 Singular 中配置的应用程序名称。 |
应用程序捆绑包 |
在 Singular 中配置的应用程序捆绑包,例如 com.example.appname。 |
平台 |
iOS、Android 或 Amazon。 |
应用程序版本 |
应用程序版本号(如果有)。 |
验证名称 |
发现问题的集成区域,如 "自定义用户 ID "或 "收入事件"。 |
类型 |
问题的严重程度:
-
错误: 该问题会导致集成无法运行,您必须在应用程序上线前解决该问题。例如,Singular 无法从应用程序中接收用户会话。没有用户会话,我们就无法执行归因。
-
警告:如果您想遵循最佳实践并从 Singular 归因追踪器中获得最大收益,您应该修复它。例如,您的应用程序没有发送自定义用户 ID。自定义用户 ID 是可选功能,但强烈建议使用。
-
信息: 此问题涉及您可能选择不在集成中实施的可选功能。例如,您的应用程序未启用延迟深度链接 (DDL)。DDL 可能与您的营销策略无关。
|
错误描述 |
有关该问题的更多信息以及修复方法。 |
|