Info
Content

ConsentManager GDPR / CCPA SDK voor iOS

De ConsentManager SDK voor iOS-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.

Ondersteunde standaarden

De ConsentManager GDPR / CCPA SDK voor Android ondersteunt de volgende industriestandaarden:

  • IAB TCF v1
  • IAB TCF v2
  • IAB USPrivacy v1
  • ConsentManager aangepaste leveranciers / doeleinden
  • Aanvullende toestemmingsmodus van Google (Google AC-reeks)

Cmp-Sdk-Screen-Shot---home.pngCmp-Sdk-Screen-Shot---settings.png

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 via Cocoapod

Voeg bibliotheek toe met Cocoapod

U kunt de consentmanager SDK door toe te voegen consentmanager naar uw Podfile zoals uitgelegd in het onderstaande voorbeeld:

target 'YourProject' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
  pod 'consentmanager'

  target 'YourProjectTests' do
    inherit! :search_paths
     # Pods for testing
  end
  
...
      
end

Zodra dit is gebeurd, moet u rennen pod install in uw projectmap om het consentmanager SDK. Open hierna het *.xcworkspace en bouwen. 

Nadat u alle stappen hebt gevolgd, moet uw afhankelijkheid zijn geïnstalleerd en kunt u doorgaan en deze in uw project gebruiken.

Installatie via XCFramework

We raden sterk aan om de bibliotheek met Cocoapod te installeren en te gebruiken. Zonder dit zal het zowel voor de gebruiker als voor de ontwikkelaar moeilijker te onderhouden zijn. Op deze manier moeten updates handmatig worden geïntegreerd en zijn er enkele problemen met versiebeheer. Daarom zijn we van plan de actieve service voor deze bibliotheek stop te zetten. 

Download de SDK

Download hier de nieuwste versie van de SDK:

XCKader: https://bitbucket.org/consentmanager/consentmanager-xcframework/src/master/

De SDK is geconfigureerd voor iOS versie 10 en hoger.

Integratie

Volg deze stappen om de SDK in uw bestaande project te integreren:

  1. Haal de bestanden uit de map ConsentManager.framework in de hoofdmap van uw app:



  2. Klik op uw project en ga naar het tabblad Algemeen en breid het onderdeel eronder uit Frameworks, bibliotheken en embedded content:

     

  3. Klik op als de module nog niet is ingesloten + (Plus)> Andere toevoegen> Bestanden toevoegen ...:

  4. Selecteer het ConsentManager.framework map van dit project en klik op Openen:

  5. U zou nu het Framework moeten zien als "Embed & Sign" in de lijst:

  6. Navigeer naar uw Main View Controller van uw app en importeer het framework met behulp van:
    #import <ConsentManager/CmpConsentTool.h>

Start de SDK

Met de app-start (meestal je viewDidAppear-functie) heb je Dan moet je maak een instantie van klasse CMPConsentTool. 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.

#import "ViewController.h"
#import <ConsentManager/CMPConsentTool.h>

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *GDPRConsentStringLabel;
@end

@implementation ViewController
static CMPConsentTool *cmpConsentTool = nil;

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)viewDidAppear:(BOOL)animated {
    cmpConsentTool = [[CMPConsentTool alloc] init:@"consentmanager.mgr.consensu.org" addId:@"123456" addAppName:@"my%20Test%20App" addLanguage:@"DE" addViewController:self];
}

- (IBAction)showGDPRConsentTool:(id)sender {
    [cmpConsentTool openCmpConsentToolView];
}
@end

Voorbeeld voor Swift:

cmpConsentTool = CMPConsentTool.init("consentmanager.mgr.consensu.org", addId: "123456", addAppName: "my%20test%20app", addLanguage: "DE", add: self)

Houd er rekening mee dat het belangrijk is om de SDK te initialiseren in de didAppear-methode. Anders is de weergave mogelijk niet klaar voor gebruik en mislukt de SDK.

Zorg ervoor dat u de juiste configuratiegegevens gebruikt. De configuratiegegevens vindt u in uw ConsentManager account bij Menu> Code ophalen.

SwiftUI

Om de SDK in een SwiftUI-omgeving te integreren, moet u een: UIViewController die is verpakt in een UIViewControllerRepresentable. U kunt meer informatie vinden over op de officiële Apple documentatie. Voordat u de SDK integreert, moet u ervoor zorgen dat u de module al in uw project hebt geïntegreerd. 

1. We beginnen met het maken van een gebruikelijke UiViewController vergelijkbaar met de voorbeelden voor Swift/Objective C

import UIKit
import consentmanager


class CmpViewController: UIViewController {
    struct CmpConfig {
           static let domain = "www.consentmanager.net"
           static let appId = "123456"
           static let appName = "test App"
           static let language = "DE"
       }
    var cmpConsentTool: CMPConsentTool? = nil
    func onClose() -> Void {
        NSLog("closed event");
    }

    func onOpen() -> Void {
        NSLog("opened event");
    }

    func onCMPNotOpened() -> Void {
        NSLog("not opened event");
    }
    
    override func viewDidLoad() {
        cmpConsentTool = CMPConsentTool.init(CmpConfig.domain, addId: CmpConfig.appId, addAppName: CmpConfig.appName, addLanguage: CmpConfig.language, add: self, autoupdate: true, addOpenListener: onOpen, addOnCMPNotOpenedListener: onCMPNotOpened);
        
        // creating a example button to manually open the consent screen
        let button = UIButton.init(frame: CGRect.init(x: 10, y: 100, width: 100, height: 50))
        button.setTitle("Consent", for: .normal)
        button.backgroundColor = .red
        button.addTarget(self, action: #selector(onShowConsentClicked), for: .touchUpInside)
        self.view.addSubview(button)
    }
    
    /**
     * Show consent button was clicked
     */
    @objc func onShowConsentClicked(sender: UIButton!) {
        cmpConsentTool!.openView()
    }
}

2. Om de controller te gebruiken in de swiftUI je moet een UIViewControllerRepresentable maken die de CmpViewController:

import SwiftUI

struct CmpViewControllerRepresentable: UIViewControllerRepresentable {
    func makeUIViewController(context: Context) -> UIViewController {
        let cmpViewController = CmpViewController()
        
        return cmpViewController
    }
    
    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
    }
}

3. Nu kunnen we de . gebruiken ControllerBekijken binnen de SwiftUI-context:

import SwiftUI

@main
struct cmpApp: App {
    var body: some Scene {
        WindowGroup {
            CmpViewControllerRepresentable()
        }
        
        
    }
}

Er wordt een voorbeeldproject gegeven hier

De SDK gebruiken

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

if(consentTool!.hasPurposeConsent("52", purposeIsV1orV2: false))
{
    if(consentTool!.hasVendorConsent("s26", purposeIsV1orV2: 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();

Snel:

cmpConsentTool!.openView()

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:

consentData = CMPStorageConsentManager.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);

Dynamische inhoudsblokkering met tijdelijke aanduiding UIView

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: 

class ViewController: UIViewController, CmpPlaceholderAcceptedDelegate {
//...
  
@objc func createPlaceholderView{
	let params : CmpPlaceholderParams = CmpPlaceholderParams.init(vendorId: "123");
	let placeholder : CmpPlaceholderView = (cmpConsentTool?.createPlaceholder(CGRect.init(x: 0, y: 300, width: view.frame.size.width, height: 				view.frame.size.height), params))!;
	placeholder.vendorDelegate = self;
	view.addSubview(placeholder);	
}



func vendorAccepted(_ placeholderView: CmpPlaceholderView!) {
	//... actions to do when the 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. u kunt aangepaste teksten toevoegen zoals hieronder getoond: 

params.buttonText = "Click me";

De benodigde bedrijfslogica, wanneer u de weergave wilt tonen en wanneer deze niet door de ontwikkelaar hoeft te worden toegepast. Om informatie te krijgen wanneer de gebruiker interactie heeft met de tijdelijke aanduiding, kunt u de voorbereide gemachtigde CmpPlaceholderAcceptedDelegate gebruiken. Met de gemachtigde moet u de functie vendorAccepted implementeren, waarmee u extra logica kunt beheren wanneer de gebruiker de toestemming heeft geaccepteerd. 

Integratie met Apple Tracking Transparency (ATT)

Sinds iOS 14 introduceerde Apple het Apple Tracking Transparency-framework, dat vereist dat elke app openbaar moet maken welke trackinggegevens hij gebruikt. Het ATT-framework op zichzelf is niet compatibel met de IAB TCF/GDPR, enz. en is slechts een Apple-specifieke versie voor het vragen van toestemming van de gebruiker voor het bijhouden van gegevens. Om de gebruiker een betere ervaring te bieden, ondersteunen we een oplossing om de toestemmingen tussen de CMP SDK en de ATT-interface te synchroniseren. De SDK biedt hiervoor twee verschillende oplossingen. 

1. De ontwikkelaar integreert het ATT Framework zelf en geeft de resulterende informatie door aan de CMP SDK. Apples-documentatie is te vinden hier

We raden deze integratie aan. U kunt nog steeds de volledige controle krijgen over de ATT-interface en uw aangepaste proces implementeren, afhankelijk van de gebruiker.  

De integratie zou er zo uit kunnen zien. 

       func requestPermission() {
           if #available(iOS 14, *) {
               ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
                   switch status {
                   case .authorized:
                       // Tracking authorization dialog was shown and accepted
                       // TODO custom code here:
                   case .denied:
                       // Tracking authorization dialog was shown and permission is denied
                       // TODO custom code here:
                   case .notDetermined:
                       // Tracking authorization dialog has not been shown
                       // TODO custom code here:
                   case .restricted:
                       // Tracking authorization dialog has not been shown app is restricted for tracking
                       // TODO custom code here:
                   }
                   // After determination of the att status, pass the information to the cmp sdk                                                           
                   CmpConfig.setAppleTrackingStatus(status.rawValue);
               })
           }
       }

Het toestemmingsverzoek kan er als volgt uitzien. De belangrijke regel code is 19 waar de informatie wordt doorgegeven aan de CMP SDK. Afhankelijk van de ATT-status stelt de CMP SDK vooraf gedefinieerde toestemmingsinformatie in. 

 

2. De ontwikkelaar activeert de automatische Apple-tracking. De CMP SDK verwerkt de aanvraag met een standaardprotocol. De status wordt dan afgehandeld door de CMP SDK. Daarna is het mogelijk om de ATT-status door de ontwikkelaar te krijgen. Aangepaste acties moeten echter op verzoek worden afgehandeld zoals in optie 1. U kunt het automatische ATT-verzoek activeren met:

CmpConfig.setAutoAppleTracking(true);

Zorg ervoor dat u deze functie activeert voordat u de CMP SDK start. 

Aangepaste gebeurtenisluisteraars

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

Naam en voornaam

komt voor

 

opCMPOOpenedListener

Luisteraar voor gebeurtenis toen CMP werd geopend

opCMPSluitluisteraar

Luisteraar voor gebeurtenis wanneer CMP is gesloten

onCMPNotOpenedLuisteraar

Luisteraar voor gebeurtenis wanneer CMP niet hoeft te worden geopend

netwerkErrorListener

Luisteraar voor gebeurtenis wanneer CMP netwerkproblemen heeft

serverErrorListener

Luisteraar voor gebeurtenis wanneer CMP de . niet kan bereiken Consentmanager server

customOpenListener

Luisteraar voor gebeurtenis wanneer CMP wordt geopend

Toestemming voor importeren/exporteren

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

// Instanstiate CMPConsentTool()
cmpConsentTool = CMPConsentTool.init(...)

// Importing consent data if you like
cmpConsentTool.importCMPData("${your consentString}");

// ... Your code here ...


// Exporting Consent data 
let consentString : String = CMPConsentTool.exportCMPData()

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

Compileren / uploaden naar AppStore

Om de SDK voor de AppStore te compileren, wil je misschien het volgende script gebruiken om de werkdirectory op te schonen:

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
FRAMEWORK_NAME="ConsentManager.framework"
# Check if Framework is present.
FRAMEWORK_LOCATION=$(find "$APP_PATH" -name "$FRAMEWORK_NAME" -type d)
if [ -z $FRAMEWORK_LOCATION ]; then
echo "Couldn't find ConsentManager.framework in $APP_PATH. Make sure 'Embed Frameworks' build phase is listed before the 'Strip Unused Architectures' build phase."
exit 1
fi
# This script strips unused architectures
find "$APP_PATH" -name "$FRAMEWORK_NAME" -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done

changelog

Changelog is te vinden hier in onze repository.

NSUserDefaults-voorkeuren

De SDK wordt ingesteld NSUserDefaults waarden voor IAB TCF v1, IAB TCF v2, IAB USPrivacy en Google AC String.

De volgende sleutels zijn gedefinieerd:

IAB TCF 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, ... 
IAB TCF 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 geen 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. 

API-overzicht

- (ongeldig) openCmpConsentToolView; Toont een modale weergave met de toestemmingswebweergave, zonder de server te vragen of een nieuwe toestemming nodig is. Wanneer de Webview wordt geopend, wordt openListener aangeroepen. Als de Compliance wordt geaccepteerd of afgewezen, wordt een sluitfunctie aangeroepen. U kunt deze functies zelf instellen en ze door of na de initialisatie doorgeven. Als u alleen voor deze aanroep van deze methode een closeListener wilt toevoegen, kunt u deze functie overbelasten met een extra closeListener-functie.
- (void) openCmpConsentToolView: (void (^) (void)) closeListener; Toont een modale weergave met de toestemmingswebweergave, zonder de server te vragen of een nieuwe toestemming nodig is. Wanneer de Webview wordt geopend, wordt openListener aangeroepen. Als de Compliance wordt geaccepteerd of afgewezen, wordt een sluitfunctie aangeroepen. U kunt deze functies zelf instellen en ze door of na de initialisatie doorgeven. Als u alleen voor deze aanroep van deze methode een closeListener wilt toevoegen, kunt u deze functie overbelasten met een extra closeListener-functie. De closeListener is een functie die zonder parameter wordt aangeroepen en geen waarden retourneert. Het wordt asynchroon genoemd.
- (NSString *) getVendorsString;  Als het consentScreen is gesloten, wordt een uitgebreide versie van ConsentString geretourneerd door de logica van consentmanager. De aanvullende Vendor String bevat alle leveranciers die niet door de CMPString worden genoemd. Deze string wordt geretourneerd. Elke leverancier wordt gescheiden door een "_" en heeft een "_" voor zichzelf. "_C23_" zou een geldige VendorsString zijn gegenereerd door ConsentManager. Een lege VendorsString is ofwel null, "" of "__".
- (NSString *) getPurposesString; Als het consentScreen is gesloten, wordt een uitgebreide versie van ConsentString geretourneerd door de logica van consentmanager. De aanvullende Purpose String bevat alle doeleinden die niet door de CMPString worden genoemd. Deze string wordt geretourneerd. Elk doel wordt gescheiden door een "_" en heeft een "_" voor zichzelf. "_P23_" zou een geldige PurposeString zijn gegenereerd door ConsentManager. Een lege PurposeString is ofwel null, "" of "__".
- (NSString *) getUSPrivacyString;  Retourneert de Amerikaanse privacytekenreeks die is geretourneerd door de toestemming van de gebruiker in het CMP ConsentScreen.
- (BOOL) hasVendorConsent: (NSString *) vendorId vendorIsV1orV2: (BOOL) isIABVendor; Retourneert als een bepaalde leverancier de rechten heeft om cookies in te stellen. De parameter vendorIsV1orV2 claimt of de leverancier wordt genoemd door de reguliere IABString, of dat deze is opgenomen in de vendorString gegenereerd door consentmanager.
- (BOOL) hasPurposeConsent: (NSString *) purposeId purposeIsV1ofV2: (BOOL) isIABPurpose; Retourneert als een bepaald doel wordt geaccepteerd. De parameter purposeIsV1orV2 claimt, als het doel wordt genoemd door de reguliere IABString, of als het is opgenomen in de purposeString gegenereerd door consentmanager.
- (BOOL) hasPurposeConsent: (int) purposeId forVendor: (int) vendorId;

Retourneert, als de toestemming voor een doel voor een specifieke leverancier is gegeven. Deze methode geeft alleen een geldig antwoord als de toestemming is gegeven in versie V2.

- (id) init: (NSString *) domein addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) taal addViewController: (UIViewController *) viewController;

