Migration guide from version 4.x to 5.0
Although the trackers underwent a huge internal rewrite (from Objective-C to Swift and from Java to Kotlin), we tried to keep the API with as little breaking changes as possible.
iOS tracker
The supported platforms have changed on the iOS tracker:
- Minimum iOS deployment target changed from 9.0 to 11.0.
- On macOS, from 10.10 to 10.13.
- On tvOS, from 9.0 to 12.0.
- On watchOS, from 2.0 to 6.0.
Additionally, there is a new way to enable tracking the IDFA identifier – instead of adding the SNOWPLOW_IDFA_ENABLED
compiler flag, one now needs to implement a callback (TrackerConfiguration.advertisingIdentifierRetriever
) that retrieves the value. See the documentation for more information.
If using EmitterConfiguration
when creating a new tracker, the default buffer option configuration changed from single
(max 1 event per batch) to default
(max 10 events per batch). If not using an EmitterConfiguration
, the buffer option was set to default
also in tracker v4.
Android tracker
We adopted using Kotlin properties instead of Java fields for public properties of the event classes. This doesn't change the API in Kotlin. On the other hand, in Java, the properties are now accessible through getter and setter methods instead of directly as Java fields.
For example, to set the true timestamp of events in Java the API changes as follows:
// v4 API:
event.trueTimestamp = 123456789L; // doesn't work anymore
// v5 API:
event.setTrueTimestamp(123456789L);
However, the API hasn't changed if you use the builder methods to set the properties. For example, this approach works in both the v4 and v5 tracker:
// works both in v4 and v5 API:
event.trueTimestamp(123456789L);
If using EmitterConfiguration
when creating a new tracker, the default buffer option configuration changed from single
(max 1 event per batch) to default
(max 10 events per batch). If not using an EmitterConfiguration
, the buffer option was set to default
also in tracker v4.
Renaming contexts to entities
The contexts
property in events used to assign custom context entities to events has been renamed to entities
. The previous naming is still available but it is deprecated.
In the Android tracker, the customContexts
property in events has been deprecated in favor of the entities
property.