Releases: snowplow/snowplow-ios-tracker
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)
Snowplow iOS Tracker 2.2.0
This version reverts a breaking change introduced with the version 2.0.
The application_install event reports the time when the app has been launched for the first time after the installation.
Since the version 2.0 that timestamp is added in the true_timestamp
field of the event.
Unfortunately, we noticed that it can be cause of issues on data-modelling because the true_timestamp
is directly applied to the derived_timestamp
field and it's not adapted to the time of the collector (collector_timestamp
). The problem is visible when the user device has the device time set on the future, because the derived_timestamp
wouldn't be corrected and would store the application_install event as happened in the future.
Since this version, we set the application_install
timestamp in the device_created_timestamp
. In this way, a wrong time setting in the user device wouldn't affect the correctness of the derived_timestamp
in the data model.
It also has a couple of fixes:
- A typo in an imported header. Thanks for the contribution of Juraldinio.
- A fix for a deprecated method used for the remote configuration management.
CHANGELOG
Bug fixes:
- Set application install timestamp on device timestamp field (#625)
- Avoid deprecated method for configuration serialization (#623)
- Fix for CaseSensetive file systems (#622) (Contribution of @Juraldinio)
Internal: