AdTech Integration Guides

AdTech Integration Guides

  • App (SDK)
  • App (Somquery)
  • Desktop
  • CTV

›CMP Implementation

Getting Started

  • Introduction

Integration Guide

  • InStream (Video Ad)

CMP Implementation

  • Introduction
  • Provide user consent

Testing & QA

  • Introduction
  • Frequent Bugs

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.

SettingValue
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.

  • Android
  • iOS
//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!
    }
← IntroductionIntroduction →
  • Advertising ID
  • ID for Vendors
  • Publisher Provided ID
AdTech Integration Guides
Guides
AppDesktopCTV
More
GitHub
Contact

SevenOne Media GmbH
Medienallee 4
85774 Unterföhring

71.adtechnology@gmail.com
SevenOne Media - Wir bewegen Marken
Copyright © 2023 SevenOne Media GmbH