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)
Hoe het werkt
- Integreer de SDK in de app en configureer de SDK-instellingen
- Zodra de SDK is geïntegreerd in een app, biedt de SDK functies voor de app-ontwikkelaar om toestemmingsgegevens op te halen
- Zodra de app start, haalt de SDK automatisch informatie op van de ConsentManager servers om de SDK voor te bereiden op het gebruik ervan.
- 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. - 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 'cmpSdk'
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:
- Haal de bestanden uit de map
ConsentManager.framework
in de hoofdmap van uw app: - Klik op uw project en ga naar het tabblad Algemeen en breid het onderdeel eronder uit Frameworks, bibliotheken en embedded content:
- Klik op als de module nog niet is ingesloten + (Plus)> Andere toevoegen> Bestanden toevoegen ...:
- Selecteer het
ConsentManager.framework
map van dit project en klik op Openen: - U zou nu het Framework moeten zien als "Embed & Sign" in de lijst:
- 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 uw viewDidLoad-functie) kunt u 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];
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 UIViewControllerVertegenwoordigbaar. 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 snelleUI 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 nieuwste versie van de SDK gebruiken
Om erachter te komen welke versie van de SDK de nieuwste is, kun je de tags in onze repro bekijken:
De SDK gebruiken
Controleer op toestemming
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()
Toestemmingsinformatie doorgeven aan andere bronnen
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:
Dit toont de ATT-laag van het besturingssysteem.
CmpConfig.setAutoAppleTracking(true);
Zorg ervoor dat u deze functie activeert voordat u de CMP SDK start.
Als u ATT niet gebruikt, moet u mogelijk een notitie maken voor de automatische Apple Review. Omdat de Apple ATT als optie is geïntegreerd, maar niet wordt gebruikt. Het is mogelijk dat Apple de Applicatie niet automatisch goedkeurt.
Aangepaste gebeurtenisluisteraars
Om extra proceslogica toe te voegen kunt u gebruik maken van Event Listeners. De volgende gebeurtenisluisteraars zijn beschikbaar:
Naam |
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 :
ongezet - onbepaald (standaard voor initialisatie) |
IABTCF_PublisherCC |
String : Tweeletterige ISO 3166-1 alfa-2-code - Standaard: AA (onbekend) |
IABTCF_PurposeOneTreatment |
Number :
Standaard uitschakelen - Leveranciers kunnen deze waarde gebruiken om te bepalen of toestemming voor doel één vereist is. |
IABTCF_UseNonStandardStacks |
Number :
|
IABTCF_TCString |
String : Volledig gecodeerde TC-string |
IABTCF_VendorConsents |
Binary String De '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 String De '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 String De '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 String De '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 String De '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 String De '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 String De '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 String De '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 String De '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 |
|
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. Aandacht: Het doel-ID is hetzelfde als getoond in de doellijst en kan een voorvoegsel hebben zoals C
Voorbeeld: "S |
- (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. |