I am sure that Firebase is counting all my development work too in its analytics. I open my app like hundred times a day to debug and test on a few devices, it's really skewing up my readings.
I have used a function to get me a somewhat unique ID to represent my devices and ignored all its analytics through code.
public static String getPsuedoID() {
String m_szDevIDShort = "35" + (Build.BOARD.length() % 10)
+ (Build.BRAND.length() % 10) + (Build.VERSION.SDK_INT % 10)
+ (Build.DEVICE.length() % 10) + (Build.DISPLAY.length() % 10)
+ (Build.MODEL.length() % 10) + (Build.PRODUCT.length() % 10);
String serial;
try {
serial = android.os.Build.class.getField("SERIAL").get(null).toString();
return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
} catch (Exception exception) {
serial = "getUniquePsuedoIDfailed";
}
return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
}
But I just figured out it is not as unique as I assumed. Apparently, my ID was same as around a few (very few) users.
Is there a foolproof method to do just this?
File -> Settings -> Plugins -> Firebase App Indexing -> uncheck. Restart Android Studio and it will be gone.
Permanently deactivate collection If you need to deactivate Analytics collection permanently in a version of your app, set FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED to YES (Boolean) in your app's Info.
The histories of Firebase and Google Analytics 4 developments can often create confusion between the two platforms and their capabilities. While GA4 is quickly becoming the go-to data analytics platform instead of Universal Analytics, Firebase is still indispensable when it comes to App development and maintenance.
To enable Analytics debug mode in your browser, install the Google Analytics Debugger Chrome extension. Once installed, enable the extension and refresh the page. From that point on, the extension will log events in your app in debug mode. You can view events logged in the DebugView in the Firebase console.
You can control analytics collection using manifest metadata with the setting defined by a manifestPlaceholder:
<application
android:name="MyApplication"
//... >
<meta-data
android:name="firebase_analytics_collection_deactivated"
android:value="${analytics_deactivated}" />
//...
</application>
Then define the placeholder value in the build variant blocks of your build.gradle
file:
buildTypes {
debug {
manifestPlaceholders = [analytics_deactivated: "true"]
//...
}
release {
manifestPlaceholders = [analytics_deactivated: "false"]
//...
}
1) Get ANDROID_ID of all your testing devices (This is a 64-bit unique ID generated when the user first sets up the device. It remains constant thereafter.)
private static String getDeviceID(Context c) {
return Settings.Secure.getString(c.getContentResolver(), Settings.Secure.ANDROID_ID);
}
2) Add these IDs to an array:
private static String testingDeviceIDs[] = {"8ab5946d3d65e893", "ada1247bfb6cfa5d", ...};
3) Check if the current device is one of the testing devices.
private static boolean isDeviceForTesting(Context c) {
for (String testingID : testingDeviceIDs)
if (getDeviceID(c).equals(testingID))
return true;
return false;
}
4) Finally, log Firebase events only if the device is not a testing device.
static void logFirebaseEvent(Context c, String name) {
if (!isDeviceForTesting(c))
FirebaseAnalytics.getInstance(c).logEvent(name, null);
}
UPSIDE: Unlike Firebase's provision of controlling analytics collection, this method will also work on Release builds/APKs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With