Android - “firebase.test.lab”设置无法从 Firebase 分析中排除 Play 商店测试活动

Kar*_*arl 8 android google-analytics firebase firebase-test-lab

每次将新版本上传到 google Play 商店时,我都会在大约 10 分钟内获得大约 8 个新用户登录我的 Firebase 分析控制台。我还没有公开发布我的应用程序,它处于封闭测试轨道,没有其他人选择加入。唯一可能的原因似乎是谷歌的内部测试,例如发布前报告。这些数字真的会弄乱我的分析数据,所以我想从 Firebase 分析中排除这个测试流量。

在遵循这些先前问题中的建议之后,不幸的是,没有提到的解决方案成功地排除了测试活动

在我的 AndroidManifest.xml 中应用程序标记的第一行之后,我有:

<meta-data android:name="firebase_analytics_collection_enabled" android:value="false" />
Run Code Online (Sandbox Code Playgroud)

在我的 MainActicity 的 onCreate() 开始时,我有:

if(!isTestDevice(this))
{
    FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)

我有以下功能:

public static boolean isTestDevice(Context context) {
    String testLabSetting = Settings.System.getString(context.getContentResolver(), "firebase.test.lab");
    return "true".equals(testLabSetting);
}
Run Code Online (Sandbox Code Playgroud)

一开始我以为isTestDevice函数可能工作不正常,于是在我的主屏幕上添加了以下调试代码:

if(isTestDevice(linearLayout.getContext())) {
    TextView testText = new TextView(linearLayout.getContext());
    testText.setText("TEST DEVICE");
    testText.setId(linearLayout.generateViewId());
    linearLayout.addView(testText, 0, params);

    TextView disabledText = new TextView(linearLayout.getContext());
    disabledText.setText("Analytics disabled");
    disabledText.setId(linearLayout.generateViewId());
    linearLayout.addView(disabledText, 0, params);
}
Run Code Online (Sandbox Code Playgroud)

在发布前报告截图中,我可以看到 isTestDevice 函数正在运行:

发布前报告截图

此外,如果我注释掉该setAnalyticsCollectionEnabled(true);行,则 Firebase 分析控制台不会记录任何活动,这表明 AndroidManifest.xml 中的行正确禁用了分析,直到该setAnalyticsCollectionEnabled(true);行运行。

此外,即使我禁用了发布前报告也会在上传发布后的几分钟内记录大约 8 个用户的相同活动。

似乎记录的活动来自预发布报告以外的其他来源,因为我可以从预发布屏幕截图中看到预发布设备被正确检测为测试设备,此外,活动仍然即使我关闭预发布报告也会被记录。但即便如此,活动还是会在上传发布后的 10 分钟内记录下来。

如何防止此测试活动被记录在 Firebase 分析中?链接帖子中的解决方案似乎不再有效。

编辑:我的应用程序的一个主要功能是游戏。如果用户在游戏中得分超过一分,我现在已经能够通过仅将分析设置为启用来解决这个问题。这有效地消除了机器人记录的所有流量,因为它们只是漫无目的地点击任何东西并且缺乏获得超过一分所需的任何情报。但这是一个非常糟糕的黑客,我想删除。

Jus*_*ton 0

避免这种情况的唯一可靠方法是通过 IP 地址进行排除。正如您所发现的,禁用预启动报告不会阻止测试的运行,因为我们使用这些测试中的信息来检测应用程序的问题。