• 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

  • Usage
  • Sample App
  • Enable
  • Consent Status
  • Consent Selection
  • Resetting
XAMARIN

Consent Management

Learn how to implement Consent Management for Xamarin.

Usage

Usage of this module is recommended, as it is automatically included in the library and enabled in the native code upon initialization. Android and iOS are both supported platforms.

Learn more about Consent Management.

Sample App

To help to familiarize yourself with our library, the tracking methods, and best practice implementation, download the Xamarin Consent Management sample app.

Enable

The Consent Management feature comes from the two native SDKs embedded into the DLLs named Tealium.Platform.*.dlls. The Tealium.Common.dll provides the following category and status enums to use:

  • Tealium.ConsentManager.ConsentStatus
  • Tealium.ConsentManager.ConsentCategory

To enable Consent Management, simply pass the optional parameter in the constructor of TealiumConfig, or set it as a property as shown in the following example:

TealiumConfig tealConfig = new TealiumConfig(
        TealiumConsts.INSTANCE_ID,
        TealiumConsts.ACCOUNT,
        TealiumConsts.PROFILE,
        TealiumConsts.ENVIRONMENT,
        true,
        commands,
        advConfig,
        false); // optional Consent Manager Enablement

// or subsequently enable it:
tealConfig.IsConsentManagerEnabled = true;

// initialise your Tealium Instance:
var tealium = instanceManager.CreateInstance(tealConfig);

Consent Status

As with the native SDKs for both Android and iOS, when Consent Management is enabled, new users are assumed to be in an unknown state. Tracking requests are queued up until the consent status has been opted-in or out, at which point events are sent or purged, respectively.

Override the initial status through properties on the TealiumConfig object, as shown in the following example:

// enable Consent Manager:
tealConfig.IsConsentManagerEnabled = true;

// Set Users to be Consented by default:
tealConfig.InitialUserConsentStatus = ConsentManager.ConsentStatus.Consented;
// Or set Users to be Not Consented by default:
tealConfig.InitialUserConsentStatus = ConsentManager.ConsentStatus.NotConsented;

// Opt users into All Categories
tealConfig.InitialUserConsentCategories = ConsentManager.AllCategories;
// or none:
tealConfig.InitialUserConsentCategories = ConsentManager.NoCategories;
// or partial opt-in, only to Analytics and Mobile categories.
tealConfig.InitialUserConsentCategories = new ConsentCategory[]{
    ConsentManager.ConsentCategory.Analytics,
        ConsentManager.ConsentCategory.Mobile
};

Consent Selection

Interact directly with Consent Management from the Tealium instance, through the ConsentManager property.

If you need to update a user’s consent selection, pass one of enum values available in the ConsentManager.ConsentCategory and ConsentManager.ConsentStatus, as shown in the following example:

// if the user is in an Unknown state, then the following code triggers any queued events are sent after this:
ITealium tealium = instanceManager.GetExistingInstance(TealiumConsts.INSTANCE_ID);
tealium.ConsentManager.UserConsentStatus = ConsentManager.ConsentStatus.Consented;

// The previous inherently opts the user into all categories as none have been provide.
// To grant consent and opt into a subset of categories, use the overload:
tealium.ConsentManager.UserConsentStatusWithCategories(ConsentManager.ConsentStatus.Consented, new ConsentCategory[]{
    ConsentManager.ConsentCategory.Analytics
});

Resetting

Additional options are available to reset the currently selected consent preferences. This reverts the user back to an Unknown status so that subsequent events begin being queued again.

To completely disable, disable it on the TealiumConfig object, as shown in the following example:

ITealium tealium = instanceManager.GetExistingInstance(TealiumConsts.INSTANCE_ID);
tealium.ConsentManager.ResetUserConsentPreferences();
API Reference
Data Management

 
  • 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
      • Collect Module
      • Collectors Module
      • Crash Reporter Module
      • Install Referrer Module
      • Lifecycle Tracking Module
      • Location Manager 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
      • Optimizely X 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
  • React Native
    • 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
  • AMP
    • Overview
    • Install
    • Track
    • Data Layer
  • Angular
    • Overview
    • Install
    • Track
    • API Reference
  • Google Tag Manager
    • Overview
    • Install
    • Data Layer
  • JavaScript (Web)
    • Overview
    • Install
    • Track
    • Data Layer
    • 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 23, 2019       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
  • React Native
  • Unity
  • Xamarin
  • Web
  • AMP
  • Angular
  • Google Tag Manager
  • JavaScript (Web)
  • Server
  • C#
  • HTTP API
  • Java
  • Node
  • Python
  • Roku
  • Ruby