Reputation: 2383
I am using Google Analytics and I have seen that all the devices in the Cloud Test Lab are detected as "active users" and "new users" (which makes sense). Is there any way to detect this and do not count them ?
I see that they are not counted as installs in Google Play, so I would expect the same behaviour for Analytics.
It is possible to avoid this by uploading a different version to Alpha/Beta and Production with different tracking ids, but the Cloud Test Lab feature is much more powerful if the same Apk is promoted from Alpha/Beta to Production.
Upvotes: 6
Views: 832
Reputation: 14152
As mentioned, you can exclude analytics by the IP addresses listed in the page https://firebase.google.com/docs/test-lab/android/get-started#ip-blocks
Here is some code to handle this (requires apache commons-net) This should cover all the current cases.
NOTE: You'll only need to call this once at app start, since a Test Lab device won't change IP addresses and a NON Test Lab Device will not become one. I guess this kinda assumes that the wifi connection is established also...
private static boolean isTestLabIpAddress(Context context) {
WifiManager wm = (WifiManager) context.getApplicationContext().getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
// Log.i(TAG, "isTestLabIpAddress: ip: " + ip); for diagnosis, you may want this temporarily to be able to check the TestLab device logcat logs
// https://firebase.google.com/docs/test-lab/android/overview#and_mobile_advertising
List<String> cidrAddrs = new ArrayList<>();
//Physical devices
cidrAddrs.add("108.177.6.0/23");
//Virtual devices
cidrAddrs.add("35.192.160.56/29");
cidrAddrs.add("35.196.166.80/29");
cidrAddrs.add("35.196.169.240/29");
cidrAddrs.add("35.203.128.0/28");
cidrAddrs.add("35.234.176.160/28");
cidrAddrs.add("199.192.115.0/30");
cidrAddrs.add("199.192.115.8/30");
cidrAddrs.add("199.192.115.16/29");
for (String cidrRange : cidrAddrs) {
SubnetUtils utils = new SubnetUtils(cidrRange); // build.gradle - implementation 'commons-net:commons-net:3.6'
boolean isInRange = utils.getInfo().isInRange(ip);
if (isInRange) {
//Log.d(TAG, "isTestLabIpAddress: true: " + ip);
return true;
}
}
return false;
}
Upvotes: 1
Reputation: 3501
According to this answer, you can check if "firebase.test.lab"
system variable is set to "true"
which indicates if you're running on a test lab device.
Upvotes: 2
Reputation: 175
Depends on what you mean by "not count them". If these cloud visits are identifiable by source/medium or another unique parameter, I think best practice would be creating another view in which these visits are filtered out. Otherwise you could apply a segment to your standard view that excludes these visits.
Upvotes: 0