• Platforms
  • Partners
  • Forums
  • TLC Tealium Learning Center Tealium Learning
    Community
  • Discussions & Ideas Dicussions & Ideas
  • Product Guides Product Guides
  • Knowledge Base Knowledge Base
  • Developer Docs Developer Docs
  • Education Education
  • TLC Blog TLC Blog
  • Support Desk Support Desk
  • CDH Customer Data Hub Customer Data Hub

Table of Contents

  • Collectors
    • Usage
    • Custom Collectors
  • Dispatchers
    • Usage
    • Custom Dispatchers
  • Recommended Modules
    • Base Implementation
    • Client-side
    • Server-side
  • Install Modules
    • CocoaPods
    • Carthage
    • Swift Package Manager
IOS SWIFT

Modules

A list of the available modules.

The Tealium Swift library is designed around a modular architecture. Required modules must be specified when the library is initialized in the TealiumConfig instance.

All modules have a dependency on TealiumCore. Modules are separated into Collectors and Dispatchers depending on their purpose.

Collectors

Collectors are modules that gather supplemental information from the device and append it to the data layer before it’s transmitted to the Tealium Customer Data Hub. Some collectors are included in the core library, while others are optional and installed as separate modules.

The following table lists the available collectors. Default collectors are denoted by a * next to the collector name.

Collector Name TealiumConfig Reference
AppData* Collectors.AppData
Attribution Collectors.Attribution
Connectivity* Collectors.Connectivity
Device Collectors.Device
Crash Collectors.Crash
AutoTracking Collectors.AutoTracking
Lifecycle Collectors.Lifecycle
Location Collectors.Location
VisitorService Collectors.VisitorService

These modules are included with the core library, but are enabled or disabled using the TealiumConfig collectors property as described below

Usage

To add a Collector, specify it in the collectors property of the TealiumConfig instance:

import TealiumCore
import TealiumLifecycle

let config = TealiumConfig(account: "ACCOUNT",
                               profile: "PROFILE",
                               environment: "ENVIRONMENT",
                               datasource: "DATASOURCE")

// Adds desired Collectors. If omitted, default Collectors are added.
config.collectors = [Collectors.AppData, Collectors.Lifecycle]                               

To only use the default collectors, omit or comment out the config.collectors line from your initialization code.

Custom Collectors

Although custom collectors are generally not required, it is possible to build a custom collector by creating your own class conforming to the Collector protocol. The following example shows a simple collector that gathers the current weekday and appends it to the data layer for each tracking call.

class MyDateCollector: Collector {
    var id = "MyDateCollector"

    var data: [String : Any]? {
        ["day_of_week": dayOfWeek]
    }

    var config: TealiumConfig

    required init(config: TealiumConfig,
                  delegate: ModuleDelegate?,
                  diskStorage: TealiumDiskStorageProtocol?,
                  completion: (ModuleResult) -> Void) {
        self.config = config
    }

    var dayOfWeek: String {
        return "\(Calendar.current.dateComponents([.weekday], from: Date()).weekday ?? -1)"
    }
}

// Add collector to your config instance prior to Tealium initialization

class TealiumHelper {
	// ...
	func startTracking() {
		let config = TealiumConfig(account: "ACCOUNT",
                               profile: "PROFILE",
                               environment: "ENVIRONMENT",
                               datasource: "DATASOURCE")

// Add desired Collectors. If omitted, default Collectors are added.
config.collectors = [Collectors.AppData,
					  Collectors.Lifecycle,
					  MyDateCollector.self]   
					  self.tealium = Tealium(config: config) { _ in }
	}
}

Dispatchers

Dispatchers are modules that send the data from your data layer and send it to a Tealium endpoint. The following dispatchers are currently available:

Dispatcher Name TealiumConfig Reference
Collect Dispatchers.Collect
RemoteCommands Dispatchers.RemoteCommands
TagManagement Dispatchers.TagManagement

At least one dispatcher is required. If no dispatchers are specified, your data is not sent anywhere.

Usage

To add a Dispatcher, specify it in the dispatchers property of the TealiumConfig object:

import TealiumCore
import TealiumLifecycle

let config = TealiumConfig(account: "ACCOUNT",
                               profile: "PROFILE",
                               environment: "ENVIRONMENT",
                               datasource: "DATASOURCE")

// Add desired Collectors. Do not include if you want to use compiled Collectors
config.dispatchers = [Dispatchers.Collect]                               

Custom Dispatchers

Although custom dispatchers are generally not required, it is possible to build a custom Dispatcher by creating your own class conforming to the Dispatcher protocol. The following example shows a simple dispatcher that prints the event name for each track request. A custom Dispatcher may be useful if you wish to send data to your own custom endpoint in addition to the Tealium endpoints.

