App Install Event Not Tracked

Hey,

I’ve built a Kotlin and Swift wrapper for Android and iOS snowplow SDK’s respectively, I’ve turned off all automatic tracking features except setInstallAutoTracking. All the other manual events that I’ve created using custom schemas are being tracked successfully via the wrapped trackers.

For iOS, the tracker is able to track the ‘application_install’ event but with empty flower braces.
Ex:
image

For Android, the tracker doesn’t seem to track the ‘application_install’ event at all.

I’m not sure if I’m missing something or if I’m doing something wrong, could someone help me out?

Thank You!

Hi @siv,

The fact that the application_install event is tracked with no properties (empty braces) is as expected – it shouldn’t have any properties, it just signals the installation.

In the Android case, please make sure that you test with a clean installation of the app. So try uninstalling the app and reinstalling again. The tracker creates a flag in SharedPreferences after the install event is tracked to prevent from tracking again.

It could also be helpful if you could provide you configuration and the way you initialize the tracker. However, there shouldn’t be anything special needed with the install autotracking feature – enabling it in the configuration should be sufficient.

Hi @matus,

Thank you for responding. I’ve tried uninstalling the application and reinstalling it again, it didn’t work.

This is how the wrapper is called to create the tracker:
val tracker = wrappedSnowplowTracker(applicationContext,endpoint,apiKey)

The config for the tracker(okhttpclient to used to intercept and add key):

        networkConfig = NetworkConfiguration(
            this.endpoint,
            httpMethod
        ).okHttpClient(okHttpClient)

        foregroundTimeout = TimeMeasure(30, TimeUnit.MINUTES)
        backgroundTimeout = TimeMeasure(30, TimeUnit.MINUTES)
        sessionConfig = SessionConfiguration(
            foregroundTimeout,
            backgroundTimeout
        )

        emitRange = 500
        threadPoolSize = 20
        byteLimitGet = 52000
        byteLimitPost = 52000
        emitterConfig = EmitterConfiguration()
            .requestCallback(getRequestCallback())
            .emitRange(emitRange)
            .threadPoolSize(threadPoolSize)
            .byteLimitGet(byteLimitGet)
            .byteLimitPost(byteLimitPost)

        appId = "android"
        namespace = "android"
        devicePlatform = DevicePlatform.Mobile
        setBase64Encoding = true 
        setScreenContext = true
        setSessionContext = true
        setPlatformContext = true
        setApplicationContext = true
        setGeoLocationContext = true
        setDeepLinkContext = true
        setLifecycleAutoTracking = false
        setScreenViewAutoTracking = false
        setExceptionAutoTracking = false
        setInstallAutoTracking = true
        setDiagnosticAutoTracking = false
        trackerConfig = TrackerConfiguration(appId)
            .logLevel(LogLevel.VERBOSE)
            .loggerDelegate(this)
            .devicePlatform(devicePlatform)
            .base64encoding(setBase64Encoding)
            .sessionContext(setSessionContext)
            .screenContext(setScreenContext)
            .platformContext(setPlatformContext)
            .applicationContext(setApplicationContext)
            .geoLocationContext(setGeoLocationContext)
            .deepLinkContext(setDeepLinkContext)
            .lifecycleAutotracking(setLifecycleAutoTracking)
            .screenViewAutotracking(setScreenViewAutoTracking)
            .exceptionAutotracking(setExceptionAutoTracking)
            .installAutotracking(setInstallAutoTracking)
            .diagnosticAutotracking(setDiagnosticAutoTracking)

        tracker = Snowplow.createTracker(
            applicationContext,
            namespace,
            networkConfig,
            sessionConfig,
            emitterConfig,
            trackerConfig
        )