- (id) init: (NSString *) domein addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) taal addViewController: (UIViewController *) viewController addOpenListener: (void (^) (void)) openListener;

- (id) init: (NSString *) domein addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) taal addViewController: (UIViewController *) viewController addCloseListener: (void (^) (void)) closeListener;

- (id) init: (NSString *) domein addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) taal addViewController: (UIViewController *) viewController addOpenListener: (void (^) (void)) openListener addCloseListener: (void (^) (void)) closeListener;

- (id) init: (NSString *) domein addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) taal addViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate;

- (id) init: (NSString *) domein addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) taal addViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addOpenListener: ( ^) (void)) openListener;

- (id) init: (NSString *) domein addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) taal addViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addCloseListener: ( ^) (void)) closeListener;

- (id) init: (NSString *) domein addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) taal addViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addOpenListener: ( ^) (void)) openListener addCloseListener: (void (^) (void)) closeListener;

- (id) init: (CMPConfig *) config metViewController: (UIViewController *) viewController;

- (id) init: (CMPConfig *) config metViewController: (UIViewController *) viewController addOpenListener: (void (^) (void)) openListener;

- (id) init: (CMPConfig *) config metViewController: (UIViewController *) viewController addCloseListener: (void (^) (void)) closeListener;

- (id) init: (CMPConfig *) config metViewController: (UIViewController *) viewController addOpenListener: (void (^) (void)) openListener addCloseListener: (void (^) (void)) closeListener;

