iOS tracker
The Snowplow iOS Tracker SDK supports iOS 11.0+, macOS 10.13+, tvOS 12.0+, watchOS 6.0+, and visionOS 1.0+. It can be used both in Swift as well as in Objective-C code.
Installingโ
The iOS Tracker SDK can be installed using various dependency managers.
Swift Package Manager (Recommended)
To install Snowplow Tracker with SPM:
- In Xcode, select File > Swift Packages > Add Package Dependency.
- Add the url where to download the library: https://github.com/snowplow/snowplow-ios-tracker
Cocoapods
To install Snowplow Tracker with Cocoapods:
Make sure that Cocoapods is installed on your system and correctly configured for your app.
Add the iOS Tracker SDK among the dependencies of your
Podfile
:pod 'SnowplowTracker', '~> 6.0'
Run the command
pod install
to add the tracker to your app project.
Support for installing the tracker using Carthage was dropped in version 5 of the tracker.
Setting upโ
Once the tracker SDK is correctly set as a dependency in your app project you have to instrument the tracker:
In your application delegate
AppDelegate.swift
addimport SnowplowTracker
.In the
application(_:didFinishLaunchingWithOptions:)
method, set up the SDK as follows:let tracker = Snowplow.createTracker(namespace: "appTracker", endpoint: "https://snowplow-collector-url.com")
The URL path for your collector endpoint should include the protocol, "http" or "https". If not included in the URL, "https" connection will be used by default.
It creates a tracker instance which can be used to track events like this:
let event = ScreenView(name: "screen_name")
tracker.track(event)If you prefer to access the tracker when the reference is not directly accessible, you can use the
defaultTracker
:Snowplow.defaultTracker()?.track(event)
You can override the default configuration with a fine grained configuration when you create the tracker. See the API docs for the Configuration
classes to see all the options and defaults.
Snowplow.createTracker(namespace: "appTracker", endpoint: "https://snowplow-collector-url.com") {
TrackerConfiguration()
.base64Encoding(false)
.sessionContext(true)
.platformContext(true)
.lifecycleAutotracking(true)
.screenViewAutotracking(true)
.screenContext(true)
.applicationContext(true)
.exceptionAutotracking(true)
.installAutotracking(true)
.userAnonymisation(false)
.immersiveSpaceContext(true)
.logLevel(.off)
SessionConfiguration(
foregroundTimeout: Measurement(value: 30, unit: .minutes),
backgroundTimeout: Measurement(value: 30, unit: .minutes)
)
}
The createTracker
method allows the creation of multiple trackers in the same app. The namespace
field lets you distinguish events sent by a specific tracker instance. It is mandatory even when the app uses just a single tracker instance like in the example above.
The trackers created with the above method are configured "locally" only. To create a tracker where the configuration can be updated through downloaded files, read this page about remote configuration.
The Examples Github repository includes demo apps for Swift and Objective-C covering the most popular dependencies managers. They are provided as simple reference apps to help you set up the tracker.