Skip to content

Releases: snowplow/snowplow-ios-tracker

Version 6.0.7

16 Jul 10:51
20b1fea
Compare
Choose a tag to compare

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

10 Jul 10:37
b01a810
Compare
Choose a tag to compare

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

03 Jul 11:48
18f62a1
Compare
Choose a tag to compare

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

20 Jun 13:12
Compare
Choose a tag to compare

Bug fixes

  • Fix CrossDeviceParameterConfiguration constructor to be public (#894) thanks to @thomas-brx

Version 6.0.3

14 May 07:43
Compare
Choose a tag to compare

This release disables UIKit view swizzling in case automatic screen view tracking is disabled. It also adds the PrivacyInfo manifest to Cocoapods.

Bug fixes

  • Add the PrivacyInfo to the CocoaPods podspec (#888) thanks to @tottakai
  • Do not swizzle views if screen view autotracking is disabled (#889)

Version 6.0.2

03 Apr 09:57
Compare
Choose a tag to compare

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

14 Feb 12:57
Compare
Choose a tag to compare

Two bug fixes. A custom EventStore can now be used, and the media tracking PercentProgress event now includes the percent progress.

Bug fixes

  • Make EmitterEvent constructor public (#876)
  • Add percent progress to event (#875)

Version 6.0.0

01 Feb 16:12
Compare
Choose a tag to compare

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.

  • Add support for visionOS (#830)
  • Add VisionOS events and entities (#857)

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).

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

Under the hood

  • Set the platform event property to tv on tvOS and mobile on watchOS (#872)
  • Update copyright notices (#868)
  • Update CI build (#856)

Version 5.6.0

13 Oct 11:40
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 (#745)

Version 5.5.0

02 Oct 15:05
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 (#826)

Under the hood
Separate targets for unit and integration tests (#831)