Skip to content

Releases: snowplow/snowplow-android-tracker

Version 6.0.6

12 Sep 16:31
Compare
Choose a tag to compare

Some Android devices report their battery level incorrectly. This patch updates the PlatformContext to track negative battery levels as null, preventing schema violations.

Bug fixes:

  • Set negative battery levels to null in mobile context (#698)

Version 6.0.5

22 Aug 15:21
3c8f9fa
Compare
Choose a tag to compare

This patch release fixes unhandled exceptions in the tracker during initialization and tracking under some circumstances.

Bug fixes:

  • Handle exceptions raised by the Executor during initialization of the thread pool for emitter (#694)
  • Fix concurrent modification when creating TrackerEvent by copying the payload (#692)

Release 6.0.4

12 Jun 11:31
Compare
Choose a tag to compare

This release fixes two bugs.

When calling tracker.emitter.serverAnonymisation = true, the flag is now set quickly, so that subsequent events tracked will immediately be anonymised.

For ApplicationInstall events, the timestamps in the referrer_details entity are now processed correctly. The timestamps provided by the Android InstallReferrer API are in seconds since epoch, but the tracker was processing them as milliseconds.

Bug fixes

  • Send correct install referrer timestamps (close #687)
  • Set serverAnonymisation more quickly (close #689)

Release 6.0.3

19 Apr 09:11
Compare
Choose a tag to compare

This patch release fixes two bugs.

The tracker will no longer crash if the app has a low version of the optional dependency InstallReferrer.

We've also added a new configuration flag, useContextResourcesScreenResolution, to fetch the default screen resolution - for the dvce_screenwidth and dvce_screenheight event properties - using a newer method.

NB: the dvce_screenwidth and dvce_screenheight screen resolution values will be different when this flag is turned on.

val networkConfig = NetworkConfiguration("https://endpoint")
val subjectConfig = SubjectConfiguration().useContextResourcesScreenResolution(true)

Snowplow.createTracker(
    context, 
    "namespace",
    networkConfig,
    subjectConfig
)

When the flag is false (default), the default resolution is fetched using a deprecated method (WindowManager). This can cause StrictMode Violations under certain conditions. Newer methods of obtaining screen size don't include the menu bar.

The mobile context entity is not affected by the flag, as it already uses the newer Android API to obtain the screen resolution.

Bug fixes

  • Add Subject config flag to avoid WindowManager bug (#657)
  • Catch more generic exceptions for InstallReferrer (#647)

Release 6.0.2

29 Feb 15:21
Compare
Choose a tag to compare

This release fixes a problem with fetching the Android Advertising ID (IDFA) that delayed the createTracker call to take 10 seconds in case it was run on a background thread. The tracker now doesn't retrieve any platform context properties during the createTracker call (they are fetched on background threads as events are processed), making it non-blocking to initialize the tracker.

Bug fixes

  • Fix createTracker call hanging for 10 seconds if run on a background thread (#620)

Version 6.0.1

14 Feb 14:48
Compare
Choose a tag to compare

Two bug fixes. The media tracking PercentProgress event now includes the percent progress. Also, the screen state is now correctly updated, so that all events have the right screen details.

Bug fixes

  • Fix wrong screen entity info assigned for screen end event and in case events are tracked right before screen view (#673)
  • Add percent progress to event (#662)

Version 6.0.0

02 Feb 09:06
Compare
Choose a tag to compare

We are very excited to announce version 6.0.0 of the Android tracker.

Enhancements

Screen time and engagement metrics

The Android tracker can now track screen engagement information, including the screen time and metrics for the amount of content viewed on the screen! Visit this demo to see it in action! This works nicely together with the Snowplow Unified dbt package 0.2.0.

  • Add screen engagement tracking of time spent and list items scrolled on a screen (#654)
  • Enable lifecycle autotracking by default (#651)

Local event store automatic cleanup

The trackers can now automatically remove old events from the event store in situations when requests are blocked due to ad blockers or in case of longer offline usage.

  • Add configurable limit for the maximum age and number of events in the event store and remove old events before sending (#660)

Tackling duplicate events

We have improved the trackers to avoid sending duplicate events to the Collector by making requests serially and adjusting request timeouts.

  • Change default emit timeout from 5 seconds to 30 seconds (#658)
  • Make network requests serially in network connection (#646)

Batching improvements

The event batching algorithm has been improved to make it possible to make requests to the collector after a certain number of events accumulate in the event store (defaults to 1, but configurable to 10 or 25).

Cross-navigation tracking

There is a new API to decorate outgoing links to other Web or mobile apps with user and session information.

  • Add API to decorate link with user/session info (#639)

Set custom values in the platform context entity

Provide callbacks for any of the platform context entity properties.

  • Add an option to override platform context properties (#667)

Bug fixes

  • Handle errors when fetching screen resolution in Subject (#657)
  • Fix demo crash when using R8 full mode (#652)
  • Fix returning error from network connection requests (#659)
  • Do not track the screen view again when app comes to foreground (#653)

Under the hood

  • Update copyright notices (#669)
  • Tidy AbstractEvent internal properties (#666)
  • Undeprecate PageView event (#665)
  • Remove optional types in event store interface (#661)
  • Set default thread count in Executor to match the default thread pool size in the Emitter (#659)
  • Remove unused threadCount property from Tracker (#659)
  • Update Emitter constructor to accept namespace and event store and make them immutable (#659)

Version 5.6.0

13 Oct 11:39
Compare
Choose a tag to compare

This release adds integration with the FocalMeter system by Kantar that measures audience of content through a router meter. When configured using the FocalMeterConfiguration, the tracker makes a request with the user ID from the session context to the configured URL endpoint.

Enhancements
Add configuration to send requests with user ID to a Focal Meter endpoint (#571)

Version 5.5.0

02 Oct 15:01
Compare
Choose a tag to compare

This release adds an option to disable retrying all failed requests to the collector. The option is called EmitterConfiguration.retryFailedRequests. If configured, events that fail to be sent in the first request to the collector will be dropped. This may be useful in situations where it's necessary to prevent traffic spikes with many events being sent at the same time.

Enhancements
Add option to disable retrying any failed requests (#641)

Version 5.5.0-beta.2

08 Sep 08:43
Compare
Choose a tag to compare
Version 5.5.0-beta.2 Pre-release
Pre-release

This pre-release updates the 5.5.0 beta on top of the latest 5.4 patch releases.