Javier Delgado
Javier Delgado

Reputation: 2383

Google Analytics detects Google Cloud Test Lab tests as Active Users and New Users

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

Answers (3)

aaronvargas
aaronvargas

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

guy.gc
guy.gc

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

Catherine Smith
Catherine Smith

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

Related Questions