Info
Content

[Android] 1. ConsentManager SDK-integratie

De ConsentManager SDK voor Android-apps implementeert en biedt functionaliteit om de gebruiker te informeren over gegevensbescherming en om toestemming van de gebruiker te vragen en te verzamelen. Het stelt app-ontwikkelaars in staat de ConsentManager service in hun app.

Hoe het werkt

  1. Integreer de SDK in de app en configureer de SDK-instellingen
  2. Zodra de SDK is geïntegreerd in een app, biedt de SDK functies voor de app-ontwikkelaar om toestemmingsgegevens op te halen
  3. Zodra de app start, haalt de SDK automatisch informatie op van de ConsentManager servers om de SDK voor te bereiden op het gebruik ervan.
  4. Het wordt aanbevolen dat de app bij het opstarten van de app een klasse-instantie maakt CMPConsentTool. Zodra dit is gemaakt, toont de SDK indien nodig automatisch het toestemmingsscherm.
  5. Wanneer de app persoonlijke gegevens wil verwerken, moet deze de SDK "vragen" of toestemming is gegeven voor het specifieke doel en de leverancier.

Installatie

Repository op Bitbucket: https://bitbucket.org/consentmanager/android-consentmanager/src/master/

Gradle

Stap 1. Voeg de jitpack-repository toe aan je root build.gradle aan het einde van de repositories:

allprojects {  
  repositories {    
    ...    
    maven { url 'https://jitpack.io' }  
  }
}

Stap 2. Voeg de afhankelijkheid toe aan uw apps build.gradle. (Om altijd de nieuwste versie te krijgen, gebruikt u het + symbool om de nieuwste updates te krijgen. U kunt bijvoorbeeld altijd de nieuwste versies krijgen voor kleine updates via 1.x.+)

dependencies {
  implementation 'org.bitbucket.consentmanager:android-consentmanager:1.5.+'
}

Maven

Stap 1. Voeg de jitpack-repository toe aan je build.gradle aan het einde van de repositories:

    <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>

Stap 2. Voeg de afhankelijkheid toe aan uw apps build.gradle. (Om altijd de nieuwste versie in maven te krijgen, kun je verschillende methoden gebruiken om het versiebereik te weigeren. Je kunt ze opzoeken hier )

    <dependency>
        <groupId>org.bitbucket.consentmanager</groupId>
        <artifactId>android-consentmanager</artifactId>
        <version>1.5.7</version>
    </dependency>

Met behulp van de bibliotheek

machtigingen

Deze SDK vereist de volgende toestemmingen, zorg ervoor dat u ze toevoegt aan uw AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

Start ConsentTool

Met de app-start (meestal uw viewDidAppear-functie) moet u een instantie van klasse CMPConsentTool maken. Dit haalt automatisch de benodigde gegevens van onze server op en bepaalt of het toestemmingsscherm moet worden weergegeven of niet. Als dat het geval is, toont de SDK op dit punt automatisch het toestemmingsscherm, verzamelt de gegevens en verstrekt de gegevens aan de app. De instantie kan vervolgens worden gebruikt om toestemmingsgegevens van de SDK op te halen om deze in de app te gebruiken.

Om de ConsentTool te starten, gaat u naar uw beoogde klasse en maakt u een instantie van CMPConsentTool zoals hieronder weergegeven:

//...
import net.consentmanager.sdk.CMPConsentTool;
//...
public class MainActivity extends AppCompatActivity {
    private CMPConsentTool consentTool;
    //...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      //..
      consentTool = CMPConsentTool.createInstance(this, 123456, "delivery.consentmanager.net", "MyFavouriteApp", "");
    }
//...
}

 

Om de instantie van CMPConsentTool te maken, moet u de instantie configureren. U moet de CMP-ID, het serverdomein, een app-naam en een taal opgeven. De CMP-ID en het serverdomein vindt u in uw ConsentManager account onder Menu> Code ophalen. De app-naam kan worden gebruikt om verschillende apps in de te onderscheiden ConsentManager rapportage. Voor de taal kunt u een lege tekenreeks ("") gebruiken voor automatische detectie of een tweeletterige taalcode ("EN", "DE", "FR" enzovoort).

De configuratiewaarden kunnen op verschillende manieren worden ingevoegd:

a) SDK-configuratie via CMPConfig