- (id) init: (CMPConfig *) config withViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate;

- (id) init: (CMPConfig *) config withViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addOpenListener: (void (^) (void)) openListener;

- (id) init: (CMPConfig *) config metViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addCloseListener: (void (^) (void)) closeListener;

- (id) init: (CMPConfig *) config withViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addOpenListener: (void (^) (void)) openListener addCloseListener: (void (^) (void)) closeListener;

Maakt een nieuw exemplaar van deze CMPConsentTool.

@ param domain = De domein-URL van consentmanager bijv .: "www.consentmanager.net"

@ param userId = De ID van uw account van consentmanagers webste bijv .: 123

@ param appName = De naam van uw app, bijv .: "Mijn test-app"

@param language = De taal waarin de toestemming moet worden weergegeven, bijvoorbeeld: "de"

@param viewController = De App Main ViewController-instantie

@param autoupdate = Indien ingesteld, zal de app zelf controleren of er nieuwe toestemming nodig is, of de app vanaf de achtergrond wordt geopend.

@param openListener = Deze luisteraar, opgegeven als een functie, wordt asynchroon genoemd kort voordat het CMP-toestemmingsscherm wordt geopend.

@param closeListener = Deze luisteraar zal asynchroon worden genoemd als er toestemming is gegeven door de gebruiker en het CMPConsentScreen is gesloten. Deze luisteraar wordt NIET gebeld als de gebruiker de app sluit zonder toestemming te geven.

@param config = Het Parameters domein, userId, appName, taal in een object van het type CMPConfig.

U kunt de initialisatiefunctie overbelasten, zoals u kunt zien in de volgende constructors:

+ (NSString *) exportCMPData; Exporteert de huidige CMPData String. U kunt deze String eenvoudig op elk ander apparaat importeren met de functie importCMPData.
+ (BOOL) importCMPData: (NSString *) cmpData; Importeert de opgegeven CMPData-tekenreeks. U kunt deze String eenvoudig op elk ander apparaat exporteren met de functie exportCMPData.
- (BOOL) genaamdThisDay;  retourneert, of de CMPConsent Manager Server is vandaag aangevraagd, of de consentmanager server is al gevraagd of het CMP-toestemmingsscherm opnieuw moet worden weergegeven.
- (BOOL) heeft acceptatie nodig;  geeft terug, of de gebruiker toestemming moet geven, omdat hij dit in het verleden niet heeft gedaan, of omdat de toestemmingsserver heeft geretourneerd, dat een nieuwe toestemming vereist is.
+ (ongeldig) reset; reset alle gegevens die zijn ingesteld door de consentCMPTool in de gedeelde voorkeuren.

 

Terug naar boven