Quick Start Guide
- iOS Tracker
 - Android Tracker
 
Installation
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-objc-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', '~> 2.0'
- Run the command 
pod installto add the tracker to your app project. 
Carthage
To install Snowplow Tracker with Carthage:
- Make sure that Carthage is installed on your system and correctly configured for your app.
 - Add the iOS Tracker SDK among the dependencies of your 
Cartfile: 
   github "snowplow/snowplow-objc-tracker" ~> 2.0
- Run the command 
carthage updateand drag the appropriate frameworks from theCarthage/buildfolder to your app project. 
Supported System Version
The iOS Tracker SDK supports iOS 9.0+, macOS 10.9+, tvOS 9.0+ and watchOS 2.0+
Instrumentation
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.swiftaddimport SnowplowTracker. - In the 
application(_:didFinishLaunchingWithOptions:)method, set up the SDK as follows: 
   let tracker = Snowplow.createTracker(namespace: "appTracker", endpoint: COLLECTOR_URL, method: .post)
- It creates a tracker instance which can be used to track events like this:
 
   let event = Structured(category: "Category_example", action: "Action_example")
   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)
The tracker has a default configuration where some settings are enabled by default:
- session tracking
 - screen tracking
 - platform contexts (mobile specific context fields)
 
You can override the default configuration with a fine grained configuration when you create the tracker:
let networkConfig = NetworkConfiguration(endpoint: COLLECTOR_URL, method: .post)
let trackerConfig = TrackerConfiguration()
    .base64Encoding(false)
    .sessionContext(true)
    .platformContext(true)
    .lifecycleAutotracking(true)
    .screenViewAutotracking(true)
    .screenContext(true)
    .applicationContext(true)
    .exceptionAutotracking(true)
    .installAutotracking(true)
let sessionConfig = SessionConfiguration(
    foregroundTimeout: Measurement(value: 30, unit: .minutes),
    backgroundTimeout: Measurement(value: 30, unit: .minutes)
)       
Snowplow.createTracker(
    namespace: "appTracker",
    network: networkConfig,
    configurations: [trackerConfig, sessionConfig]
);
Installation
The Android Tracker SDK is available on Maven Central and can be installed using Gradle.
Gradle
Add into your build.gradle file:
dependencies {
  ...
  // Snowplow Android Tracker
  implementation 'com.snowplowanalytics:snowplow-android-tracker:2.+'
  // In case 'lifecycleAutotracking' is enabled
  implementation 'androidx.lifecycle-extensions:2.2.+'
  ...
}
Supported System Version
The Android Tracker SDK supports Android 5 (API level 21+)
Instrumentation
Once the tracker SDK is correctly set as a dependency in your app project you have to instrument the tracker:
- In your 
Applicationsubclass, set up the SDK as follows: 
   TrackerController tracker = Snowplow.createTracker(context, "appTracker", COLLECTOR_URL, HttpMethod.POST);
- It creates a tracker instance which can be used to track events like this:
 
   Event event = new Structured("Category_example", "Action_example");
   tracker.track(event);
If you prefer to access the tracker when the reference is not directly accessible, you can use the defaultTracker :
   Snowplow.getDefaultTracker().track(event);
The tracker has a default configuration where some settings are enabled by default:
- session tracking
 - screen tracking
 - platform contexts (mobile specific context fields)
 
You can override the default configuration with a fine grained configuration when you create the tracker:
NetworkConfiguration networkConfig = new NetworkConfiguration(COLLECTOR_URL, HttpMethod.POST);
TrackerConfiguration trackerConfig = new TrackerConfiguration("appId")
    .base64Encoding(false)
    .sessionContext(true)
    .platformContext(true)
    .lifecycleAutotracking(true)
    .screenViewAutotracking(true)
    .screenContext(true)
    .applicationContext(true)
    .exceptionAutotracking(true)
    .installAutotracking(true);
SessionConfiguration sessionConfig = new SessionConfiguration(
    new TimeMeasure(30, TimeUnit.SECONDS),
    new TimeMeasure(30, TimeUnit.SECONDS)
);
Snowplow.createTracker(context,
    "appTracker",
    networkConfig,
    trackerConfig,
    sessionConfig
);