Provide user consent
As we are introducing a new placeholder you will, depended on your integration type, need to load a new ad configuration or book new tags. We will provide you with either tags or a link to a new version of the configuration. Please let us know the app version containing the changes beforehand so we can prepare everything on our end.
Note: Do not combine GDPR_CONSENT and UNCERTIFIED_VENDORS with NPA Placeholder. Choose one of these two options.
Option 1: With an IAB TCF compatible CMP
Placeholder: %GDPR_CONSENT%
If you have implemented a Consent Management Platform (CMP) compatible with IAB TCF, you need to provide the Uncertified Vendors Placeholder and the TC String via gdpr_consent Placeholder.
Placeholder: %UNCERTIFIED_VENDORS%
The Uncertified Vendors Placeholder contains information about the non-TCF vendors on the SOM Vendor List within the CMP. The Uncertified Vendors consent must be set in all video ad-tags instead of the %UNCERTIFIED_VENDORS%
placeholder.
Setting | Value |
---|---|
For all non-TCF vendors on the SOM Vendor List, the user has given consent for all purposes, special purposes, features and special features unrestrictedly. | 0 |
For one or more non-TCF vendors on the SOM Vendor List, the user has not given consent for all purposes, special purposes, features and special features unrestrictedly. | 1 |
Option 2: Without an IAB TCF compatible CMP
Placeholder: %NPA%
If you don´t have implemented a Consent Management Platform (CMP) compatible with IAB TCF, you need to provide the NPA Placeholder. We will introduce a new placeholder in the ad tags to directly pass the consent setting. Please pass the integer representation of the user's consent here. Please note that there will be multiple occurences of the placeholder in the tag so you have to perform a global string replace.
The user consent must be set in all video ad-tags instead of the %NPA%
placeholder.
Advertising ID
Placeholder: %IDFA%
The Apple Advertising Identifier or the Google Advertising ID (IDFA / AAID) must be passed to the adserver with every video ad-request. The app must always use the same IDFA value for all video ad-requests. If the user has not provided his consent the Advertising ID has to be passed with a zero value 0
instead of the ID.
The ID must be set in all video ad-tags instead of the %IDFA%
placeholder.
ID for Vendors
Placeholder: %IDFV%
The ID for Vendors by Apple must be passed to the adserver with every video ad-request. The app must always use the same IDFV value for all vendor apps within the video ad-requests. If the user has not provided his consent the ID for Vendors has to be passed with a zero value 0
instead of the ID.
The ID must be set in all video ad-tags instead of the %IDFV%
placeholder.
Note: The IDFV is a iOS specific Parameter in terms of the App Tracking Transparency Framework. Find out more here https://developer.apple.com/documentation/apptrackingtransparency?language=objc
Publisher Provided ID
Placeholder: %PPID%
A Publisher Provided Identifier must be passed to the adserver with every video ad-request. The app must always use the same PPID value for all video ad-requests. This can not be the Advertising ID. Instead create and persist your own identifier by utilizing platform UUID generator methods according to the GUID standard and storing the PPID in local storage.
The ID must be set in all video ad-tags instead of the %PPID%
placeholder.
Note: The PPID has to respect the GUID (global UID) standard V4 or V5 and has to be created according the following spec: https://tools.ietf.org/html/rfc4122
Following are two examples how you can create a PPID.
//load
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String ppid = prefs.getString("ppid", "0");
if(ppid.equals("0")){
//create
UUID uuid = UUID.randomUUID();
ppid = uuid.toString().replace("-","");
//store
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("ppid",ppid);
editor.commit();
}
func getPPID() -> String { // Either load PPID from local storage or generate one and write it to local storage
let defaults = UserDefaults.standard
var PPID = defaults.string(forKey: “PPID”)
if PPID == nil {
PPID = UUID().uuidString.replacingOccurrences(of: “-”, with: “”)
defaults.set(PPID, forKey: “PPID”)
}
return PPID!
}