Voeg de volgende regels toe aan je code:

val config = CMPConfig.apply { 
            serverDomain = CMP_DOMAIN
            appName = CMP_APP_NAME
            language = LANG
            id = APP_ID
        }
val consentTool = CMPConsentTool.createInstance(this, config);
b) SDK-configuratie via createInstance()

Voeg de volgende regel toe aan uw code:

consentTool = CMPConsentTool.createInstance(this, 1234567, "delivery.consentmanager.net", "MyFavouriteApp", "EN");

De SDK gebruiken

Om te controleren of een leverancier of doel toestemming heeft, kunt u de twee methoden gebruiken:

if(consentTool.hasPurposeConsent(this,"52",false))
{
    if(consentTool.hasVendorConsent(this,"s26", false))
    {
        //do something with data
    }
}

Beide methoden hasPurposeConsent en hasVendorConsent vereisen twee parameters:

  • id - String van de leverancier of het doel-ID. Houd er rekening mee dat leveranciers-ID's verschillende formaten kunnen hebben ("123", "s123" en "c123"), controleer dit nogmaals met Menu> Leveranciers en Menu> Doeleinden in ConsentManager account.
  • isIABVendor / isIABPurpose - Als de leverancier of het doel een leverancier / doel is die de IAB TCF-standaard volgt, moet u een true instellen, anders een false.

Onthoud: alle leveranciers die niet tot de IAB behoren, hebben ID's die beginnen met een "s" of "c" (bijv. "S123"); leveranciers die tot de IAB behoren, hebben ID's die niet beginnen met een "s" of "c".

Het toestemmingsscherm opnieuw openen

Om de gebruiker in staat te stellen de keuzes te wijzigen, kunt u gewoon bellen openCmpConsentToolView():

consentTool.openCmpConsentToolView(this);

In sommige gevallen kan een systeemeigen app webviews bevatten om bepaalde zaken, zoals advertenties of inhoud van advertenties, weer te geven. Gebruik de functie om de toestemmingsinformatie van de SDK naar de webview te verzenden:

String consentData = CMPConsentTool.exportCMPData(this);

Dit exporteert de toestemmingsinformatie en alle verdere gegevens die de CMP nodig heeft. Vervolgens kunt u deze informatie doorgeven aan de CMP in uw webview door deze toe te voegen aan de URL die wordt opgeroepen in de webview:

myWebView.loadURL("https://mywebsite.com/....#cmpimport=" + consentData);

Aangepaste gebeurtenisluisteraars

Om extra proceslogica toe te voegen kunt u gebruik maken van Event Listeners. De volgende gebeurtenisluisteraars zijn beschikbaar:

Naam

komt voor

 

AanOpenTerugbellen

Luisteraar voor gebeurtenis toen CMP werd geopend

AanCMPSluitenTerugbellen

Luisteraar voor gebeurtenis wanneer CMP is gesloten

AanCMPNietGeopendTerugbellen

Luisteraar voor gebeurtenis wanneer CMP niet hoeft te worden geopend

OnErrorTerugbellen

Luisteraar voor gebeurtenis wanneer er een fout is opgetreden in het toestemmingsbeheerproces.

Toestemming voor importeren/exporteren

Om de toestemming te importeren of exporteren, kunt u de functie gebruiken: exportCMPData(Contextcontext) en importCMPData(Contextcontext, String cmpData). Check het voorbeeld hieronder: 

De consentString die u moet doorgeven, moet base64-gecodeerd zijn.

 

CMP SDK-volgordediagram

Cmp-Sequence-Diagram-(1).png


Gedeelde voorkeuren

De SDK stelt de waarden voor gedeelde voorkeuren in voor IAB TCF v1, IAB TCF v2, IAB USPrivacy en Google AC String. Deze waarden kunnen worden gelezen met behulp van de volgende code:

Context mContext = getApplicationContext();

SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);

SharedPreferences.OnSharedPreferenceChangeListener mListener;

mListener = new SharedPreferences.OnSharedPreferenceChangeListener() {

            public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
                        if (key.equals([Specific Consent Key])) {
                                   // Update Consent settings
                                   }
                        }
            };
mPreferences.registerOnSharedPreferenceChangeListener(mListener);

 

De volgende sleutels zijn gedefinieerd:

IABTCF v1  
IABConsent_CMPPresent Boolean: Ingesteld op true als een CMP die deze specificatie implementeert, aanwezig is in de toepassing. Idealiter zo snel mogelijk ingesteld door de uitgever, maar kan ook alternatief worden ingesteld door de CMP.
IABConsent_SubjectToGDPR String 1 - (onderworpen aan GDPR), 0 - (niet onderworpen aan GDPR), Nihil - onbepaald (standaard vóór initialisatie). Komt overeen met IAB OpenRTB GDPR Advisory. Besloten om String te zijn, om de niet-geïnitialiseerde status te hebben.
IABConsent_ConsentString String: Toestemmingsreeks
IABConsent_ParsedPurposeConsents String (van "0" en "1") waarbij het teken op positie N de toestemmingsstatus aangeeft voor doel-ID N zoals gedefinieerd in de Global Vendor List. Toestemming gegeven om eenvoudige controle mogelijk te maken. Eerste karakter van links is Doel 1, ...
IABConsent_ParsedVendorConsents String (van "0" en "1") waarbij het teken op positie N de toestemmingsstatus voor leverancier-ID N aangeeft, zoals gedefinieerd in de algemene leverancierslijst. Toestemming gegeven om eenvoudige controle mogelijk te maken. Eerste karakter van links zijnde Vendor 1, ... 
IABTCF v2  
IABTCF_CmpSdkID Number: De niet-ondertekende integer-ID van CMP SDK
IABTCF_CmpSdkVersion Number: Het ongetekende versienummer van de CMP SDK
IABTCF_PolicyVersion Number: Het geheel getal zonder teken dat de versie van de TCF vertegenwoordigt waaraan deze toestemmingen voldoen.
IABTCF_gdprApplies Number:

1 GDPR is van toepassing in de huidige context

0 - GDPR doet niet toepassen in de huidige context

ongezet - onbepaald (standaard voor initialisatie)

IABTCF_PublisherCC String: Tweeletterige ISO 3166-1 alfa-2-code - Standaard: AA (onbekend)
IABTCF_PurposeOneTreatment Number:

0 - geen speciale behandeling van doel één

1 - doel één niet bekendgemaakt

Standaard uitschakelen - 0

Leveranciers kunnen deze waarde gebruiken om te bepalen of toestemming voor doel één vereist is.

IABTCF_UseNonStandardStacks Number:

1 - CMP gebruikte een niet-standaard stapel

0 - CMP heeft geen niet-standaard stack gebruikt