class MyCustomDispatcher: Dispatcher {
    var isReady: Bool
    var id = "MyCustomDispatcher"
    var config: TealiumConfig

    required init(config: TealiumConfig, delegate: ModuleDelegate, completion: ModuleCompletion?) {
        self.config = config
        self.isReady = true
    }

    func dynamicTrack(_ request: TealiumRequest, completion: ModuleCompletion?) {
        switch request {
        case let request as TealiumTrackRequest:
            print("Track received: \(request.event ?? "no event name")")
            // perform track action, e.g. send to custom endpoint
        case _ as TealiumBatchTrackRequest:
            print("Batch track received")
            // perform batch track action, e.g. send to custom endpoint
        default:
            return
        }
    }
}

// Add dispatcher to your config instance prior to Tealium initialization
class TealiumHelper {
	// ...
	func startTracking() {
		let config = TealiumConfig(account: "ACCOUNT",
                               profile: "PROFILE",
                               environment: "ENVIRONMENT",
                               datasource: "DATASOURCE")

   // add desired Dispatchers
   config.dispatchers = [Dispatchers.Collect, MyCustomDispatcher.self]      
					  self.tealium = Tealium(config: config) { _ in }
}

Recommended Modules

Base Implementation

For a base implementation, the following list of modules are recommended. At least one Dispatcher needs to be enabled, depending on which Tealium products you plan to use.

  • AppData Collector
  • Device Collector
  • Lifecycle Collector

Client-side

In addition to the base modules, these modules enable the Tealium library to process data client-side using Tealium iQ.

  • TagManagement Dispatcher - Required to use Tealium iQ
  • RemoteCommands Dispatcher - Only required if you need Remote Commands functionality

Server-side

In addition to the base modules, these modules enable the library to send data to Tealium’s server-side products (EventStream, AudienceStream, Event Data Framework).

