# Change Log - 1.7.3 Mar 2025 - ProGuard rules updated to prevent mix case class names - 1.7.2 Feb 2025 - Disable R8's full mode to fix ProGuard issues - 1.7.1 Jan 2025 - Update targetSdk version to 35 - Update Android Gradle Plugin to 1.8.22 - 1.7.0 Nov 2024 - `TealiumInitProvider` added to automatically execute the minimum amount of Tealium work on the Main Thread at app launch - This will register for Application/Activity lifecycle events at launch - This allows for `Tealium` instances to be safely created off of the Android Main Thread. - `Tealium` instances have a grace period of 10s (by default) from launch to be created in order to ensure accurate Activity tracking - This time limit is configurable either by: - updating the content-provider's meta-data using AndroidManifest merge rules - or by removing it using AndroidManifest merge rules, and calling `ActivityManager.getInstance(context, <timeout in seconds>)` in `Application.onCreate()` before any `Tealium` instances are created. - `Batching.batchSize` now actively restricts size to be between 1 and 10 - `Dispatch.remove(key: String)` method added to allow for removing data - this was added to the `interface` in a backward compatible way, but any custom implementations are advised to override the default implementation. - BugFix: RemoteCommands not being processed when expected - Remote Command processing now inline with [tealium-swift](https://github.com/Tealium/tealium-swift) - RemoteCommand events are now processed earlier in the dispatch process, unless explicitly forbidden by a `DispatchValidator` (e.g. Consent or a custom supplied `DispatchValidator`) - The exceptions to this are for Batching, Connectivity and Low Battery. - __important__ - Users upgrading to `kotlin-core:1.7.0` are advised to update `kotlin-remotecommand-dispatcher` to `1.5.0` to avoid the possibility of duplicated events - BugFix: Queued events sent on backgrounding sometimes caused ANRs or OOM - Queue dispatches are now dispatched in batches according to the configured batch size to minimize memory requirements - These dispatches are also processed on the Tealium processing thread. - RemoteCommandDispatcher 1.5.0 - RemoteCommand events no longer processed on `onDispatchSend` but only on `onRemoteCommandSend` (WebView controlled) and `onProcessRemoteCommand` (JSON controlled) - __important__ - Users upgrading to `kotlin-remotecommand-dispatcher:1.5.0` are advised to update `kotlin-core` to `1.7.0` to avoid the possibility of missed events - Location 1.1.3 - BugFix: Stopping location tracking threw exceptions under some conditions - 1.6.1 Oct 2024 - Added proper error handling for loadFromFile in JsonLoader - VisitorService 1.2.1 - Added proper error handle when saving VisitorProfile - 1.6.0 May 2024 - `HttpClient` now supports only retrying on retryable response codes. - BugFix: `ResourceRetriever` refresh interval affecting library settings being fetched too often - BugFix: Reinstated missing `ResourceEntity` class - RemoteCommandDispatcher 1.4.0 - Adding a RemoteCommand with a remote URL config, now supports falling back to loading from an `Asset` names `{command id}.json` on the first launch. - if a file name is also provided, then it will use that name to lookup the `Asset` - It is also now safe to omit the `.json` extension on the `filename` parameter when adding a new remote command, though the `.json` extension of the actual file should still be present. - BugFix: Refresh interval was not being adhered to - *Note* - `com.tealium:kotlin-core` module dependency minimum raised to `1.6.0` - TagManagementDispatcher 1.2.2 - WebView is refreshed on new session to ensure latest IQ configuration is available. - 1.5.5 Sep 2023 - BugFix: proguard adjustment resolve missing `BatchDispatch$Companion` class. - Minor lint warning fixes - 1.5.4 Aug 2023 - Core 1.5.4 - Session Data Expiration BugFix: fixes an issue whereby session scoped data may not be expired on launch - Event Router events Buffering: buffers events until sdk is ready so events are not missed during startup - Database Lock crash BugFix: Some uncaught exceptions in persistence led to possible crashes - ProGuard rules updates to reinstate incorrectly obfuscated `BatchDispatch` class - AdIdentifier 1.1.2 - BugFix: DataLayer writes moved onto Tealium background thread - 1.5.3 Jun 2023 - Database BugFix: add database status check before performing writable actions, and allow event queueing until database is fully operational - Library Settings BugFix: update how remote settings were fetched and saved - Module Manager BugFix: update to thread-safe collection - 1.5.2 Apr 2023 - Connectivity Collector BugFix: - Fixes an issue in the event where there is a blank string returned from `telephonyManager.networkOperator` - Deep Link Reporting BugFix: - Deep Link handling limited to Activities launched with Intents where action == Intent.ACTION_VIEW - Empty Uris are ignored, and deep links that match what is already stored is a no-op - Handling pushed onto Tealium background thread. - 1.5.1 Oct 2022 - BugFix - Fixes an edge case where events can arrive at dispatchers in the incorrect order - 1.5.0 Oct 2022 - Visitor Switching - Additional TealiumConfig option `visitorIdentityKey` to configure where to find a known identity in the DataLayer - Known identities are hashed and linked to the `tealium_visitor_id` to allow better switching between returning identities - Additional listeners - `VisitorIdUpdatedListener` - notifies when the visitor id has been updated, either as a result of switching identities or of resetting the visitor id - `DataLayerUpdatedListener` - `onDataUpdated(String, Any)` - notifies that a value has been updated in the DataLayer - `onDataRemoved(Set<String>)` - notifies that the given keys have been removed from the DataLayer, either by user interaction or data expiration - RemoteCommandDispatcher 1.2.0 - Support for default mapping `all_events` and `all_views` in the JSON mappings file to enable triggering specified commands in response to every view/event - TagManagement 1.2.0 - `QueryParameterProvider` - allows additional parameters to be added to the URL used for the TagManagement module - Improved WebView instantiation and page load management - Kotlin Dependency updates - Stdlib: 1.6.21 - Coroutines: 1.6.2 - 1.4.3 Sep 2022 - Core 1.4.3 - DeviceCollector Bug fix - Correct calculation for tealium_logical_resolution - TagManagement 1.1.3 - Bug fix - Relocate sessionCountingEnabled to fix miscount on fresh launch - VisitorService 1.1.1 - Bug fix - Move VisitorService profile override to earlier initialization - Location: Add missing Proguard rules for new classes - 1.4.2 Jun 2022 - Core 1.4.2 - Add `overrideConsentCategoriesKey` to `TealiumConfig` to allow for a custom consent categories key - 1.4.1 Jun 2022 - Core 1.4.1 - Fix: Update Consent Status to return string instead of enum value - 1.4.0 May 2022 - Core 1.4.0 - Add `gatherTrackData` to exposed all datalayer and collectors variables - 1.3.3 Apr 2022 - Core 1.3.3 - Update remote command dependency - RemoteCommandDispatcher 1.1.1 - Add remote command names and versions to datalayer - 1.3.2 Mar 2022 - Core 1.3.2 - `events` property added to `TealiumConfig` to enable adding listeners on startup, as some events could be missed during startup. - Lifecycle 1.1.1 - Fix: Default values for some attributes causing missed events when combined with TagManagement - InAppPurchase 1.0.1 - Additional `purchase_date` key provided in ISO-8601 format - Tag Management 1.1.2 Feb 2022 - Add `sessionCountingEnabled` to `TealiumConfig` to enable/disable session counting for TealiumIQ - 1.3.1 Feb 2022 - Core 1.3.1 - Stability fix for failed WebView creation - Stability fix for connectivity exception handling - InApp Purchase auto tracking 1.0.0 release. - 1.3.0 Nov 2021 - Core 1.3.0 - Missing variables reinstated from the Java library: - Default: `tealium_random` and `was_queued` - DeviceCollector - `device_battery_percent` and `device_ischarging` - TimeCollector - `timestamp_epoch` - DataLayer performance improvements, and additional support for storing `JSONArray` objects - Dates now get formatted as ISO 8601 as standard - Dependency updates to Kotlin, Coroutines, Android Target Version, AGP 7, Java 11, MockK, Robolectric - BugFixes: - Opaque URI's are now appropriately handled by the DeepLinkHandler - Deprecations to unused code - AutoTracking 1.0.0 - New activity tracking module to automatically track screen view events - AdIdentifier 1.1.0 - Support for new AppSet identifier - Dependency Updates in line with Core. - CollectDispatcher 1.1.0, TagManagementDispatcher 1.1.0 - Serialization standardized to use `JsonUtils` - Dependency Updates in line with Core. - CrashReporter 1.1.0, HostedDataLayer 1.1.0, InstallReferrer 1.1.0, Lifecycle 1.1.0, Location 1.1.0, Media 1.1.0, RemoteCommandDispatcher 1.1.0 - Dependency Updates in line with Core. - VisitorService 1.1.0 - Additional configuration option to override the Tealium Profile name to use when updating a Visitor: `config.overrideVisitorServiceProfile` - Serialization/Deserialization performance improvements - Dependency Updates in line with Core. - BugFix: - Date parsing exception when dates are 0 - 1.2.8 Oct 2021 - Core 1.2.8 - `config.logLevel` added to enable overriding the log level derived from the Environment - `consent_last_updated` timestamp is now added to the payload by the Consent Manager for each event - Payload key constants migrated to `Dispatch.Keys.XXX` for ease of access - Bug Fixes - `app_name` now falls back to a non-localized version of the app label - Event router crashes caused by threading - `screen_title` re-added to the TealiumView payload by default, and set to the viewName when one is not provided in the context data - Unnecessary logging removed when trying to load `tealium-settings.json` as an Asset - Where multiple deep links occur during a Session, previous deep link params are now removed from the datalayer prior to adding the new ones - CollectDispatcher 1.0.6, HostedDataLayer 1.0.4, RemoteCommandDispatcher 1.0.5, TagManagement 1.0.7 - event key references updated to use the new `Dispatch.Keys.XXX` - note, these are only present in Core 1.2.8+ so should ensure the latest version is in use. - 1.2.7 Sep 2021 - Core 1.2.7 - Support for logical resolution in DeviceData - 1.2.6 Jul 2021 - Core 1.2.6 - Add support for existingVisitorId to TealiumConfig - Add support to override profile for Consent Logging using consentManagerLoggingProfile - Consent Logging event routed through all enabled Dispatchers - Update values for app_build and app_version - Tag Management Dispatcher 1.0.6 - Support for Consent Logging profile override - Collect Dispatcher 1.0.5 - Support for Consent Logging profile override - Visitor Service 1.0.5 - Bug fix: deserializing stored long values - 1.2.5 May 2021 - Core 1.2.5 - BugFix: HttpClient post update fixes issues with consent logging failures. - HttpClient execution moved onto IO dispatcher for better asynchronous performance - 1.2.4 Apr 2021 - Core 1.2.4 - New enabled_modules and enabled_modules_versions data layer keys added in keeping with the Swift SDK. Both are arrays of strings, containing a sorted list of Modules in use and their Version number - latest versions of all modules required to retrieve their version. note module names have also been changed from UPPER_SNAKE_CASE to PascalCase to match Swift. - New Config option remoteApiEnabled to allow disabling of remote_api events when using the RemoteCommands and TagManagement modules - New Config option overrideCollectProfile to allow overriding the value of tealium_profile in the event payload, thus routing events to a different Tealium Profile to the one set on the TealiumConfig object. - BugFix - added support for both application/json and x-www-form-urlencoded content types when using the HttpRemoteCommand - BugFix - fixed an issue with specific collections not being encoded correctly. - 1.2.3 Mar 2021 - Core 1.2.3 - Consent Management: Add option for setting a custom consent policy. - Add new `device_language`, `os_name` to DeviceCollector - Crash Reporter 1.0.2 - Update keys for CrashReporter: `crash_exception_name` changed to `crash_name`, `crash_exception_cause` changed to `crash_cause` - 1.2.2 Mar 2021 - Core 1.2.2 - Add `request_uuid` to event/view payload - TagManagement Dispatcher 1.0.4, RemoteCommand Dispatcher 1.0.3 - Bug Fix: Route HttpRemoteCommand to background thread for execution. - Test updates - 1.2.1 Mar 2021 - Proguard and Consumer Rules revision; some public classes were missed initially, and the consumer rules have been revised. - Core 1.2.1, Collect Dispatcher 1.0.3, TagManagement Dispatcher 1.0.3, Install Referrer 1.0.2, Lifecycle 1.0.3, Location 1.0.3, VisitorService 1.0.3, RemoteCommand Dispatcher 1.0.2, Hosted DataLayer 1.0.2, Crash Reporter 1.0.1, Ad Identifier 1.0.1 - 1.2.0 Jan 2021 - Consent Management - Consent Expiration - Introduces the ability to set an expiration for provided consent. - Deprecated consentManagerEnabled config property; setting a valid ConsentPolicy will automatically enable the Consent Manager. - Bug Fix - Incorrect consent collector logic - Visitor Id - new method to allow manually regenerating a Visitor Id for the device. - Proguard - Initial proguard rules added to generated binaries and consumer proguard rules. - AdIdentifier 1.0.0 - Initial release of the AdIdentifier module - if available, then the ad identifier will be added to each Dispatch - CrashReporter 1.0.0 - Initial release of the CrashReporter module - uncaught exceptions causing a crash are recorded and any crash data is sent on the next dispatch when the app is next launched. - Collect Dispatcher 1.0.2, Hosted DataLayer 1.0.1, InstallReferrer 1.0.1, Lifecycle 1.0.2, Location 1.0.2, RemoteCommand Dispatcher 1.0.1, TagManagement Dispatcher 1.0.1, Visitor Service 1.0.2 - Proguard - Initial proguard rules added to generated binaries and consumer proguard rules. - 1.1.0 Nov. 2020 - Timed Events support for reporting the time taken between user events of interest. - New device_model and device_manufacturer data keys provided by the DeviceCollector - Automated unit and instrumented tests for PRs into master using Github Actions. - Collect Dispatcher 1.0.1 - Additional Collect URL overrides - Test coverage increase - Hosted Datalayer 1.0.0 - Test coverage increase - Lifecycle 1.0.1 - Bug Fix: missing autotracked key on sleep events - Test coverage increase - Location 1.0.1 - Bug Fix: issue with automatically adding nearby geofences - Test coverage increase - Visitor Service 1.0.1 - Non-breaking change for testability purposes - Test coverage increase - 1.0.0 Oct. 2020 - New and improved modular Tealium Kotlin for Android - Release includes modifications based on feedback - JSON controlled Remote Commands - Hosted Data layer support - 0.1.2 Sept 2020 - Tealium multi-instance management added - Some utilities/modules updated to better support multiple instances - 0.1.1 Sept 2020 - Maven dependency fix - Additional Dispatch payload logging - 0.1.0 Beta Release: August 2020 - Tealium Core - Support for the following modules: - Tag Management Dispatcher - Collect Dispatcher - Install Referrer - Location - Lifecycle Tracking - Visitor Service - Remote Commands - Hosted Data Layer - Crash Reporter