IABTCF_TCString String: Volledig gecodeerde TC-string
IABTCF_VendorConsents Binary StringDe '0' or '1' op positie n - waar n's indexering begint om 0 - geeft de toestemmingsstatus aan voor Vendor ID n + 1; false en true respectievelijk. bijv. '1' bij index 0 is toestemming true voor leveranciers-ID 1
IABTCF_VendorLegitimateInterests Binary StringDe '0' or '1' op positie n - waar n's indexering begint om 0 - geeft de legitieme belangstatus aan voor Vendor ID n + 1; false en true respectievelijk. bijv. '1' bij index 0 is gerechtvaardigd belang gevestigd true voor leveranciers-ID 1
IABTCF_PurposeConsents Binary StringDe '0' or '1' op positie n - waar n's indexering begint om 0 - geeft de toestemmingsstatus aan voor doel-ID n + 1; false en true respectievelijk. bijv. '1' bij index 0 is toestemming true voor doel-ID 1
IABTCF_PurposeLegitimateInterests Binary StringDe '0' or '1' op positie n - waar n's indexering begint om 0 - geeft de legitieme belangstatus aan voor doel-ID n + 1; false en true respectievelijk. bijv. '1' bij index 0 is gerechtvaardigd belang gevestigd true voor doel-ID 1
IABTCF_SpecialFeaturesOptIns Binary StringDe '0' or '1' op positie n - waar n's indexering begint om 0 - geeft de aanmeldingsstatus aan voor speciale functie-ID n + 1; false en true respectievelijk. bijv. '1' bij index 0 is opt-in true voor speciale functie-ID 1
IABTCF_PublisherRestrictions{ID} String ['0','1', or '2']: De waarde op positie n - waar n's indexering begint om 0 - geeft het uitgeversbeperkingstype (0-2) voor leverancier aan n + 1; (zie Typen uitgeversbeperkingen). bijv. '2' bij index 0 is restrictieType 2 voor leveranciers-ID 1. {ID} verwijst naar de doel-ID.
IABTCF_PublisherConsent Binary StringDe '0' or '1' op positie n - waar n's indexering begint om 0 - geeft de toestemmingsstatus voor het doel-ID aan n + 1 voor de uitgever, aangezien deze overeenkomen met de doeleinden van de lijst met wereldwijde leveranciers; false en true respectievelijk. bijv. '1' bij index 0 is toestemming true voor doel-ID 1
IABTCF_PublisherLegitimateInterests Binary StringDe '0' or '1' op positie n - waar n's indexering begint om 0 - geeft het doel aan van de legitieme belangstatus voor het doel-ID n + 1 voor de uitgever, aangezien deze overeenkomen met de doeleinden van de lijst met wereldwijde leveranciers; false en true respectievelijk. bijv. '1' bij index 0 is gerechtvaardigd belang gevestigd true voor doel-ID 1
IABTCF_PublisherCustomPurposesConsents Binary StringDe '0' or '1' op positie n - waar n's indexering begint om 0 - geeft de toestemmingsstatus van het doel van de aangepaste ID van de uitgever aan n + 1 voor de uitgever; false en true respectievelijk. bijv. '1' bij index 0 is toestemming true voor aangepaste doel-ID 1
IABTCF_PublisherCustomPurposesLegitimateInterests Binary StringDe '0' or '1' op positie n - waar n's indexering begint om 0 - geeft de legitieme belangstatus van het doel aan voor de aangepaste doel-ID van de uitgever n + 1 voor de uitgever; false en true respectievelijk. bijv. '1' bij index 0 is gerechtvaardigd belang gevestigd true voor aangepaste doel-ID 1
IAB US Privacy  
IABUSPrivacy_String String: Komt overeen met IAB OpenRTB CCPA Advisory. De String codeert alle keuzes en informatie.
Google AC-tekenreeks  
IABTCF_AddtlConsent

String: Komt overeen met de technische specificatie Aanvullende toestemmingsmodus van Google. 

(Verouderd) Dynamische contentblokkering met placeholder webView

Deze functie is verouderd en zal in de toekomst worden verwijderd. De reden voor de afschrijving is dat met het in- en uitschakelen van leveranciers- en doel-API's het niet meer nodig is om een ​​tijdelijke aanduiding te maken. U kunt uw eigen gebruikersinterface en uw eigen bedrijfslogica toevoegen en leveranciers dynamisch activeren en deactiveren. In plaats van deze functie te gebruiken, moet u de enableVendorList() en leverancierslijst uitschakelen() functies om te beheren welke leveranciers zijn ingeschakeld of uitgeschakeld, en maak uw eigen gebruikersinterface om deze informatie aan de gebruiker weer te geven.

De tijdelijke aanduiding viewObject kan worden geïmplementeerd om de functionaliteit van dynamische inhoudsblokkering te krijgen hierU kunt de weergave op de volgende manier maken: 

CMPPlaceholder placeholderView = CMPConsentTool.createPlaceholder(getApplicationContext(),CMPPlaceholderParams
                        .ofVendor("${vendorId}"), new CMPPlaceholderEventListener() {
                        
                    @Override
                    public void vendorAccepted(WebView view) {
                    	//... Actions to trigger if Consent is accepted
                        // Like showing Youtube Video View
                    	}
                    });

Met het Wrapper-object CMPPlaceholderParams u kunt ook optionele parameters doorgeven, zoals aangepaste teksten of een optionele voorbeeldafbeelding. De bouwfuncties worden genoemd setCustomplaceholder(String headline, String mainText, String checkboxText, String buttonText) en setOptionalImageUrl(String imageUrl).

De benodigde bedrijfslogica, wanneer u de weergave wilt tonen en wanneer deze niet door de ontwikkelaar hoeft te worden toegepast. U kunt de vereiste voorwaarde en acties doorgeven met behulp van de EvenListener-callbacks van de CMPPlaceholderEventlistener. De volgende vereiste gebeurtenis moet worden geïmplementeerd:

Vereist: vendorAccepted(CMPPlaceholderView view) { // Your logic }

optioneel: errorOccurred(String message) { // Error handling }

Terug naar boven