  • Collect Dispatcher - Required to use any server-side products
  • Visitor Service Collector - Only required to retrieve Visitor Profiles from Tealium AudienceStream.

Install Modules

Install the modules with CocoaPods or Carthage.

CocoaPods

See Install with CocoaPods for instructions on including and excluding specific modules.

Carthage

When you install with Carthage, you must explicitly import the modules you require. You may import all modules if you prefer, and use the module list, as described earlier, but your app is lighter if you only import the modules you need. See Install with Carthage for instructions on including/excluding specific modules.

Swift Package Manager

See Install with Swift Package Manager for instructions on including and excluding specific modules.

Identity Resolution
Working with Objective-C

 
  • Mobile
  • Getting Started
    • Overview
    • Quick Start Guide
    • Mobile Concepts
    • Client-Side
    • Server-Side
    • Tracking Webviews
    • Data Layer
    • Consent Management
    • Event Batching
    • User Location and Geofencing
    • Deep Links
    • Timed Events
    • Trace
    • Hosted Data Layer
    • Feature Comparison
    • Troubleshooting
  • Remote Commands
    • Overview
    • How It Works
    • Integrations
      • AppsFlyer
      • Braze
      • Contentsquare
      • Facebook
      • Firebase
      • Kochava
      • Usabilla
  • Android (Java)
    • Overview
    • Install
    • Track
    • Data Layer
    • Data Management
    • Consent Management
    • Module List
      • Ad Identifier Module
      • Crash Reporter Module
      • Install Referrer Module
      • Lifecycle Tracking Module
      • Location Module
      • Optimizely X Tracking Module
    • Android TV
    • Android Wear
    • API Reference
      • ConsentManager
      • DataSources
      • Lifecycle
      • Tealium
      • Tealium.Config
      • TealiumLocation
    • Release Notes
  • Android (Kotlin)
    • Overview
    • Install
    • Track
    • Data Layer
    • Consent Management
    • Identity Resolution
    • Module List
      • Ad Identifier Module
      • Collect Module
      • Collectors Module
      • Crash Reporter Module
      • Install Referrer Module
      • Lifecycle Tracking Module
      • Location Manager Module
      • RemoteCommands Module
      • Tag Management Dispatcher Module
      • Visitor Service Module
    • Android TV
    • API Reference
      • ConsentCategory
      • ConsentManager
      • CurrentVisit
      • DataLayer
      • Lifecycle
      • LocationManager
      • Tealium
      • TealiumConfig
      • VisitorProfile
      • VisitorService
    • Release Notes
  • Cordova
    • Overview
    • Install
    • Track
    • Data Management
    • Module List
      • Ad Identifier Module
      • Crash Reporter Module
      • Install Referrer Module
    • API Reference
    • Release Notes
  • Flutter
    • Overview
    • Install
    • Track
    • Consent Management
    • Data Management
    • API Reference
    • Release Notes
  • iOS (Objective-C)
    • Overview
    • Install
    • Track
    • Data Layer
    • Data Management
    • Consent Management
    • Tag Management
    • Module List
      • Lifecycle Tracking Module
    • tvOS
    • watchOS
    • API Reference
    • Release Notes
  • iOS (Swift) 1.x
    • Overview
    • Install
    • Track
    • Data Layer
    • Data Management
    • App Extensions
    • Identity Resolution
    • Consent Management
    • Modules
    • Module List
      • AppData Module
      • Attribution Module
      • AutoTracking Module
      • Collect Module
      • Connectivity Module
      • CrashReporter Module
      • DataSource Module
      • DefaultStorage Module
      • Delegate Module
      • DeviceData Module
      • DispatchQueue Module
      • FileStorage Module
      • Lifecycle Module
      • Location Module
      • Logger Module
      • PersistentData Module
      • RemoteCommands Module
      • TagManagement Module
      • VisitorService Module
      • VolatileData Module
    • Feature Comparison
    • Working with Objective-C
    • API Reference
      • TealiumConfig
      • TealiumConsentCategories
      • TealiumConsentManagerDelegate
      • TealiumConsentManager
      • TealiumInstanceManager
      • TealiumPersistentData
      • TealiumVolatileData
      • Tealium
    • Release Notes
  • iOS (Swift) 2.x
    • Overview
    • Install
    • Track
    • Data Layer
    • Consent Management
    • App Extensions
    • Identity Resolution
    • Modules
    • Module List
      • AppData Module
      • Attribution Module
      • AutoTracking Module
      • Collect Module
      • Connectivity Module
      • CrashReporter Module
      • DeviceData Module
      • Lifecycle Module
      • Location Module
      • RemoteCommands Module
      • TagManagement Module
      • VisitorService Module
    • Working with Objective-C
    • API Reference
      • Tealium
      • TealiumConfig
      • TealiumConsentCategories
      • TealiumConsentManager
      • TealiumDataLayer
      • TealiumInstanceManager
    • Release Notes
  • NativeScript
    • Overview
    • Install
    • Track
    • API Reference
      • Tealium
      • TealiumConfig
    • Release Notes
  • React Native 1.x
    • Overview
    • Install
    • Track
    • API Reference
    • Release Notes
  • React Native 2.x
    • Overview
    • Install
    • Track
    • API Reference
    • Release Notes
  • Unity
    • Overview
    • Install
    • Track
    • API Referencee
  • Xamarin
    • Overview
    • Install
    • Track
    • Data Management
    • Consent Management
    • API Reference
    • Release Notes
  • Web
  • Getting Started
    • Overview
    • Quick Start Guide
    • Web Concepts
  • Adobe Launch
    • Overview
    • Install
    • Data Layer
  • AMP
    • Install
    • Track
    • Data Layer
    • Overview
  • Angular
    • Install
    • Track
    • API Reference
    • Overview
  • Google Tag Manager
    • Overview
    • Data Layer
    • Install
  • JavaScript (Web)
    • Install
    • Track
    • Data Layer
    • Overview
    • Universal Data Object (utag_data)
    • Universal Tag (utag.js)
    • Data Layer Object (b)
    • Single-Page Applications
    • Settings
    • Debugging
    • API Reference
      • Cookie Functions
      • GDPR Functions
      • Tracking Functions
      • Utility Functions
    • Release Notes
  • Server
  • C#
    • Overview
    • Install
    • Track
    • Data Layer
    • API Reference
    • Release Notes
  • HTTP API
    • Overview
    • Endpoint
    • Data Layer
  • Java
    • Overview
    • Install
    • Track
    • API Reference
    • Release Notes
  • Node
    • Overview
    • Install
    • Track
    • API Reference
  • Python
    • Overview
    • Install
    • Track
    • API Reference
  • Roku
    • Overview
    • Install
    • Track
    • API Reference
  • Ruby
    • Overview
    • Install
    • Track
    • API Reference

Was this article helpful?

This page was last updated: October 21, 2020       Thank you for your feedback!
  • Platforms
  • Partners
  • Forums
  • Mobile
  • Getting Started
  • Remote Commands
  • Android (Java)
  • Android (Kotlin)
  • Cordova
  • Flutter
  • iOS (Objective-C)
  • iOS (Swift) 1.x
  • iOS (Swift) 2.x
  • NativeScript
  • React Native 1.x
  • React Native 2.x
  • Unity
  • Xamarin
  • Web
  • Getting Started
  • Adobe Launch
  • AMP
  • Angular
  • Google Tag Manager
  • JavaScript (Web)
  • Server
  • C#
  • HTTP API
  • Java
  • Node
  • Python
  • Roku
  • Ruby