Tealium for iOS (Swift) release notes (By Date)
May 1, 2024
Medium Impact Changes
- Improved local
RemoteCommands
to accept files path with or without the extension - Fixed remote commands and remote settings refresh mechanism and caching
- Improved remote commands and remote settings retry mechanism
- Allow URL
RemoteCommands
to use a bundled local file with thecommandId
as the name while downloading the remote file or if it can’t be downloaded and is not cached - Added a
TagManagementWebview
refresh after a session is expired
March 1, 2024
Low Impact Changes
- Fixed Privacy Manifest
NSPrivacyAccessedAPITypeReasons
for the disk space category.
February 1, 2024
Medium Impact Changes
- Now officially supporting XCode 15.
- Increased minimum supported operating system versions: iOS 12.0, TvOS 12.0, and MacOS 10.14.
- Added Privacy Manifest in the SDK for disclosing the privacy API usage reasons. Learn more
January 1, 2024
Medium Impact Changes
- Increased minimum supported operating system versions: iOS 11.0, TvOS 11.0, WatchOS 4.0, and MacOS 10.13.
- Changed the storage default directory on disk for TvOS from
Application Support
toCaches
becauseApplication Support
was not supported on the TVs. - Removed the
iAd
framework from theAttribution
module because it was disabled by Apple and will be removed soon.
Low Impact Changes
- Implemented the option to disable the whole SDK from remote settings.
- Updated the list of device names, including Mac devices and the newest iOS devices.
- Fixed
TealiumVisitorProfile
parsing to gracefully acceptnull
strings. - Improved error logs readability.
- Updated list of iOS device models.
Known Issues
- This is our final release targeting XCode 14. Note that XCode 15 dropped support for iOS 11. To install on XCode 15, you must manually increase the minimum deployment target of the Tealium library to iOS 12 after installing it or the app will crash on launch. For more information, see TEALIUM SWIFT BUG: Runtime crash on launch with Xcode 15 Release.
August 1, 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.
May 1, 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.
April 1, 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.
February 1, 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.
January 1, 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.
October 1, 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 parameter 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 parameter.
- 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.
September 1, 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.
May 1, 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.
March 1, 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:)
February 1, 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.
January 1, 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 Tealium 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
.
December 1, 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
.
November 1, 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).
October 1, 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.
September 1, 2021
- Version skipped due to publishing issues.
August 1, 2021
Low Impact Changes
- Finalized fix on bug that caused IDFA and ATT authorization status to not update at runtime.
July 1, 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.
June 1, 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.
May 1, 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.
April 1, 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.
January 1, 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.
November 1, 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.
October 1, 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
July 1, 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.