Releases: snowplow/snowplow-ios-tracker
Version 6.0.8
This patch release fixes a bug that caused the tracking events to crash when media tracking was started using an AVPlayer
instance.
Bug fixes
- Fix media tracking calls not being dispatched on the correct queue when tracking using AVPlayer
Version 6.0.7
This release fixes a bug when serializing remote configuration in case the timeout property is set in network configuration.
Bug fixes
- Fix incorrect decoding of timeout property in network configuration (#902)
Version 6.0.6
This PR fixes a bug in remote configuration that resulted in a crash in case the tracker configuration had a logger class configured, which the tracker previously tried to serialize on remote config updates. The logger class is no longer serialized, but it still can persist on config updates as the new tracker configuration can fallback on the previous one for that property.
Bug fixes
- Fix remote configuration attempting to serialize a logger class after new configuration is fetched (#900)
Version 6.0.5
This patch release makes the emitter pause for 5 seconds in case events fail to be removed from the event store. This aims to reduce the number of duplicates caused in case of issues with removing events from the SQLite event store.
It also adds a warning to the API docs that the self-describing event and entity data may needs to be serializable to JSON.
Bug fixes
- Stop sending if events fail to be removed from the event store
- Add warning for the serialization of data in self-describing event and entity (#898)
Version 6.0.4
Bug fixes
- Fix CrossDeviceParameterConfiguration constructor to be public (#894) thanks to @thomas-brx
Version 6.0.3
Version 6.0.2
Bug fixes
Fix non-published constructor for MediaPlaybackRateChangeEvent (#884)
Remove deprecated name property in SPM package file for the Mocker dependency on Swift 5.9 (#881) thanks to @nvelichkin
Fix accessing media tracking instance not on internal queue (#886)
Expose a public getter for EmitterEvent's payload and storeId properties (#879)
Version 6.0.1
Version 6.0.0
Screen time and engagement metrics
The 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 (#851)
- Enable lifecycle autotracking by default (#852)
visionOS support
The iOS tracker now supports visionOS! Moreover, it provides new APIs to track visionOS events such as open and dismiss immersive space.
Local event store automatic cleanup
The tracker 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 (#860)
-
Expose event store from emitter controller to be able to remove all events from database (#834) thanks to @danigutierrezayuso
-
Remove the use of the FMDB dependency in SQLiteEventStore (#823)
Tackling duplicate events
We have improved the trackers to avoid sending duplicate events to the Collector by making requests serially and adjusting request timeouts.
- Add request timeout to network connection and configuration (#836) thanks to @danigutierrezayuso
- Make network requests serially in network connection (#846)
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).
- Change default buffer option to single (#849)
- Flush events only when the buffer is full (#827) thanks to @danigutierrezayuso
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 (#819)
Improved concurrency model
We have reworked the internal concurrency model to be safer and more efficient.
- Improve concurrency model using a single internal dispatch queue (#820)
- Process tracked events on a serial background queue (#822)
iOS privacy manifest
We have added a SDK privacy manifest and made changes according to the latest recommendations from Apple.
- Add SDK privacy manifest file (#811)
- Remove available storage and total storage from platform context (#824)
- Add an option to override platform context properties (#865)
Other enhancements
- Return non-optional TrackerController instance from
createTracker
(#847) thanks to @Kymer - Enable representing self-describing data using Codable structs (#844)
- Match BaseEvent entities API with Android tracker (#867)
Bug fixes
- Fix bundle path check to handle symbolic links (#858) thanks to @mylifeasdog
Under the hood
Version 5.6.0
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 (#745)