Tealium for iOS (Swift) release notes
2.10.1 (August 2023)
Low Impact Changes
- Removed data from the data layer that remained from a previous migration from the Objective-C library:
app_version
,uuid
,visitor_id
,last_track_event
andlast_session_created
. - Prevented an eventual crash on XCode 15 beta due to
+load
method being defined on anobj-c
category of a Swift class.
2.10.0 (May 2023)
Low Impact Changes
- Added the
getTagManagementWebView
method on the Tealium instance to access the internal TagManagement WebView so clients can set theisInspectable
flag and debug on XCode 14.3+. - Fixed a possible crash that could happen when comparing two
TealiumConfig
objects with aWKWebViewConfiguration
inside. - Fixed an edge case that could cause some of our internal files to be unintentionally backed up and reused on different devices.
2.9.2 (April 2023)
Low Impact Changes
- Improved launch performance in case of a large data layer.
- Fixed a bug where publish settings were not updated correctly in some internal modules.
2.9.1 (February 2023)
Low Impact Changes
- Introduced overrides for compound keys in JSON remote commands to replace default delimiters (, and :) with the new configuration keys:
keys_separation_delimiter
andkeys_equality_delimiter
. - Fixed a bug that could cause tealium internal files on device to be reset when updating the library.
2.9.0 (January 2023)
Medium Impact Changes
- Implemented the new Apple Search Ads API for iOS 14.5+ in the Attribution module.
- Added new static objects mapping and compound keys functionality to the JSON remote commands to increase flexibility of use.
Low Impact Changes
- Updated device names lookup file.
2.8.2 (October 2022)
Low Impact Changes
- Prevented visitor profile requests for old visitor identifiers from being executed after a visitor switch.
2.8.1 (October 2022)
Low Impact Changes
- No functional changes. Fixed eventual crashes for Carthage on prebuilt frameworks.
2.8.0 (October 2022)
Low Impact Changes
- Improved the Tag Management module code and thread security.
- VisitorService’s
requestVisitorProfile
now skips the timeout set by thevisitorServiceRefresh
config key. - Added an observable for
onVisitorId
changes in theTealium
class to notify new IDs whenresetVisitorId
is called or when we automatically switch to a new visitor. - Added the
visitorIdentityKey
config key for the new visitor switching API. - Migrated the
app_uuid
storage to the data layer to allow applications to delete it if needed. - Added
clearStoredVisitorIds
method inTealium
class to delete all stored visitor IDs for current and previous identities and reset the currentvisitorId
. - Added
decorateUrl
method toAdobeVisitorService
module to add Adobe query param to a URL.
New Features
- Added query parameter provider functionality for Adobe ECID in the Tag Management module to decorate the webview URL with Adobe query param.
- Added support in remote commands for command mappings to
all_events
andall_views
, which are triggered on each event and view, respectively. - Added support for visitor switching.
2.7.0 (September 2022)
Low Impact Changes
- Updated
SKAdNetwork
calls to useupdatePostbackConversionValue
if on iOS 15
High Impact Changes
- Removed initial call to
trackUserConsentCategories
this may effect you if you rely on that being called.
New Features
- Added config option
overrideConsentCategoriesKey
to override the name of the Tealium consent categories attribute, to support custom enforcement of server-side consent.
2.6.5 (May 2022)
Low Impact Changes
- No functional changes. Fixed a compile error on prebuilt frameworks.
2.6.4 (May 2022)
Low Impact Changes
- Improved logic for storing and updating
visitorId
for the visitor profile. - Added the config flag
enableBackgroundLocation
to enable location updates when the app is running in the background. - Fixed
dispatchExpiration
logic to accept -1 as never expire for queued tracking events. - Removed support for catalyst in the prebuilt frameworks to solve building errors.
- Fixed remote commands name and version tracking.
2.6.3 (March 2022)
Low Impact Changes
- Fixed a bug that could cause publish settings to be retrieved more than once.
- Fixed a bug that caused
dataLayer
variables withuntilRestart
expiration not to be deleted. - The following Location modules have been replaced with their respective getters:
createdGeofences
->getCreatedGeofences(completion:)
lastLocation
->getLastLocation(completion:)
monitoredGeofences
->getMonitoredGeofences(completion:)
2.6.2 (February 2022)
Low Impact Changes
- Fixed session counting logic to send session hit on second event of a session.
2.6.1 (February 2022)
Low Impact Changes
- Improved logs for enum based errors.
- Added the
sessionCountingEnabled
flag toTealiumConfig
to allow disabling of session counting for Tealium iQ accounts that use self-hosted JavaScript files.
2.6.0 (January 2022)
Medium Impact Changes
- Added a new
TealiumInAppPurchase
module to automatically track in app purchases.
Low Impact Changes
- Added remote commands names and versions to the data layer.
- Added a workaround in
isLowPowerModeEnabled
for the iOS 15 internal crash. - Internally refactored the handling of lifecycle events.
- Replaced internal usage of deprecated NSKeyedUnarchiver in the migrator from the legacy Teealiym Objective-C library.
- Fixed an issue that caused duplicated JSON remote commands the first time we requested the remote configuration.
- Fixed a typo in
gatherTrackData
.
2.5.1 (December 2021)
Medium Impact Changes
- Fixed import of Swift code in Objective-C files when compiling as a static library, such as when using Cocoapods without setting
use_frameworks!
or using Tealium React Native library.
Low Impact Changes
- Prevented automatic deep link tracking from digesting AppDelegate’s deep links, in order to allow other implementations to handle their own deep links.
- Fixed threading issues for
TagManagement
module andTealiumConfig
.
2.5.0 (November 2021)
High Impact Changes
- The AutoTracking module now supports SwiftUI and UIKit and is cross-platform (iOS, watchOS, tvOS, and macOS).
Medium Impact Changes
- Added SPM support for AutoTracking module.
- Added automatic handling of deep links for SceneDelegate and SwiftUI apps.
- Added an info.plist flag
TealiumAutotrackingDeepLinkEnabled
with the value of false to disable automatic deep link tracking. - Added support for manual tracking of deep links:
- SwiftUI: use
trackingAppOpenUrl()
View modifier orTealiumAppTrackable
container View. - UIKit: use
handleDeepLink()
from your AppDelegate or SceneDelegate.
- SwiftUI: use
Low Impact Changes
- Made all data layer and Collector’s variables available using the method
Tealium.gatherTrackData()
. - Renamed
TealiumKeys
toTealiumDataKeys
, for use withgatherTrackData()
. - Improved Codable support by ignoring non-codable values in release builds and causing a crash in debug builds.
- Reduced Geofences loading usage of main thread.
Known Issues
- CocoaPods platform iOS version is increased to 11 due to linting issues (but, if required, it’s safe to lower it to 9 with a post-install script).
- Carthage generates warnings with Xcode 13 (https://github.com/Carthage/Carthage/issues/3238).
2.4.6 (October 2021)
Low Impact Changes
- Fixed a bug that could cause a crash when deallocating a RemoteCommand before sending HTTP requests to our internal command.
- Fixed a bug that prevented data layer variables from being persisted for sessions longer than 30 minutes.
- Avoided registration for
isLowPowerModeEnabled
notification if thebatterySaver
feature is not enabled, avoiding possible crashes on an iOS 15 internal deadlock. - Fixed a bug where the tracking call queue would not get processed after receiving consent.
2.4.5 (September 2021)
High Impact Changes
- Fixed a bug that prevented tracking on Apple Watches.
- Fixed a bug that prevented deep link tracking in the AppDelegate.
Medium Impact Changes
- Fixed a bug that caused the lifecycle module to crash when migrating from the Objective-C library without the lifecycle module.
Low Impact Changes
- Made
visitorServiceDelegate
andwebViewDelegates
weak references in the config to avoid potential memory leaks. - Added a check to prevent two remote commands with the same
commandId
. - Added the new keys
deep_link_referrer_app
anddeep_link_referrer_url
that are added when a deep link is automatically detected and a referrer is present, or when passed to the methodTealium.handleDeepLink(_:referrer:)
. - Improved handling of query parameters for deep links by removing old query parameters when receiving multiple deep links during the same session.
- Updated the list of device model names to include latest iPhone, iPad and Apple Watch models.
2.4.4 (September 2021)
Medium Impact Changes
- Changed format of
device_resolution
anddevice_logical_resolution
from{height}x{width}
to{width}x{height}
to be consistent with Android and Obj-C libraries.
Low Impact Changes
- Improved encoding and decoding of data to reduce chances of failing and prevent tracking of some events.
- Added
device_logical_resolution
to the data layer. - Avoided possible conflicts between Tealium managed geofences and application ones.
- Allowed DeepLinks to be handled before Tealium initialization is complete.
- Fixed a bug where changing
loggerType
in the configuration didn’t reflect in the correct logger instance for custom loggers. Date
objects passed to the data layer are converted toISO8601
formatted strings.
2.4.3 (September 2021)
- Version skipped due to publishing issues.
2.4.2 (August 2021)
Low Impact Changes
- Finalized fix on bug that caused IDFA and ATT authorization status to not update at runtime.
2.4.1 (July 2021)
Low Impact Changes
- Fixed bug that caused IDFA and ATT authorization status to not update at runtime.
- Fixed bug that caused migration from the Objective-C library to be disabled by default.
2.4.0 (July 2021)
Medium Impact Changes
- Storage updates to prevent unnecessary file backups.
Low Impact Changes
- Added Media module which tracks streaming media in apps through the use of custom events.
- Removed legacy authentication option from Remote HTTP Command.
2.3.2 (June 2021)
Medium Impact Changes
- Updated the persistent storage module to use
Application Storage
instead of theCaches
directory. This prevents persistent data from being deleted when upgrading to iOS 14.7+.
Low Impact Changes
- Updated the
Connectivity
module to use one instance ofCTTelephonyNetworkInfo
instead of instantiating multiple times. - Removed the cookie migration logic that was used to migrate cookies from the
UIWebView
to theWKWebView
. - Updated the RegEx that was used to validate urls. This allows more uncommon URLs to be used, such as localhost, local IPs, and URLs with ports.
2.3.1 (May 2021)
Low Impact Changes
- Minor fix to revert consent policy key back to
policy
. - Verified that the
decline_consent
event is not queued or dropped.
2.3.0 (April 2021)
High Impact Changes
- Added the option to set a
WKProcessPool
instance on theTealiumConfig
object for the Tealium Tag Management webview to use to avoid cookie synchronization issues. - Removed the data layer value
call_type
and replaced it withtealium_event_type
. When the event type is a standard track and not a screen view, thetealium_event_type
value is nowevent
instead oflink
.
If your load rules or attribute rules are configured to look for call_type
, update them to look for tealium_event_type
instead. If they were checking for the value link
on event types, update the condition to check for event
.
Low Impact Changes
- Minor fix to resolve a small memory leak in the RemoteCommands module.
- Minor fix in the lifecycle module that was sending the
lifecycle_diddetectcrash=true
on sleep and wake events. - Custom consent policies are now supported.
2.2.2 (January 2021)
Low Impact Changes
- Added the ability to set an expiration for the user’s consent status and a callback that is triggered when the consent has expired. Learn more about consent management.
- Added public method to reset the user’s Visitor ID.
- Removed Lifecycle listeners on deinitialization of Tealium.
2.2.1 (January 2021)
Low Impact Changes
- Removed
TealiumCore
as an embedded framework as it was causing AppStore submission errors when using Carthage as a dependency. - Re-added
TealiumAttribution
scheme withintealium-swift.xcodeproj
which permits the framework to be built by Carthage.
2.2.0 (November 2020)
New Features
- Added the Timed Events feature which tracks the time between specified events.
Low Impact Changes
- Fixed a bug that made it impossible to set a custom endpoint for the Collect module.
- Renamed the
collectOverrideURL
tooverrideCollectURL
for consistency with other libraries. - Introduced new URL override option for batched events
overrideCollectBatchURL
. - Added
device_manufacturer
to the data layer.
2.1.1 (October 2020)
New Features
- Added a utility that automatically migrates existing persistent data if upgrading from the Objective-C or Swift 1.x library.
- Added support for the
SKAdNetwork
within theTealiumAttribution
module.
Low Impact Changes
- Added the value of the
ATTrackingManager.AuthorizationStatus
to the dispatch payload asdevice_tracking_authorization
if theTealiumAttribution
module is enabled.
Learn more about Attribution in iOS 14+ and about support for ATTransparency
and SKAdNetwork
.
2.1.0 (October 2020)
New Features
- The remote commands feature was updated with a new option to use a remote or locally hosted JSON configuration files, removing the requirement for a webview. If using the Remote Command tag option, in iQ Tag Management, the webview is required. Learn more about JSON controlled remote commands.
- Added support for Approximate Location Tracking (iOS 14+) with the function
requestTemporaryFullAccuracyAuthorization(purposeKey:)
through theTealiumLocation
module. Learn more about the iOS 14 Location Updates and requesting temporary full authorization
Medium Impact Changes
- Lower-cased the value of the
platform
variable to correct mobile session timer. Previously, sessions were measured similarly to web (30 minutes of consistent activity). By lower-casing theplatform
variable, the Customer Data Hub recognizes the incoming data as a mobile session and the session length is shortened to 2 minutes.
Update your load rules if you have Load or Attribute Rules configured checking for case sensitive platform
values such as iOS
vs ios
.
Low Impact Changes
- Add
origin: mobile
to the track payload
2.0.0 (July 2020)
New Features
- New CCPA API added to the Consent Manager module. Learn more in the Consent Manager documentation.
- Native Hosted Data Layer support
- Automatic Deep Link tracking that will add deeplink urls, universal link urls, and query string parameters to the data layer when the user opens the app from one of these methods.
- Ability to start a Trace by scanning a QR Code from the Customer Data Hub UI
- Added a new
TealiumLogger
that uses the Apple preferredOSLog
vs theprint
function. There is still an option to use print by setting thelogType
property on theTealiumConfig
object. Read more about Logging. - Combined several ancillary modules into the Core library for faster and more straightforward installation. See the modules section for more information.
- Updated the
track()
method to accept aDispatch
type ofView
orEvent
. This allows us to support onetrack
method and provide more clarity around screen and event tracking. Read more about the updatedtrack()
method. - Support for more expiration options for data variables. See Data layer for more information.
- Support for native session counting in lieu of using the session counting logic within utag.js. This provides more accurate session counts, and fixes some edge cases where background activities triggered new sessions, resulting in higher than expected session counts.
⚠️Important⚠️ If the Tag Management Module is being used as the dispatch option, you must also update the mobile.html
template within the associated TiQ account/profile. If this action isn’t performed, duplicate sessions are recorded in Tealium. Learn more about how to update a template or contact your Account Manager for assistance.
High Impact Changes
- Updated the API to be more in line with Swift best practices
- Optimized the modules system for better performance
- Optimized the individual modules for better performance
- Removed multiple delegate options for API simplicity
- Improved connectivity checks -
NWPathMonitor
now used on supported devices - Removed the CrashReporter module from the project and added to a separate repository for those that want to use it
- Removed
NotificationCenter
in the RemoteCommands module and replaced it with the Delegate pattern
Low Impact Changes
- Added more protocols and result types for testability
- Updated class names for consistency with other Tealium libraries
- Added more inline code documentation
- Updated unit tests and added performance testing
For previous release notes prior to 2.x, see Tealium for Swift 1.x.
This page was last updated: October 6, 2023