Releases: snowplow/snowplow-ios-tracker
Version 4.0.0
These releases bring two exciting new features to the trackers: support for hybrid apps, and anonymous tracking.
Support for hybrid apps enables tracking Snowplow events in Web views. The iOS and Android trackers communicate with the WebView tracker that can be installed in Web apps to track events. This enables events to share the same session and context entities as events tracked using the native mobile trackers!
Anonymous tracking is a tracker feature that enables anonymising various user and session identifiers to support user privacy in case consent for tracking the identifiers is not given. Similar to the JavaScript tracker, the mobile trackers let you configure user anonymisation (using the userAnonymisation
flag in TrackerConfiguration
) to anonymise user identifiers in session and platform context and server anonymisation (using the serverAnonymisation
flag in EmitterConfiguration
) to anonymise the network_userid
and user_ipaddress
properties assigned by the Collector.
Other changes in the trackers include improvements in remote configuration that now supports switching between multiple remote configuration endpoints and gives feedback of where the configuration was retrieved from (from cache, default values or fetched over network). Additionally, the tracker.track(event)
function now returns the event ID. Thanks to an external contribution from @onato, the iOS tracker can now be utilized in share extensions.
We are also excited to announce major improvements to the documentation that now gives more guidance on how to make use of all the tracker features!
CHANGELOG
Bug fixes:
- Do not resume remote configuration from cache in case it has different endpoint (#688)
- Fix too many events tracked by screen view autotracking (#689)
- Ignore trailing slashes in the network configuration endpoint (#695)
Enhancements:
- Add interface to subscribe for events tracked in Web views (#691)
- Add anonymous tracking features (#702)
- Return tracked event ID from the track method (#710)
- Extend the onSuccess callback when setting up remote configuration to pass configuration state (#694)
- Add support for tracking events in a Share Extension (#700) (thanks to @onato)
Under the hood:
Version 3.2.0
The tracker now makes use of the client_session
schema version 1-0-2, which adds two new properties to the session context entity – eventIndex
(index of the event in the session) and firstEventTimestamp
(timestamp of the first event in the session). The event index property is useful for ordering events as they were tracked.
The release also changes the behaviour for 5 HTTP status codes (400, 401, 403, 410, and 422) that, when received in response from the Collector, will now cause the tracker not to retry sending events (i.e., drop the events). Requests with all other 3xx, 4xx, and 5xx status codes are retried. The set of status codes for which events should be retried or not is customizable in EmitterConfiguration
. The following shows the configuration in the iOS tracker:
var customRetryRules = [Int:Bool]()
customRetryRules[403] = true // retry for the 403 HTTP status code
let emitterConfig = EmitterConfiguration()
.customRetryForStatusCodes(customRetryRules)
CHANGELOG
Features:
Version 3.1.2
This patch version fixes a mistake in the Lifecycle autotracking feature. When configured, Background and Foreground events are fired as the user navigates away from, and back to, the app. Also, a LifecycleEntity
is attached to all events, marking if they occurred when the app was visible or not. Unfortunately, these entities were not being added until after a Background event had fired. This has now been fixed: when Lifecycle autotracking is on, all events will have the lifecycle entity.
CHANGELOG
Bug fixes:
- Attach LifecycleEntity before the first Background event (#679)
Version 3.1.1
This is a patch release that fixes a bug in session management. It can crash the app at startup due to an incorrect migration of session data from the older versions of the tracker.
CHANGELOG
Bug fixes:
- Fix object cannot be nil (key: userId) when initialising Snowplow tracker (#675)
Version 3.1.0
This version has some improvements to the session management and the tracker control.
About the session management, we noticed that the behaviour of the session timeout checking with the lifecycle events could cause bad interpretation of the session in some edge cases. The previous version of the tracker used to check the timeout based on the state of the app. To make an example, a transition from foreground to background was causing the generation of an application_background
event checking the session with the background timeout, accordingly with the state of the app. This caused a weird behaviour where the session remained the same even if an app was in background for longer than the background timeout. This new version fix that issue.
Another improvement to the session management is the ability to receive the details of the new session (SessionID, SessionIndex, etc.) as soon as the session is renewed. That's a feature that disappeared with the v2 of the native mobile trackers.
We added back another feature that was removed with v2: the ability to pause and resume the emission of events. In cases of low bandwidth or low battery we can allow the app to pause the emission of the events without pausing the ability to track them.
CHANGELOG
Bug fixes:
- Check session for background event using foreground timeout (#667)
Enhancements:
Under the hood:
Snowplow iOS Tracker v3.0.2
This is a patch release that fixes a problem where the Apple IDFA and IDFV attributes of the platform context remained null
even after permission to access them was given by the user. This was caused by caching their values since the initialization of the tracker. Instead, this release regularly updates their values while they are null
.
CHANGELOG
Bug fixes:
- Fix updating IDFA during app runtime (#661)
Snowplow iOS Tracker v3.0.1
This is a patch release that fixes a bug introduced in version 3.0.0 which resulted in multiple of the same screen context entities being added to events. The problem occurred when tracker configuration was updated (manually or through remote configuration) in which case new state machines for managing the context state were added but old ones weren't removed. This fix removes old state machines on configuration updates and allows only one of the same type to exist.
CHANGELOG
Bug fixes:
- Do not allow multiple state machines with the same ID (#658)
Snowplow iOS Tracker v3.0.0
This release completes the transition started with the previous major release v2.0, completely removing support for the old v1.0 API. The platform context now includes information about memory, storage, and battery usage. With this new version we provide two new events out-of-the-box: DeepLinkReceived
and MessageNotification
. Furthermore, each event tracked can be attached with a Lifecycle
context indicating if the app is in background or foreground state and a DeepLink
context attached to the first ScreenView
tracked after a DeepLinkReceived
.
CHANGELOG
Bug fixes:
- Fix SPDataPersistence crash at SDK init (#655)
Enhancements:
- Allow campaign enrichment with DeepLinkReceived events (#648)
- Capture campaign attribution data from deep links (#297)
- Add event for remote and local notifications (#646)
- Add memory, battery and storage info to mobile context (#643)
- Support lifecycle reporting for tvOS (#640) (Contribution of @miike)
- Add lifecycle context to indicate app state when the event is tracked (#637)
Under the hood:
Snowplow iOS Tracker v2.2.2
This is a patch version that fixes a bug introduced with the version 2.0 which allows multiple tracker instances in the same app. The Session UserID should be common among the instances but with the previous version each instance of the tracker generated its own Session UserID. With this fix, all the instances can share the same Session UserID.
Also, this version of the tracker doesn't store persistent data in the filesystem when running on watchOS and tvOS app. In fact, those operating systems have limitations on the data that can be stored persistently in the device.
CHANGELOG
Bug fixes:
Snowplow iOS Tracker v2.2.1
This patch version fixes a build error introduced by the Xcode 13.0 beta 3.
There are chances that this issue will be eased out in one of the next beta versions of Xcode 13.
Meanwhile, this fix avoid the build error allowing Xcode 13 to build the Snowplow tracker framework.
CHANGELOG
Enhancements:
- Fix build errors in Xcode 13 beta 3 when using SPM (#628)