Skip to content

Releases: snowplow/snowplow-ios-tracker

Version 4.0.0

01 Sep 09:21
Compare
Choose a tag to compare

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:

  • Fix default session timeout values to 30 minutes everywhere (#708)
  • Upgrade deprecated macOS and XCode versions in Github actions (#696)

Version 3.2.0

28 Jun 12:16
Compare
Choose a tag to compare

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:

  • Add eventIndex and firstEventTimestamp properties to client sessions (#682)
  • Add a customizable set of failure HTTP status codes for which collector requests should not be retried (#684)

Version 3.1.2

25 May 10:55
Compare
Choose a tag to compare

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

03 Mar 16:49
c873da2
Compare
Choose a tag to compare

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

28 Feb 10:29
d223aa3
Compare
Choose a tag to compare

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:

  • Add pause and resume to EmitterController (#672)
  • Add session callback (#664)

Under the hood:

  • Update copyright headers to 2022 (#669)
  • Update links to v3 docs in README (#665)

Snowplow iOS Tracker v3.0.2

23 Dec 16:33
Compare
Choose a tag to compare

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

17 Dec 09:40
Compare
Choose a tag to compare

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

23 Nov 10:41
bc52d18
Compare
Choose a tag to compare

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:

  • Fix Copyright notice in LICENSE file (#651)
  • Remove v1 API (#652)
  • Add tracker state management (#634)

Snowplow iOS Tracker v2.2.2

16 Aug 08:22
805dfc4
Compare
Choose a tag to compare

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:

  • Fix Session UserID not consistent among tracker instances (#630)
  • Fix crash on tvOS caused by access to filesystem (#621)

Snowplow iOS Tracker v2.2.1

02 Aug 12:26
2cf806e
Compare
Choose a tag to compare

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)