Om de iubenda SDK aan je project toe te voegen, kun je Cocoapods gebruiken met de volgende configuratie:
platform :ios, '10.0'
source "https://github.com/iubenda/cocoapods.git"
target 'MyApp' do
use_frameworks!
pod 'IubendaMobileSDK', '2.6.4'
end
Om de bibliotheekversie automatisch bij te werken met pod update, kun je de afhankelijkheid instellen als:
'IubendaMobileSDK', '~> 2.6.4'
voor triviale updates'IubendaMobileSDK', '~> 2.6'
voor kleine updates'IubendaMobileSDK'
voor alle updatesOm de bibliotheek in je code te gebruiken:
import iubenda
toe in je bronbestanden om de bibliotheek in Swift te gebruiken#import
toe in je bronbestanden om de bibliotheek te gebruiken in Objective-CMaak in je AppDelegate klasse, in de methode didFinishLaunchingWithOptions
, een configuratieobject aan met je instellingen en roep IubendaCMP.initialize()
aan
let config = IubendaCMPConfiguration()
config.gdprEnabled = true
config.googleAds = true
config.siteId = "12341234"
config.cookiePolicyId = "56785678"
config.applyStyles = true
config.cssFile = Bundle.main.path(forResource: "custom_style", ofType: "css")
config.jsonFile = Bundle.main.path(forResource: "config", ofType: "json")
IubendaCMP.initialize(with: config)
Instelling | Standaard | Beschrijving |
---|---|---|
csVersion | current | Hiermee kan worden ingesteld welke versie van de Privacy Controls and Cookie Solution moet worden gebruikt. Geaccepteerde waarden zijn “current”, “beta”, “stable” of een specifiek versienummer. |
gdprEnabled | false | Proxy voor IAB TCF’s IABConsent_SubjectToGDPR instelling. Indien false, dan kan Mediation SDK bemiddeling uitvoeren over alle advertentienetwerk SDK’s. Anders zal Mediation SDK alleen bemiddeling uitvoeren tussen de advertentienetwerk SDK’s die AVG-ready zijn. |
siteId | Id van de site van de klant op iubenda | |
cookiePolicyId | Id van het Cookiebeleid van de klant op iubenda | |
googleAds | false | True om toestemmingsbeheer in te schakelen voor gepersonaliseerde AD’s van Google |
jsonFile | JSON bestandspad om aangepaste configuratie door te geven aan de toestemmings-UI | |
jsonContent | Hetzelfde als hierboven, maar dan ingesteld als een tekenreeks | |
forceConsent | true | Als dit true is, wordt het toestemmingsscherm aan de gebruiker getoond totdat de toestemming is verleend, zodat je de toestemmingen kunt maximaliseren. Als dit false is, heeft askConsent() geen effect als de gebruiker het toestemmingsverzoek afwijst na de eerste keer dat het wordt gestart. |
cssFile | CSS bestandspad voor het toevoegen van een aangepaste stijl aan de toestemmings-UI. Aangepaste CSS kan bovenop de standaard CSS worden toegepast (applyStyles=true) of op zichzelf (applyStyles=false). | |
cssContent | Hetzelfde als hierboven, maar dan ingesteld als een tekenreeks | |
cssUrl | Hetzelfde als hierboven, maar dan ingesteld als Url String | |
applyStyles | true | Als dit true is, wordt de standaard css-stijl toegepast op de toestemmings-UI. |
acceptIfDismissed | false | Als dit true is en de JS is klaar, wordt bij het afwijzen van de popup de melding geaccepteerd. |
preventDismissWhenLoaded | false | Als dit true is, is het niet mogelijk om de popup te sluiten als deze volledig is geladen zonder een voorkeur aan te geven. |
skipNoticeWhenOffline | true | Als deze optie is ingeschakeld, zal askConsent() de popup niet tonen als er geen internetverbinding is gedetecteerd. |
dismissColor | Hiermee kun je een aangepaste kleur instellen voor de sluitknop (×). Als deze niet is ingesteld, wordt de textColor waarde in de JSON toegepast. Als ook textColor niet is ingesteld, wordt de standaardkleur gebruikt. | |
bannerPosition | center | Stel de positie van Consent Banner Pop-Up in op top, bottom of center | automaticHandlingOfAtt | false |
Wanneer deze SDK-functie is ingesteld op true , wordt de ATT-workflow op iOS als volgt afgehandeld:
1. Het aanroepen van de askConsent() functie activeert eerst de ATT systeempermissie waarschuwing.
2. Als de gebruiker toestemming geeft voor tracking (status is .authorized volgens de ATT-documentatie van Apple), verschijnt er een Toestemming pop-up.
3. Als de gebruiker tracking weigert, wordt de Toestemming pop-up niet weergegeven. Belangrijke opmerking: Om deze functie in te schakelen moet je de NSUserTrackingUsageDescription sleutel toevoegen aan je info.plist bestand. Meer details zijn beschikbaar in de documentatie van Apple over NSUserTrackingUsageDescription.
|
let config = IubendaCMPConfiguration()
config.gdprEnabled = true
config.forceConsent = true
config.googleAds = true
config.siteId = "12341234"
config.cookiePolicyId = "56785678"
config.acceptIfDismissed = true
config.applyStyles = false
config.cssFile = Bundle.main.path(forResource: "custom_style", ofType: "css")
config.jsonFile = Bundle.main.path(forResource: "config", ofType: "json")
IubendaCMP.initialize(with: config)
custom_style.css:
/***************************************************************************
// * iubenda Privacy Controls and Cookie Solution *
// * *
// * Sample CSS v2.2.6 *
// * *
// * (c) 2019 iubenda srl <info@iubenda.com> *
// * All Rights Reserved. *
// * *
// *************************************************************************
//
// CHANGELOG
//
// 2.2.7 - 2020-06-18
// - Fix container breaking on mobile.
//
// 2.2.6 - 2020-05-27
// - Hide scroll bar visibility.
// - Fix brand image height on mobile.
//
// 2.2.5 - 2020-05-06
// - Fix IE flex content.
// - Fix text overflow.
//
// 2.2.3 - 2020-04-21
// - Cursor pointer
// - Button text ellipsis
// - Equalize shadows top/bottom modal bar
//
// 2.2.2 - 2020-04-06
// - Add pointer events auto to the overlay
//
// 2.2.1 - 2020-03-06
// - Introduce popover.
//
// 2.2.0 - 2019-11-07
// - Introduce brand customizations
//
// 2.1.5 - 2019-11-22
// - Add class to go fullscreen.
//
// 2.1.4 - 2020-03-25
// - Make the banner shadow darker
//
// 2.1.3 - 2020-01-22
// - Fix banner not appearing on iPhone.
//
// 2.1.2 - 2019-11-07
// - Fix buttons height on IE.
//
// 2.1.1 - 2019-10-30
// - Fix buttons margin and customize-advertising-tracking button width on mobile.
//
// 2.1.0 - 2019-10-24
// - Introduce text overflowing mask and style for reject button.
//
// 2.0.4 - 2019-06-24
// - Convert close button width to min-width
//
// 2.0.3 - 2019-05-24
// - Introduce new positioning options
//
// 2.0.2 - 2019-05-02
// - Fix text spaces when custom content
//
// 2.0.1 - 2019-04-09
// - Add rules for buttons group
//
// 2.0.0 - 2019-02-01
// - Full rewrite to accommodate the new markup
//
// 0.0.1 - 2015-04-01
// - First implementation of the sample CSS
*/
/*
-----------------
IMPORTANT: Changing the following values may prevent the notice from being displayed properly.
-----------------
*/
#iubenda-cs-banner {
font-size: 15px !important;
background: none !important;
line-height: 1.4 !important;
position: fixed !important;
z-index: 99999998 !important;
top: 0 !important;
left: 0 !important;
width: 100% !important;
height: 100% !important;
border: 0 !important;
margin: 0 !important;
padding: 0 !important;
overflow: hidden !important;
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
will-change: opacity, visibility;
opacity: 0 !important;
visibility: hidden !important;
pointer-events: none !important;
-webkit-transition: opacity 0.4s ease, visibility 0.4s ease !important;
-o-transition: opacity 0.4s ease, visibility 0.4s ease !important;
transition: opacity 0.4s ease, visibility 0.4s ease !important;
/* default */
}
#iubenda-cs-banner [class*=" iub"],
#iubenda-cs-banner [class^=iub],
#iubenda-cs-banner .iubenda-banner-content:not(.iubenda-custom-content) * {
font-size: 100% !important;
width: auto !important;
-webkit-appearance: none !important;
-moz-appearance: none !important;
appearance: none !important;
background: none !important;
-webkit-box-sizing: border-box !important;
box-sizing: border-box !important;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0) !important;
-webkit-backface-visibility: hidden !important;
backface-visibility: hidden !important;
font-family: -apple-system, sans-serif !important;
text-decoration: none !important;
color: currentColor !important;
background-attachment: scroll !important;
background-color: transparent !important;
background-image: none !important;
background-position: 0 0 !important;
background-repeat: repeat !important;
border: 0 !important;
border-color: #000 !important;
border-color: currentColor !important;
border-radius: 0 !important;
border-style: none !important;
border-width: medium !important;
bottom: auto !important;
clear: none !important;
clip: auto !important;
counter-increment: none !important;
counter-reset: none !important;
direction: inherit !important;
float: none !important;
font-style: inherit !important;
font-variant: normal !important;
font-weight: inherit !important;
height: auto !important;
left: auto !important;
letter-spacing: normal !important;
line-height: inherit !important;
list-style-type: inherit !important;
list-style-position: outside !important;
list-style-image: none !important;
margin: 0 !important;
max-height: none !important;
max-width: none !important;
min-height: 0 !important;
min-width: 0 !important;
opacity: 1;
outline: 0 !important;
overflow: visible !important;
padding: 0 !important;
position: static !important;
quotes: "" "" !important;
right: auto !important;
table-layout: auto !important;
text-align: left !important;
text-indent: 0 !important;
text-transform: none !important;
top: auto !important;
unicode-bidi: normal !important;
vertical-align: baseline !important;
visibility: inherit !important;
white-space: normal !important;
width: auto !important;
word-spacing: normal !important;
z-index: auto !important;
background-origin: padding-box !important;
background-origin: padding-box !important;
background-clip: border-box !important;
background-size: auto !important;
-o-border-image: none !important;
border-image: none !important;
border-radius: 0 !important;
border-radius: 0 !important;
-webkit-box-shadow: none !important;
box-shadow: none !important;
-webkit-column-count: auto !important;
-moz-column-count: auto !important;
column-count: auto !important;
-webkit-column-gap: normal !important;
-moz-column-gap: normal !important;
column-gap: normal !important;
-webkit-column-rule: medium none #000 !important;
-moz-column-rule: medium none #000 !important;
column-rule: medium none #000 !important;
-webkit-column-span: none !important;
-moz-column-span: none !important;
column-span: none !important;
-webkit-column-width: auto !important;
-moz-column-width: auto !important;
column-width: auto !important;
-webkit-font-feature-settings: normal !important;
font-feature-settings: normal !important;
overflow-x: visible !important;
overflow-y: visible !important;
-webkit-hyphens: manual !important;
-ms-hyphens: manual !important;
hyphens: manual !important;
-webkit-perspective: none !important;
perspective: none !important;
-webkit-perspective-origin: 50% 50% !important;
perspective-origin: 50% 50% !important;
text-shadow: none !important;
-webkit-transition: all 0s ease 0s !important;
-o-transition: all 0s ease 0s !important;
transition: all 0s ease 0s !important;
-webkit-transform: none !important;
-ms-transform: none !important;
transform: none !important;
-webkit-transform-origin: 50% 50% !important;
-ms-transform-origin: 50% 50% !important;
transform-origin: 50% 50% !important;
-webkit-transform-style: flat !important;
transform-style: flat !important;
word-break: normal !important;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
#iubenda-cs-banner .iub-popover-trigger {
display: inline-block !important;
text-decoration: underline !important;
-webkit-text-decoration-style: dashed !important;
text-decoration-style: dashed !important;
position: relative !important;
margin-right: 16px !important;
cursor: pointer !important;
line-height: 1.25 !important;
}
#iubenda-cs-banner .iub-popover-trigger:before, #iubenda-cs-banner .iub-popover-trigger:after {
content: "";
display: inline-block;
width: 14px;
height: 14px;
border-radius: 12px;
vertical-align: middle;
background-size: 4px;
position: absolute;
left: calc(100% + 2px);
top: 3px;
}
#iubenda-cs-banner .iub-popover-trigger:before {
background-color: currentColor;
opacity: 0.35;
}
#iubenda-cs-banner .iub-popover-trigger:after {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='13' viewBox='0 0 7 13'%3E%3Cg fill='%23FFF' fill-rule='evenodd'%3E%3Cpath d='M2.779 1.288a1.287 1.287 0 112.574 0 1.287 1.287 0 01-2.574 0zM5.467 10.422l.903 1.851-.7.341a2.496 2.496 0 01-3.545-2.717l.818-3.252a.42.42 0 00-.178-.382.422.422 0 00-.452-.041l-.844.412-.902-1.852.843-.412a2.491 2.491 0 012.576.233 2.49 2.49 0 01.989 2.389 1.105 1.105 0 01-.02.095l-.817 3.253a.42.42 0 00.178.382c.08.059.244.142.451.041l.7-.341z'/%3E%3C/g%3E%3C/svg%3E");
background-position: center;
background-repeat: no-repeat;
}
#iubenda-cs-banner .iub-popover {
position: absolute !important;
top: 24px !important;
bottom: 0 !important;
left: 0 !important;
right: 0 !important;
border-radius: 4px !important;
background-color: white !important;
color: #222 !important;
z-index: 2 !important;
-webkit-box-shadow: 0 0 32px rgba(0, 0, 0, 0.1) !important;
box-shadow: 0 0 32px rgba(0, 0, 0, 0.1) !important;
opacity: 0 !important;
visibility: hidden !important;
-webkit-transform: translateY(24px) !important;
-ms-transform: translateY(24px) !important;
transform: translateY(24px) !important;
-webkit-transition: opacity 0.3s ease, visibility 0.3s ease, -webkit-transform 0.3s ease !important;
transition: opacity 0.3s ease, visibility 0.3s ease, -webkit-transform 0.3s ease !important;
-o-transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease !important;
transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease !important;
transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease, -webkit-transform 0.3s ease !important;
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-webkit-box-orient: vertical !important;
-webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
flex-direction: column !important;
z-index: 99 !important;
pointer-events: none !important;
overflow: hidden !important;
}
#iubenda-cs-banner .iub-popover-header {
-ms-flex-negative: 0 !important;
flex-shrink: 0 !important;
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
justify-content: space-between !important;
z-index: 1 !important;
-webkit-box-shadow: 0 16px 16px #FFF !important;
box-shadow: 0 16px 16px #FFF !important;
}
#iubenda-cs-banner .iub-popover-header > * {
padding: 24px !important;
padding-bottom: 0 !important;
}
#iubenda-cs-banner .iub-popover-header-title {
font-size: 18px !important;
font-weight: bold !important;
}
#iubenda-cs-banner .iub-popover-header-close {
font-size: 24px !important;
font-weight: 300 !important;
cursor: pointer !important;
line-height: 1 !important;
position: relative !important;
top: -2px !important;
}
#iubenda-cs-banner .iub-popover-content {
font-size: 14px !important;
-webkit-box-flex: 1 !important;
-ms-flex: 1 !important;
flex: 1 !important;
font-weight: 300 !important;
line-height: 1.5 !important;
position: relative !important;
}
#iubenda-cs-banner .iub-popover-content > div {
padding: 0 24px !important;
overflow-y: auto !important;
height: 100% !important;
}
#iubenda-cs-banner .iub-popover-content > div:before, #iubenda-cs-banner .iub-popover-content > div:after {
content: "";
display: block;
height: 24px;
}
#iubenda-cs-banner .iub-popover-content h3 {
margin-bottom: 16px !important;
font-weight: bold !important;
}
#iubenda-cs-banner .iub-popover-content p:not(:last-of-type) {
margin-bottom: 16px !important;
}
#iubenda-cs-banner .iub-popover-content a {
text-decoration: underline !important;
cursor: pointer !important;
opacity: 0.8 !important;
}
#iubenda-cs-banner .iub-popover-content b, #iubenda-cs-banner .iub-popover-content strong {
font-weight: bold !important;
}
#iubenda-cs-banner .iub-popover-content i, #iubenda-cs-banner .iub-popover-content em {
font-style: italic !important;
}
#iubenda-cs-banner .iub-popover-content:after {
position: absolute;
content: "";
display: block;
height: 24px;
pointer-events: none;
left: 0;
right: 0;
bottom: 0;
background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(white));
background: -o-linear-gradient(top, rgba(255, 255, 255, 0) 0%, white 100%);
background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, white 100%);
}
#iubenda-cs-banner.iubenda-cs-default-floating .iub-popover {
left: 8px !important;
right: 8px !important;
}
@media (min-width: 640px) {
#iubenda-cs-banner.iubenda-cs-default .iub-popover {
max-width: 992px !important;
margin: 0 auto !important;
}
#iubenda-cs-banner.iubenda-cs-default.iubenda-cs-top .iub-popover {
top: 16px !important;
bottom: -16px !important;
}
#iubenda-cs-banner.iubenda-cs-default.iubenda-cs-bottom .iub-popover {
top: -16px !important;
bottom: 16px !important;
}
}
#iubenda-cs-banner.iub-popover-visible .iub-popover {
opacity: 1 !important;
visibility: visible !important;
-webkit-transform: translateY(0) !important;
-ms-transform: translateY(0) !important;
transform: translateY(0) !important;
pointer-events: auto !important;
}
#iubenda-cs-banner.iubenda-cs-overlay:before {
content: "" !important;
position: fixed !important;
top: 0 !important;
left: 0 !important;
width: 100% !important;
height: 100% !important;
background-color: rgba(0, 0, 0, 0.5) !important;
z-index: 1 !important;
pointer-events: auto !important;
}
#iubenda-cs-banner.iubenda-cs-center {
-webkit-box-align: center !important;
-ms-flex-align: center !important;
align-items: center !important;
-webkit-box-pack: center !important;
-ms-flex-pack: center !important;
justify-content: center !important;
}
#iubenda-cs-banner.iubenda-cs-top {
-webkit-box-align: start !important;
-ms-flex-align: start !important;
align-items: flex-start !important;
}
#iubenda-cs-banner.iubenda-cs-bottom {
-webkit-box-align: end !important;
-ms-flex-align: end !important;
align-items: flex-end !important;
}
#iubenda-cs-banner.iubenda-cs-left {
-webkit-box-pack: start !important;
-ms-flex-pack: start !important;
justify-content: flex-start !important;
}
#iubenda-cs-banner.iubenda-cs-right {
-webkit-box-pack: end !important;
-ms-flex-pack: end !important;
justify-content: flex-end !important;
}
#iubenda-cs-banner.iubenda-cs-visible {
opacity: 1 !important;
visibility: visible !important;
}
#iubenda-cs-banner.iubenda-cs-visible .iubenda-cs-container {
pointer-events: auto !important;
}
#iubenda-cs-banner.iubenda-cs-slidein .iubenda-cs-container {
-webkit-transition: -webkit-transform 0.4s ease !important;
transition: -webkit-transform 0.4s ease !important;
-o-transition: transform 0.4s ease !important;
transition: transform 0.4s ease !important;
transition: transform 0.4s ease, -webkit-transform 0.4s ease !important;
}
#iubenda-cs-banner.iubenda-cs-slidein.iubenda-cs-top .iubenda-cs-container {
-webkit-transform: translateY(-48px) !important;
-ms-transform: translateY(-48px) !important;
transform: translateY(-48px) !important;
}
#iubenda-cs-banner.iubenda-cs-slidein.iubenda-cs-bottom .iubenda-cs-container {
-webkit-transform: translateY(48px) !important;
-ms-transform: translateY(48px) !important;
transform: translateY(48px) !important;
}
#iubenda-cs-banner.iubenda-cs-slidein.iubenda-cs-visible .iubenda-cs-container {
-webkit-transform: translateY(0) !important;
-ms-transform: translateY(0) !important;
transform: translateY(0) !important;
}
#iubenda-cs-banner .iubenda-cs-container {
position: relative !important;
z-index: 2 !important;
}
#iubenda-cs-banner .iubenda-cs-brand {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
padding: 16px !important;
-ms-flex-negative: 0 !important;
flex-shrink: 0 !important;
}
#iubenda-cs-banner .iubenda-cs-brand > div {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-webkit-box-pack: start !important;
-ms-flex-pack: start !important;
justify-content: flex-start !important;
}
#iubenda-cs-banner .iubenda-cs-brand img {
max-width: 192px !important;
max-height: 56px !important;
}
#iubenda-cs-banner .iubenda-cs-content {
position: relative !important;
z-index: 1 !important;
overflow: hidden !important;
-webkit-transition: -webkit-transform 0.4s ease !important;
transition: -webkit-transform 0.4s ease !important;
-o-transition: transform 0.4s ease !important;
transition: transform 0.4s ease !important;
transition: transform 0.4s ease, -webkit-transform 0.4s ease !important;
}
#iubenda-cs-banner .iubenda-cs-rationale {
position: relative !important;
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-webkit-box-orient: vertical !important;
-webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
flex-direction: column !important;
}
#iubenda-cs-banner .iubenda-cs-close-btn {
position: absolute !important;
top: -2px !important;
padding: 16px !important;
right: 0 !important;
min-width: 48px !important;
height: 48px !important;
font-size: 24px !important;
line-height: 0 !important;
font-weight: lighter !important;
cursor: pointer !important;
text-align: center !important;
}
#iubenda-cs-banner .iubenda-cs-close-btn:hover {
opacity: 0.5 !important;
}
#iubenda-cs-banner .iubenda-banner-content {
font-weight: 300 !important;
margin: 16px !important;
margin-bottom: 0 !important;
-webkit-box-flex: 1 !important;
-ms-flex: 1 1 auto !important;
flex: 1 1 auto !important;
overflow-y: auto !important;
mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0%, black 16px) !important;
-webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0%, black 16px) !important;
padding-bottom: 32px !important;
}
#iubenda-cs-banner .iubenda-banner-content-padded {
padding-right: 32px !important;
}
#iubenda-cs-banner .iubenda-banner-content a {
cursor: pointer !important;
color: currentColor !important;
opacity: 0.7 !important;
text-decoration: underline !important;
}
#iubenda-cs-banner .iubenda-banner-content a:hover {
opacity: 1 !important;
}
#iubenda-cs-banner #iubenda-cs-title {
font-weight: bold !important;
margin-bottom: 16px !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group {
margin: 16px !important;
z-index: 1 !important;
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
margin-top: 0 !important;
-ms-flex-negative: 0 !important;
flex-shrink: 0 !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group > div {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
}
@media (min-width: 640px) {
#iubenda-cs-banner .iubenda-cs-opt-group {
-webkit-box-align: center !important;
-ms-flex-align: center !important;
align-items: center !important;
-webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
justify-content: space-between !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group-custom {
margin-right: auto !important;
-ms-flex-item-align: start !important;
align-self: start !important;
-webkit-box-pack: start !important;
-ms-flex-pack: start !important;
justify-content: flex-start !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group-consent {
margin-left: auto !important;
-ms-flex-item-align: end !important;
align-self: end !important;
-webkit-box-pack: end !important;
-ms-flex-pack: end !important;
justify-content: flex-end !important;
}
}
@media (max-width: 639px) {
#iubenda-cs-banner .iubenda-cs-opt-group {
margin: 12px !important;
-webkit-box-orient: vertical !important;
-webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
flex-direction: column !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group-custom {
-webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
order: 2;
}
#iubenda-cs-banner .iubenda-cs-opt-group-consent {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
}
#iubenda-cs-banner .iubenda-cs-opt-group button {
-webkit-appearance: none !important;
-moz-appearance: none !important;
appearance: none !important;
padding: 8px 32px !important;
border-radius: 64px !important;
cursor: pointer !important;
font-weight: bold !important;
font-size: 100% !important;
margin-top: 4px !important;
margin-bottom: 4px !important;
text-align: center !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group button:focus {
opacity: 0.8 !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group button:hover {
opacity: 0.5 !important;
}
@media (min-width: 640px) {
#iubenda-cs-banner .iubenda-cs-opt-group button:not(:last-of-type) {
margin-right: 8px !important;
}
}
@media (max-width: 639px) {
#iubenda-cs-banner .iubenda-cs-opt-group button {
padding: 8px 24px !important;
width: 100% !important;
display: block;
text-align: center !important;
margin: 6px 3px !important;
}
}
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-brand {
margin: 0 -8px 0 !important;
}
@media (max-width: 991px) {
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-brand {
margin: -8px -8px 0 !important;
}
}
@media (min-width: 992px) {
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-brand div {
margin: 0 auto !important;
width: calc(992px - 32px) !important;
}
}
@media (max-width: 991px) {
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-brand div {
margin: 0 8px !important;
}
}
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-container {
width: 100% !important;
}
@media (min-width: 992px) {
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-rationale {
width: 992px !important;
margin: 16px auto !important;
}
}
@media (max-width: 991px) {
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-content {
padding: 8px !important;
}
}
#iubenda-cs-banner.iubenda-cs-default-floating .iubenda-cs-brand {
margin: -8px -8px 0 !important;
}
#iubenda-cs-banner.iubenda-cs-default-floating .iubenda-cs-brand div {
margin: 8px !important;
}
@media (min-width: 992px) {
#iubenda-cs-banner.iubenda-cs-default-floating .iubenda-cs-container {
width: 992px !important;
}
}
@media (max-width: 991px) {
#iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center.iubenda-cs-top .iubenda-cs-container, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center.iubenda-cs-bottom .iubenda-cs-container {
width: 100% !important;
}
}
@media (min-width: 640px) {
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-container, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-container, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-container {
width: 480px !important;
}
}
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-opt-group, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-opt-group, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-opt-group {
-webkit-box-orient: vertical !important;
-webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
flex-direction: column !important;
}
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-opt-group > div, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-opt-group > div, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-opt-group > div {
width: 100% !important;
}
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-opt-group button, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-opt-group button, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-opt-group button {
display: block !important;
width: 100% !important;
text-align: center !important;
}
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-opt-group-custom, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-opt-group-custom, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-opt-group-custom {
-webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
order: 2;
}
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-opt-group-consent, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-opt-group-consent, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-opt-group-consent {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
#iubenda-cs-banner.iubenda-cs-default-floating .iubenda-cs-content {
-webkit-box-shadow: 0 8px 48px rgba(0, 0, 0, 0.15) !important;
box-shadow: 0 8px 48px rgba(0, 0, 0, 0.15) !important;
padding: 8px !important;
}
@media (min-width: 992px) {
#iubenda-cs-banner.iubenda-cs-default-floating .iubenda-cs-content {
border-radius: 4px !important;
margin: 16px !important;
}
}
#iubenda-cs-banner.iubenda-cs-fix-height .iubenda-cs-container,
#iubenda-cs-banner.iubenda-cs-fix-height .iubenda-cs-content,
#iubenda-cs-banner.iubenda-cs-fix-height .iubenda-cs-rationale {
height: 100% !important;
}
#iubenda-cs-banner.iubenda-cs-fix-height.iubenda-cs-default-floating .iubenda-cs-content {
height: calc(100% - 32px) !important;
}
#iubenda-cs-banner.iubenda-cs-fix-height .iubenda-cs-brand img {
max-width: 75% !important;
}
#iubenda-cs-banner .iubenda-cs-content {
background-color: #000000 !important;
color: #FFFFFF !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group {
color: #000000 !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group button {
background-color: rgba(255, 255, 255, 0.1) !important;
color: #FFFFFF !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group button.iubenda-cs-btn-primary {
background-color: #0073CE !important;
color: #FFFFFF !important;
}
/*
-----------------
MOBILE SDK
-----------------
*/
.iubenda-mobile-sdk #iubenda-cs-banner.iubenda-cs-visible {
justify-content: center!important;
align-items: center!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-container {
max-height: 100%!important;
display: flex!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-container .iubenda-cs-content {
height: auto!important;
border-radius: 0!important;
margin: 0!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-opt-group {
text-align: center!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-close-btn {
display: none!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-rationale {
display: flex!important;
flex-direction: column!important;
height: 100%!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-banner-content {
flex: 1;
overflow-y: auto!important;
margin: 0!important;
padding: 16px 16px 48px!important;
max-height: inherit!important;
mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0%, black 15%) !important;
-webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0%, black 15%) !important;
}
@media (min-width: 992px) {
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-banner-content,
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-opt-group {
margin: 24px!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner.iubenda-cs-default .iubenda-cs-rationale {
width: 100% !important;
margin: 0 !important;
}
}
.no-banner #iubenda-cs-banner {
display: none!important;
}
/** fix scrolling in iOS 10 **/
.iubenda-mobile-sdk #iubenda-cs-banner.iubenda-cs-visible .iubenda-cs-container,
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-container .iubenda-cs-content,
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-rationale {
height: 100%!important;
}
.iubenda-mobile-sdk #iubenda-iframe .iubenda-iframe-top-container {
position: relative!important;
}
.iubenda-mobile-sdk #iubenda-iframe #iab-container {
position: absolute!important;
top: 0!important;
bottom: 0!important;
left: 0!important;
right: 0!important;
}
/** iframe **/
.iubenda-mobile-sdk #iubenda-iframe #iubenda-iframe-popup {
height: 100%!important;
width: 100%!important;
}
.iubenda-mobile-sdk #iubenda-iframe .iubenda-iframe-close-btn {
display: none!important;
}
.iubenda-mobile-sdk #iubenda-iframe {
background-color: transparent!important;
}
/* Fix cookie policy trimming on older Android devices */
.iubenda-mobile-sdk #iubenda-iframe iframe {
background-color: transparent!important;
position:absolute!important;
bottom:0!important;
top:0!important;
}
.iubenda-mobile-sdk #iubenda-iframe .iubenda-iframe-spinner {
top: 50px !important;
}
/* Fix TCF widget overlapping footer in older Android devices */
.iubenda-mobile-sdk #iubenda-iframe .iubenda-iframe-footer {
z-index: 9999!important;
}
config.json:
{
"banner": {
"acceptButtonDisplay": "true",
"customizeButtonDisplay": "true",
"backgroundColor": "#000000",
"textColor": "#FFFFFF",
"acceptButtonColor": "#FD1D1D",
"acceptButtonCaptionColor": "white",
"customizeButtonColor": "transparent",
"customizeButtonCaptionColor": "#FFF"
}
}
In tegenstelling tot de standaardversie van de CS is de TCF optie standaard ingeschakeld in de SDK. Als je geen gepersonaliseerde advertenties van derden draait en je wilt de TCF ondersteuning uitschakelen, stel dan enableTcf: false
in het config.json bestand in.
Voorbeeld:
{
…
enableTcf: false,
"banner": {
…
}
}
invalidateConsentBefore
Accepteert een Datum en als deze wordt gewaardeerd, moet worden gecontroleerd of er al een voorkeur is uitgesproken en als die er is en de tijdstempel is kleiner dan de dag van de geconfigureerde datum, dan moet de voorkeur niet meer in aanmerking worden genomen. Geaccepteerde formaten: dd/MM/jjjj – jjjj/MM/dd – dd-MM-jjjj – jjjj-MM-dd – dd.MM.jjjj – jjjj.MM.dd
expireAfter
Indien gewaardeerd, wordt het aantal dagen van de tijdstempel van de toestemming en de gehele waarde van de expireAfter
parameter vergeleken. Als de toestemmingsdatum is verstreken, worden de gegevens op het apparaat gewist (Standaard: 360 dagen)
Voorbeeld:
{
…
"invalidateConsentBefore": "08/11/2022",
"expireAfter": 100,
…
}
}
Methode | Beschrijving |
---|---|
askConsent() | Presenteert de toestemmings-UI bij het starten van de app |
openPreferences() | (voorheen editConsent, nu afgeschreven) Sta gebruikers toe om hun toestemmingsvoorkeuren te wijzigen als er al toestemming is gegeven. Anders wordt het toestemmingsverzoek geopend. |
Om de toestemmings-UI te presenteren bij het starten van de app, roep je IubendaCMP.askConsent(from: self)
aan vanuit de viewDidLoad
methode van je hoofd ViewController:
skipNoticeWhenOffline
niet is ingesteld op false); IubendaCMP.askConsent(from: self)
het toestemmingsverzoek laten verschijnen.Houd er rekening mee dat als je forceConsent
op false hebt ingesteld, IubendaCMP.askConsent(from: self)
geen effect heeft als de gebruiker het toestemmingsverzoek na de eerste start afwijst: om de toestemmings-UI opnieuw te tonen, moet je IubendaCMP.openPreferences(from: self)
aanroepen.
Dus als het je doel is om toestemmingen te maximaliseren:
forceConsent
in op true en IubendaCMP.askConsent(from: self)
aanAnders kun je de gebruiker de kans geven om het toestemmingsverzoek te weigeren zonder opnieuw te worden gevraagd wanneer IubendaCMP.askConsent(from: self)
weer wordt opgeroepen:
forceConsent
in op falseIubendaCMP.askConsent(from: self)
aan, maar weet dat het geen enkel effect heeft na de eerste lanceringIubendaCMP.openPreferences(from: self)
aanOpmerkingen over IubendaCMP.openPreferences()
:
IubendaCMP.openPreferences()
het toestemmingsverzoek.IubendaCMP.openPreferences()
gebruikers in staat om hun toestemmingsvoorkeuren te wijzigen:
"perPurposeConsent": true
, worden de voorkeuren per categorie getoond."perPurposeConsent": false
worden de TCF toestemmingsvoorkeuren getoond."perPurposeConsent": false
en "enableTcf": false
, wordt het cookiebeleid getoond.Om volledige controle te hebben over wanneer het toestemmingsverzoek wordt getoond, zou je volledig kunnen vertrouwen op IubendaCMP.openPreferences(from: self)
, maar dan moet je een manier implementeren om te controleren of er toestemming is gegeven.
Je kunt een aangepaste UI gebruiken om de gebruiker om toestemming te vragen, zonder de meegeleverde popup te tonen; in dit geval kun je gebruik maken van de volgende methoden van IubendaCMP
:
Methode | Beschrijving |
---|---|
accept() | (voorheen acceptDefaultConsent, nu afgeschreven) Stelt de standaard toestemming op de achtergrond in |
reject() | Weiger de standaard toestemming op de achtergrond |
openTcfPreferences() | (voorheen showConsentPreferences, nu afgeschreven) Opent een popup voor het instellen van TCF toestemmingsvoorkeuren |
openTcfVendorsPreferences() | (Voorheen showVendorsPreferences, nu afgeschreven) Opent een popup voor het instellen van voorkeuren voor verkopers |
openCookiePolicy() | (Voorheen showCookiePolicy, nu afgeschreven) Opent een popup met het cookiebeleid |
shouldGetConsent() | Roep deze functie aan om te controleren of je de gebruiker om toestemming moet vragen, of dat de voorkeur al is aangegeven |
isPurposeEnabled(id) | Als perPurposeConsent true is, wordt true getoond als de gebruiker toestemming heeft gegeven voor het doel dat is opgegeven in de numerieke parameter id . |
isConsentGiven() | Als perPurposeConsent false is, toont true als de gebruiker de toestemming heeft geaccepteerd, anders false . |
clearData() | Wist de toestemmingssignalen voor CMP die tijdens de vorige gebruikersinteractie zijn verzameld |
config | Krijg Configuratie geïnitialiseerd in AppDelegate klasse |
shouldGetConsentForInvalidateConsentBefore() | Roep deze functie aan om te controleren of het nodig is om toestemming van de gebruiker te vragen als de tijdstempel kleiner is dan de dag van de geconfigureerde invalidateConsentBefore datumparameter. |
getVendorList(versie: , callback:) | Leverancierslijst tonen. Als de optionele parameter version niet is ingesteld, wordt de nieuwste lijst met leveranciers getoond. Neemt callback parameter voor succes- en foutresultaten |
getUserPreferences() | Geef opgeslagen gebruikersvoorkeuren die ook toestemming bevatten weer |
setUserPreferences() | Gebruikersvoorkeuren instellen met toevoegingen zoals toestemming, TCF-gegevens door de webservice |
canOpenPreferences() | Geeft true aan als er opgeslagen voorkeuren zijn |
requestAttConsent() | Opent ATT systeemtoestemmingswaarschuwing. Als de gebruiker tracking weigert, dan de voorkeuren op het apparaat wissen |
getATTStatus() | Geeft de ATT-status van de gebruiker, die “Accepted” of “Denied” kan zijn. Let op: de statussen .denied , .notDetermined en .restricted (volgens de ATT-documentatie van Apple) zijn gecategoriseerd als “Denied”. |
Opmerkingen over IubendaCMP.accept()
:
Als je een open*
methode gebruikt, kun je de notificatiewaarnemer (zie hieronder) gebruiken om te detecteren wanneer de gebruiker toestemming heeft gegeven.
Voorbeeld:
import UIKit
import iubenda
class ConsentViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(consentDidChange),
name: NSNotification.Name.ConsentChanged,
object: nil
)
}
@IBAction func acceptClick(_ sender: Any) {
IubendaCMP.accept()
dismiss(animated: true)
}
@IBAction func optionsClick(_ sender: Any) {
IubendaCMP.openTcfPreferences(from: self)
}
@objc func consentDidChange() {
if IubendaCMP.isConsentGiven() {
dismiss(animated: true)
}
}
}
Indien nodig kun je luisteren naar wijzigingen in de toestemming van gebruikers via de NotificationCenter
door een observer toe te voegen voor NSNotification.Name.ConsentChanged
:
private func observeConsentNotification() {
NotificationCenter.default.addObserver(
self,
selector: #selector(consentDidChange),
name: NSNotification.Name.ConsentChanged,
object: nil
)
}
@objc func consentDidChange() {
// ...
}
Je hebt toegang tot IAB TCF instellingen zoals de gecodeerde toestemmingsreeks, hetzij rechtstreeks als IAB specs, of via de gemaksmethoden die worden aangeboden door IubendaCMP.storage
.
Methode | Beschrijving |
---|---|
consentString | De toestemmingsreeks |
googlePersonalized | True als de gebruiker de optie Google Gepersonaliseerde AD’s heeft geaccepteerd |
subjectToGDPR | De SubjectToGdpr instelling |
cmpPresent | True als de CMP aanwezig is |
VendorConsents | De binaire gegevensreeks van de verkoper |
PurposeConsents | De doeleinden binaire gegevensreeks |
isPurposeConsentGivenFor(id) | Geeft als resultaat of de toestemming is gegeven voor het opgegeven doel id |
isVendorConsentGivenFor(id) | Geeft als resultaat of er toestemming is gegeven voor de doorgegeven id van de verkoper |
consentTimestamp | Geeft de tijdstempel van de toestemming (sinds v1.3.2) |
isPreferenceExpressed() | Geeft true aan als de SDK een reeds opgeslagen geldige voorkeur detecteert, “valid” betekent dat als de voorkeur ongeldig wordt gemaakt door invalidateConsentBefore , de methode false aan geeft |
Lees onze TCF handleiding voor meer informatie over het TCF en de geavanceerde instellingen, zoals de mogelijkheid om doelen te beperken en de uitvoerbare rechtsgrondslag te bepalen(toestemming en/of legitiem belang).
Zoals uitgelegd in hun documentatie (“Vereisten om niet-gepersonaliseerde advertenties weer te geven”), ondersteunt Google geen gevallen waarin toestemming is geweigerd, zelfs niet voor niet-gepersonaliseerde advertenties. Als gevolg daarvan worden er helemaal geen advertenties weergegeven.
Bibliotheken van derden die zich niet direct houden aan het IAB Transparency and Consent Framework, moeten mogelijk afzonderlijk worden geïnitialiseerd, afhankelijk van de toestemmingsstatus en -voorkeuren.
Om dat te bereiken kun je een change listener implementeren in je AppDelegate en IubendaCMP.isConsentGiven()
en andere methoden aanroepen om de toestemmingsstatus te evalueren.
Voorbeeld:
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let config = IubendaCMPConfiguration() config.gdprEnabled = true config.googleAds = true config.siteId = "12345" config.cookiePolicyId = "252372" IubendaCMP.initialize(with: config) observeConsentNotification() initializeLibraries() return true } private func observeConsentNotification() { NotificationCenter.default.addObserver( self, selector: #selector(consentDidChange), name: NSNotification.Name.ConsentChanged, object: nil ) } @objc func consentDidChange() { initializeLibraries() } private func initializeLibraries() { if (IubendaCMP.isConsentGiven()) { if (IubendaCMP.isGooglePersonalized()) { // enable Google personalized ADs } else { // disable Google personalized ADs } // setup other libraries } } }
Vanaf iOS 14.5 (april 2021) eist Apple dat je app transparantie biedt over de gegevens die het gebruikt en over de derde partijen die de gebruiker in je app volgen.
Om toestemming te vragen om de gebruiker te volgen en toegang te krijgen tot de advertentie-identifier van het apparaat, moet je het AppTrackingTransparency (ATT) framework gebruiken. Je kunt andere toestemmingsverzoeken toevoegen om te voldoen aan regelgeving, zoals ePrivacy of de AVG. Je app moet echter altijd de reactie van de gebruiker op de AppTrackingTransparency prompt respecteren, zelfs als hun reactie op andere prompts conflicteert.
Richtlijn 5.1.1 (iv) stelt: “Apps moeten de toestemmingsinstellingen van de gebruiker respecteren en niet proberen mensen te manipuleren, misleiden of dwingen om toestemming te geven voor onnodige gegevenstoegang.”
Dit omvat het wijzigen van het AppTrackingTransparency antwoord van een gebruiker door alleen zijn antwoord op andere toestemmingsverzoeken te respecteren. Je kunt Consent Management Platforms van derden gebruiken om deze toestemmingsverzoeken toe te voegen, zolang er geen tracking plaatsvindt door dergelijk gebruik.
Om volledig te voldoen aan de App Tracking Transparency regels van Apple (en afwijzing van de App Store te voorkomen) en ePrivacy/AVG vereisten, moet je de gebruiker toestemming vragen via ATT en de gebruiker toestemming vragen via ons CMP.
Om ons CMP en Apple’s ATT te combineren, kun je handmatig toestemming vragen aan de gebruiker via ATT of je moet automaticHandlingOfAtt
op true zetten en dan toestemming verzamelen via het CMP als (en alleen als) de gebruiker toestemming heeft gegeven via ATT.
Als je wilt dat iubenda SDK ATT (system-permission alert) afhandelt, stel dan NSUserTrackingUsageDescription
in. Raadpleeg de documentatie van Apple voor meer informatie over hoe je dit doet. Stel dan de parameter automaticHandlingOfAtt
van het object IubendaCMPConfiguration
in op true
in de klasse AppDelegate
.
Houd in gedachten dat je app altijd het antwoord van de gebruiker op de AppTrackingTransparency prompt moet respecteren, zelfs als hun antwoord via onze CMP conflicteert.
Als de gebruiker bijvoorbeeld geen toestemming geeft via de ATT, wordt aangenomen dat hij ook geen toestemming geeft via de CMP.
In dit geval kun je voorkomen dat je de methode askConsent
aanroept om de CMP niet weer te geven en de toestemming als afgewezen te beschouwen voor alle opgegeven doeleinden. Als je automaticHandlingOfAtt = true
gebruikt, dan zal de methode askConsent
eerst Apple’s ATT-systeemtoestemmingswaarschuwing openen en afhankelijk van de keuze van de gebruiker zal de SDK via een pop-up om toestemming vragen.
Daarnaast, als de gebruiker zijn voorkeuren wijzigt door eerder gegeven toestemmingen via de applicatie-instellingen te weigeren, kun je ook de methode clearData()
gebruiken, waarmee de CMP-toestemmingssignalen die tijdens de vorige gebruikersinteractie zijn verzameld, worden gewist. Als je automaticHandlingOfAtt = true
gebruikt, dan zal iubenda SDK de methode clearData()
aanroepen.
Het CMP wordt pas weer zichtbaar als de gebruiker zijn voorkeuren opnieuw wijzigt en toestemming geeft via de applicatie-instellingen.
De bibliotheek heeft een internetverbinding nodig om de toestemmingspop-up weer te geven en dus om de toestemmingsstring te genereren of bij te werken, terwijl de meest recente toestemmingsstring altijd beschikbaar is op de lokale opslag via IubendaCMP.storage
.
Standaard controleert de askConsent
methode of er een internetverbinding is voordat de popup-activiteit wordt gestart, dus als er geen verbinding is, wordt de popup niet getoond, maar wordt deze bij de volgende start wel getoond.
Als er een fout optreedt tijdens de toestemmingsstroom, wordt er in plaats daarvan een foutmelding getoond met de optie om het opnieuw te proberen of de popup te sluiten. In dit geval zorgt het instellen van forceConsent=true
ervoor dat de popup opnieuw wordt weergegeven als er geen toestemming is gegeven.
Lees deze handleiding om te leren hoe je de Consent Database API kunt implementeren om toestemmingsvoorkeuren tussen sites en apps te synchroniseren voor elke geauthenticeerde gebruiker.
automaticHandlingOfAtt
, canOpenPreferences()
, requestAttConsent()
, getATTStatus()
toegevoegd aan iubendaCMP
reject()
toegevoegd aan de IubendaCMP
klasselandscapeWidth
, landscapeHeight
, portraitWidth
, portraitHeight
toegevoegd aan IubendaCMPConfiguration
getPreferencesJson
toegevoegd aan de IubendaCMP
klassedismissColor
toegevoegd aan de IubendaCMPConfig
klasse voor het aanpassen van de sluitknopisGooglePersonalized()
is afgeschrevenproxyUrl(baseUrl)
methode toegevoegd om de URL te herschrijven die wordt gebruikt om CS in te sluiten.saveConsent(preferencesJson,timestamp)
functieisPreferenceExpressed()
methode toegevoegdisConsentGiven()
methodeexpireAfter
optie toegevoegd aan config.json
om te vergelijken met opgeslagen toestemmingsdatum en gegevens indien nodig te wisseninvalidateConsentBefore
Parameter toegevoegd aan IubendaCMP klasse om te vergelijken met opgeslagen toestemmingsdatum en opnieuw toestemming te tonen indien nodigshouldGetConsentForInvalidateConsentBefore
() functie toegevoegd aan IubendaCMP-klasse voor aangepaste UI-oproepIubendaCMP.storage
parameter toegevoegdBannerPosition
Parameter toegevoegd aan IubendaCMPConfiguratie klasse om Consent Banner Positie aan te passen (standaard:CENTER)forceConsent=true
gebruiken met enableTcf=false
enableTcf=false
en forceConsent=false
zich niet correct gedroegen.IubendaCMP.clearData()
methode toegevoegd. Met deze methode kun je de CMP toestemmingssignalen wissen die worden verzameld wanneer een gebruiker zijn voorkeuren wijzigt door eerder via ATT gegeven toestemmingen te weigeren.acceptDefaultConsent
, editConsent
, showConsentPreferences
, showVendorsPreferences
en showCookiePolicy
zijn hernoemd naar respectievelijk accept
, openPreferences
, openTcfPreferences
, openTcfVendorsPreferences
en openCookiePolicy
.isVendorConsentGivenFor(id)
en isPurposeConsentGivenFor(id)
zijn toegevoegdpreventDismissWhenLoaded
toegevoegdhasConsent
is afgeschreven en vervangen door isConsentGiven
shouldGetConsent
functie geïntroduceerd voor meer aangepaste implementatiescsVersion
toegevoegdsaveConsent()
en CMPStorage
cssContent
geïntroduceerd en jsonContent
optiesdismissColor
geïntroduceerd, waarmee je een aangepaste kleur voor de sluitknop kunt instellen (alleen weergegeven op het eerste niveau)skipNoticeWhenOffline
optie geïntroduceerdforceConsent
acceptIfDismissed
optie geïntroduceerdVoeg de volgende bewaarplaats en afhankelijkheid toe aan je build.gradle
bestand:
repositories {
maven { url "https://libraries.iubenda.com/android" }
}
dependencies {
implementation "com.iubenda:mobile-sdk:2.6.4"
}
Om de bibliotheekversie automatisch bij te werken tijdens het bouwen, kun je de afhankelijkheid instellen als:
"com.iubenda:mobile-sdk:2.6.+"
voor triviale updates"com.iubenda:mobile-sdk:2.+"
voor kleine updates"com.iubenda:mobile-sdk:+"
voor alle updatesMaak een nieuwe klasse die android.app.Application
uitbreidt en zet deze in het manifest van de app, als je zo’n klasse nog niet in je project hebt
<application
android:name=".App"
...>
...
</application>
Maak in je applicatieklasse, in de methode onCreate
, een configuratieobject met je instellingen en roep IubendaCMP.initialize()
aan
@Override
public void onCreate() {
super.onCreate();
IubendaCMPConfig config = IubendaCMPConfig.builder()
.gdprEnabled(true)
.siteId("12341234")
.cookiePolicyId("56785678")
.googleAds(true)
.cssResource(R.raw.custom_style)
.jsonResource(R.raw.config_json)
.applyStyles(true)
.build();
IubendaCMP.initialize(this, config);
}
Instelling | Standaard | Beschrijving |
---|---|---|
csVersion | current | Hiermee kan worden ingesteld welke versie van de Privacy Controls and Cookie Solution moet worden gebruikt. Geaccepteerde waarden zijn “current”, “beta”, “stable” of een specifiek versienummer. |
gdprEnabled | false | Proxy voor IAB TCF’s IABConsent_SubjectToGDPR instelling. Indien false, dan kan Mediation SDK bemiddeling uitvoeren over alle advertentienetwerk SDK’s. Anders zal Mediation SDK alleen bemiddeling uitvoeren tussen de advertentienetwerk SDK’s die AVG-ready zijn. |
siteId | Id van de site van de klant op iubenda | |
cookiePolicyId | Id van het Cookiebeleid van de klant op iubenda | |
forceConsent | true | Als dit true is, wordt het toestemmingsscherm aan de gebruiker getoond totdat de toestemming is verleend, zodat je de toestemmingen kunt maximaliseren. Als dit false is, heeft askConsent() geen effect als de gebruiker het toestemmingsverzoek afwijst na de eerste keer dat het wordt gestart. |
googleAds | false | True om toestemmingsbeheer in te schakelen voor gepersonaliseerde AD’s van Google |
jsonResource | Ruwe bron (src/main/res/raw) om aangepaste configuratie door te geven aan de toestemmingsUI | |
jsonContent | Hetzelfde als hierboven, maar dan ingesteld als een tekenreeks | |
jsonFile | Hetzelfde als hierboven, maar dan ingesteld als bestand | |
cssResource | Ruwe bron (src/main/res/raw) voor het toevoegen van aangepaste CSS-stijl aan de toestemmingsUI. Aangepaste CSS kan bovenop de standaard CSS worden toegepast (applyStyles=true) of op zichzelf (applyStyles=false). | |
cssContent | Hetzelfde als hierboven, maar dan ingesteld als een tekenreeks | |
cssFile | Hetzelfde als hierboven, maar dan ingesteld als bestand | |
cssUrl | Hetzelfde als hierboven, maar dan ingesteld als Url String | |
applyStyles | true | Als dit true is, wordt de standaard css-stijl toegepast op de toestemmings-UI. |
acceptIfDismissed | false | Als dit true is en de JS is klaar, wordt bij het afwijzen van de popup de melding geaccepteerd. |
preventDismissWhenLoaded | false | Als dit true is, is het niet mogelijk om de popup te sluiten als deze volledig is geladen zonder een voorkeur aan te geven. |
skipNoticeWhenOffline | false | Als deze optie is ingeschakeld, zal askConsent() de popup niet tonen als er geen internetverbinding is gedetecteerd. |
bannerPosition | center | Stel de positie van Consent Banner Pop-Up in op top, bottom of center |
dismissColor | Hiermee kun je een aangepaste kleur instellen voor de sluitknop (×). Als dit niet is ingesteld, wordt de standaardkleur gebruikt. | |
landscapeHeight | Aangepaste hoogte instellen voor de eerste laag in liggende modus | |
landscapeWidth | Aangepaste breedte instellen voor de eerste laag in liggende modus | |
portraitHeight | Aangepaste hoogte instellen voor de eerste laag in verticale modus | |
portraitWidth | Aangepaste breedte instellen voor de eerste laag in verticale modus |
IubendaCMPConfig config = IubendaCMPConfig.builder()
.gdprEnabled(true)
.siteId("12341234")
.cookiePolicyId("56785678")
.forceConsent(true)
.googleAds(true)
.applyStyles(false)
.cssResource(R.raw.custom_style)
.jsonResource(R.raw.config)
.acceptIfDismissed(true)
.build();
custom_style.css:
/***************************************************************************
// * iubenda Privacy Controls and Cookie Solution *
// * *
// * Sample CSS v2.2.6 *
// * *
// * (c) 2019 iubenda srl <info@iubenda.com> *
// * All Rights Reserved. *
// * *
// *************************************************************************
//
// CHANGELOG
//
// 2.2.7 - 2020-06-18
// - Fix container breaking on mobile.
//
// 2.2.6 - 2020-05-27
// - Hide scroll bar visibility.
// - Fix brand image height on mobile.
//
// 2.2.5 - 2020-05-06
// - Fix IE flex content.
// - Fix text overflow.
//
// 2.2.3 - 2020-04-21
// - Cursor pointer
// - Button text ellipsis
// - Equalize shadows top/bottom modal bar
//
// 2.2.2 - 2020-04-06
// - Add pointer events auto to the overlay
//
// 2.2.1 - 2020-03-06
// - Introduce popover.
//
// 2.2.0 - 2019-11-07
// - Introduce brand customizations
//
// 2.1.5 - 2019-11-22
// - Add class to go fullscreen.
//
// 2.1.4 - 2020-03-25
// - Make the banner shadow darker
//
// 2.1.3 - 2020-01-22
// - Fix banner not appearing on iPhone.
//
// 2.1.2 - 2019-11-07
// - Fix buttons height on IE.
//
// 2.1.1 - 2019-10-30
// - Fix buttons margin and customize-advertising-tracking button width on mobile.
//
// 2.1.0 - 2019-10-24
// - Introduce text overflowing mask and style for reject button.
//
// 2.0.4 - 2019-06-24
// - Convert close button width to min-width
//
// 2.0.3 - 2019-05-24
// - Introduce new positioning options
//
// 2.0.2 - 2019-05-02
// - Fix text spaces when custom content
//
// 2.0.1 - 2019-04-09
// - Add rules for buttons group
//
// 2.0.0 - 2019-02-01
// - Full rewrite to accommodate the new markup
//
// 0.0.1 - 2015-04-01
// - First implementation of the sample CSS
*/
/*
-----------------
IMPORTANT: Changing the following values may prevent the notice from being displayed properly.
-----------------
*/
#iubenda-cs-banner {
font-size: 15px !important;
background: none !important;
line-height: 1.4 !important;
position: fixed !important;
z-index: 99999998 !important;
top: 0 !important;
left: 0 !important;
width: 100% !important;
height: 100% !important;
border: 0 !important;
margin: 0 !important;
padding: 0 !important;
overflow: hidden !important;
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
will-change: opacity, visibility;
opacity: 0 !important;
visibility: hidden !important;
pointer-events: none !important;
-webkit-transition: opacity 0.4s ease, visibility 0.4s ease !important;
-o-transition: opacity 0.4s ease, visibility 0.4s ease !important;
transition: opacity 0.4s ease, visibility 0.4s ease !important;
/* default */
}
#iubenda-cs-banner [class*=" iub"],
#iubenda-cs-banner [class^=iub],
#iubenda-cs-banner .iubenda-banner-content:not(.iubenda-custom-content) * {
font-size: 100% !important;
width: auto !important;
-webkit-appearance: none !important;
-moz-appearance: none !important;
appearance: none !important;
background: none !important;
-webkit-box-sizing: border-box !important;
box-sizing: border-box !important;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0) !important;
-webkit-backface-visibility: hidden !important;
backface-visibility: hidden !important;
font-family: -apple-system, sans-serif !important;
text-decoration: none !important;
color: currentColor !important;
background-attachment: scroll !important;
background-color: transparent !important;
background-image: none !important;
background-position: 0 0 !important;
background-repeat: repeat !important;
border: 0 !important;
border-color: #000 !important;
border-color: currentColor !important;
border-radius: 0 !important;
border-style: none !important;
border-width: medium !important;
bottom: auto !important;
clear: none !important;
clip: auto !important;
counter-increment: none !important;
counter-reset: none !important;
direction: inherit !important;
float: none !important;
font-style: inherit !important;
font-variant: normal !important;
font-weight: inherit !important;
height: auto !important;
left: auto !important;
letter-spacing: normal !important;
line-height: inherit !important;
list-style-type: inherit !important;
list-style-position: outside !important;
list-style-image: none !important;
margin: 0 !important;
max-height: none !important;
max-width: none !important;
min-height: 0 !important;
min-width: 0 !important;
opacity: 1;
outline: 0 !important;
overflow: visible !important;
padding: 0 !important;
position: static !important;
quotes: "" "" !important;
right: auto !important;
table-layout: auto !important;
text-align: left !important;
text-indent: 0 !important;
text-transform: none !important;
top: auto !important;
unicode-bidi: normal !important;
vertical-align: baseline !important;
visibility: inherit !important;
white-space: normal !important;
width: auto !important;
word-spacing: normal !important;
z-index: auto !important;
background-origin: padding-box !important;
background-origin: padding-box !important;
background-clip: border-box !important;
background-size: auto !important;
-o-border-image: none !important;
border-image: none !important;
border-radius: 0 !important;
border-radius: 0 !important;
-webkit-box-shadow: none !important;
box-shadow: none !important;
-webkit-column-count: auto !important;
-moz-column-count: auto !important;
column-count: auto !important;
-webkit-column-gap: normal !important;
-moz-column-gap: normal !important;
column-gap: normal !important;
-webkit-column-rule: medium none #000 !important;
-moz-column-rule: medium none #000 !important;
column-rule: medium none #000 !important;
-webkit-column-span: none !important;
-moz-column-span: none !important;
column-span: none !important;
-webkit-column-width: auto !important;
-moz-column-width: auto !important;
column-width: auto !important;
-webkit-font-feature-settings: normal !important;
font-feature-settings: normal !important;
overflow-x: visible !important;
overflow-y: visible !important;
-webkit-hyphens: manual !important;
-ms-hyphens: manual !important;
hyphens: manual !important;
-webkit-perspective: none !important;
perspective: none !important;
-webkit-perspective-origin: 50% 50% !important;
perspective-origin: 50% 50% !important;
text-shadow: none !important;
-webkit-transition: all 0s ease 0s !important;
-o-transition: all 0s ease 0s !important;
transition: all 0s ease 0s !important;
-webkit-transform: none !important;
-ms-transform: none !important;
transform: none !important;
-webkit-transform-origin: 50% 50% !important;
-ms-transform-origin: 50% 50% !important;
transform-origin: 50% 50% !important;
-webkit-transform-style: flat !important;
transform-style: flat !important;
word-break: normal !important;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
#iubenda-cs-banner .iub-popover-trigger {
display: inline-block !important;
text-decoration: underline !important;
-webkit-text-decoration-style: dashed !important;
text-decoration-style: dashed !important;
position: relative !important;
margin-right: 16px !important;
cursor: pointer !important;
line-height: 1.25 !important;
}
#iubenda-cs-banner .iub-popover-trigger:before, #iubenda-cs-banner .iub-popover-trigger:after {
content: "";
display: inline-block;
width: 14px;
height: 14px;
border-radius: 12px;
vertical-align: middle;
background-size: 4px;
position: absolute;
left: calc(100% + 2px);
top: 3px;
}
#iubenda-cs-banner .iub-popover-trigger:before {
background-color: currentColor;
opacity: 0.35;
}
#iubenda-cs-banner .iub-popover-trigger:after {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='13' viewBox='0 0 7 13'%3E%3Cg fill='%23FFF' fill-rule='evenodd'%3E%3Cpath d='M2.779 1.288a1.287 1.287 0 112.574 0 1.287 1.287 0 01-2.574 0zM5.467 10.422l.903 1.851-.7.341a2.496 2.496 0 01-3.545-2.717l.818-3.252a.42.42 0 00-.178-.382.422.422 0 00-.452-.041l-.844.412-.902-1.852.843-.412a2.491 2.491 0 012.576.233 2.49 2.49 0 01.989 2.389 1.105 1.105 0 01-.02.095l-.817 3.253a.42.42 0 00.178.382c.08.059.244.142.451.041l.7-.341z'/%3E%3C/g%3E%3C/svg%3E");
background-position: center;
background-repeat: no-repeat;
}
#iubenda-cs-banner .iub-popover {
position: absolute !important;
top: 24px !important;
bottom: 0 !important;
left: 0 !important;
right: 0 !important;
border-radius: 4px !important;
background-color: white !important;
color: #222 !important;
z-index: 2 !important;
-webkit-box-shadow: 0 0 32px rgba(0, 0, 0, 0.1) !important;
box-shadow: 0 0 32px rgba(0, 0, 0, 0.1) !important;
opacity: 0 !important;
visibility: hidden !important;
-webkit-transform: translateY(24px) !important;
-ms-transform: translateY(24px) !important;
transform: translateY(24px) !important;
-webkit-transition: opacity 0.3s ease, visibility 0.3s ease, -webkit-transform 0.3s ease !important;
transition: opacity 0.3s ease, visibility 0.3s ease, -webkit-transform 0.3s ease !important;
-o-transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease !important;
transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease !important;
transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease, -webkit-transform 0.3s ease !important;
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-webkit-box-orient: vertical !important;
-webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
flex-direction: column !important;
z-index: 99 !important;
pointer-events: none !important;
overflow: hidden !important;
}
#iubenda-cs-banner .iub-popover-header {
-ms-flex-negative: 0 !important;
flex-shrink: 0 !important;
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
justify-content: space-between !important;
z-index: 1 !important;
-webkit-box-shadow: 0 16px 16px #FFF !important;
box-shadow: 0 16px 16px #FFF !important;
}
#iubenda-cs-banner .iub-popover-header > * {
padding: 24px !important;
padding-bottom: 0 !important;
}
#iubenda-cs-banner .iub-popover-header-title {
font-size: 18px !important;
font-weight: bold !important;
}
#iubenda-cs-banner .iub-popover-header-close {
font-size: 24px !important;
font-weight: 300 !important;
cursor: pointer !important;
line-height: 1 !important;
position: relative !important;
top: -2px !important;
}
#iubenda-cs-banner .iub-popover-content {
font-size: 14px !important;
-webkit-box-flex: 1 !important;
-ms-flex: 1 !important;
flex: 1 !important;
font-weight: 300 !important;
line-height: 1.5 !important;
position: relative !important;
}
#iubenda-cs-banner .iub-popover-content > div {
padding: 0 24px !important;
overflow-y: auto !important;
height: 100% !important;
}
#iubenda-cs-banner .iub-popover-content > div:before, #iubenda-cs-banner .iub-popover-content > div:after {
content: "";
display: block;
height: 24px;
}
#iubenda-cs-banner .iub-popover-content h3 {
margin-bottom: 16px !important;
font-weight: bold !important;
}
#iubenda-cs-banner .iub-popover-content p:not(:last-of-type) {
margin-bottom: 16px !important;
}
#iubenda-cs-banner .iub-popover-content a {
text-decoration: underline !important;
cursor: pointer !important;
opacity: 0.8 !important;
}
#iubenda-cs-banner .iub-popover-content b, #iubenda-cs-banner .iub-popover-content strong {
font-weight: bold !important;
}
#iubenda-cs-banner .iub-popover-content i, #iubenda-cs-banner .iub-popover-content em {
font-style: italic !important;
}
#iubenda-cs-banner .iub-popover-content:after {
position: absolute;
content: "";
display: block;
height: 24px;
pointer-events: none;
left: 0;
right: 0;
bottom: 0;
background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(white));
background: -o-linear-gradient(top, rgba(255, 255, 255, 0) 0%, white 100%);
background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, white 100%);
}
#iubenda-cs-banner.iubenda-cs-default-floating .iub-popover {
left: 8px !important;
right: 8px !important;
}
@media (min-width: 640px) {
#iubenda-cs-banner.iubenda-cs-default .iub-popover {
max-width: 992px !important;
margin: 0 auto !important;
}
#iubenda-cs-banner.iubenda-cs-default.iubenda-cs-top .iub-popover {
top: 16px !important;
bottom: -16px !important;
}
#iubenda-cs-banner.iubenda-cs-default.iubenda-cs-bottom .iub-popover {
top: -16px !important;
bottom: 16px !important;
}
}
#iubenda-cs-banner.iub-popover-visible .iub-popover {
opacity: 1 !important;
visibility: visible !important;
-webkit-transform: translateY(0) !important;
-ms-transform: translateY(0) !important;
transform: translateY(0) !important;
pointer-events: auto !important;
}
#iubenda-cs-banner.iubenda-cs-overlay:before {
content: "" !important;
position: fixed !important;
top: 0 !important;
left: 0 !important;
width: 100% !important;
height: 100% !important;
background-color: rgba(0, 0, 0, 0.5) !important;
z-index: 1 !important;
pointer-events: auto !important;
}
#iubenda-cs-banner.iubenda-cs-center {
-webkit-box-align: center !important;
-ms-flex-align: center !important;
align-items: center !important;
-webkit-box-pack: center !important;
-ms-flex-pack: center !important;
justify-content: center !important;
}
#iubenda-cs-banner.iubenda-cs-top {
-webkit-box-align: start !important;
-ms-flex-align: start !important;
align-items: flex-start !important;
}
#iubenda-cs-banner.iubenda-cs-bottom {
-webkit-box-align: end !important;
-ms-flex-align: end !important;
align-items: flex-end !important;
}
#iubenda-cs-banner.iubenda-cs-left {
-webkit-box-pack: start !important;
-ms-flex-pack: start !important;
justify-content: flex-start !important;
}
#iubenda-cs-banner.iubenda-cs-right {
-webkit-box-pack: end !important;
-ms-flex-pack: end !important;
justify-content: flex-end !important;
}
#iubenda-cs-banner.iubenda-cs-visible {
opacity: 1 !important;
visibility: visible !important;
}
#iubenda-cs-banner.iubenda-cs-visible .iubenda-cs-container {
pointer-events: auto !important;
}
#iubenda-cs-banner.iubenda-cs-slidein .iubenda-cs-container {
-webkit-transition: -webkit-transform 0.4s ease !important;
transition: -webkit-transform 0.4s ease !important;
-o-transition: transform 0.4s ease !important;
transition: transform 0.4s ease !important;
transition: transform 0.4s ease, -webkit-transform 0.4s ease !important;
}
#iubenda-cs-banner.iubenda-cs-slidein.iubenda-cs-top .iubenda-cs-container {
-webkit-transform: translateY(-48px) !important;
-ms-transform: translateY(-48px) !important;
transform: translateY(-48px) !important;
}
#iubenda-cs-banner.iubenda-cs-slidein.iubenda-cs-bottom .iubenda-cs-container {
-webkit-transform: translateY(48px) !important;
-ms-transform: translateY(48px) !important;
transform: translateY(48px) !important;
}
#iubenda-cs-banner.iubenda-cs-slidein.iubenda-cs-visible .iubenda-cs-container {
-webkit-transform: translateY(0) !important;
-ms-transform: translateY(0) !important;
transform: translateY(0) !important;
}
#iubenda-cs-banner .iubenda-cs-container {
position: relative !important;
z-index: 2 !important;
}
#iubenda-cs-banner .iubenda-cs-brand {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
padding: 16px !important;
-ms-flex-negative: 0 !important;
flex-shrink: 0 !important;
}
#iubenda-cs-banner .iubenda-cs-brand > div {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-webkit-box-pack: start !important;
-ms-flex-pack: start !important;
justify-content: flex-start !important;
}
#iubenda-cs-banner .iubenda-cs-brand img {
max-width: 192px !important;
max-height: 56px !important;
}
#iubenda-cs-banner .iubenda-cs-content {
position: relative !important;
z-index: 1 !important;
overflow: hidden !important;
-webkit-transition: -webkit-transform 0.4s ease !important;
transition: -webkit-transform 0.4s ease !important;
-o-transition: transform 0.4s ease !important;
transition: transform 0.4s ease !important;
transition: transform 0.4s ease, -webkit-transform 0.4s ease !important;
}
#iubenda-cs-banner .iubenda-cs-rationale {
position: relative !important;
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-webkit-box-orient: vertical !important;
-webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
flex-direction: column !important;
}
#iubenda-cs-banner .iubenda-cs-close-btn {
position: absolute !important;
top: -2px !important;
padding: 16px !important;
right: 0 !important;
min-width: 48px !important;
height: 48px !important;
font-size: 24px !important;
line-height: 0 !important;
font-weight: lighter !important;
cursor: pointer !important;
text-align: center !important;
}
#iubenda-cs-banner .iubenda-cs-close-btn:hover {
opacity: 0.5 !important;
}
#iubenda-cs-banner .iubenda-banner-content {
font-weight: 300 !important;
margin: 16px !important;
margin-bottom: 0 !important;
-webkit-box-flex: 1 !important;
-ms-flex: 1 1 auto !important;
flex: 1 1 auto !important;
overflow-y: auto !important;
mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0%, black 16px) !important;
-webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0%, black 16px) !important;
padding-bottom: 32px !important;
}
#iubenda-cs-banner .iubenda-banner-content-padded {
padding-right: 32px !important;
}
#iubenda-cs-banner .iubenda-banner-content a {
cursor: pointer !important;
color: currentColor !important;
opacity: 0.7 !important;
text-decoration: underline !important;
}
#iubenda-cs-banner .iubenda-banner-content a:hover {
opacity: 1 !important;
}
#iubenda-cs-banner #iubenda-cs-title {
font-weight: bold !important;
margin-bottom: 16px !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group {
margin: 16px !important;
z-index: 1 !important;
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
margin-top: 0 !important;
-ms-flex-negative: 0 !important;
flex-shrink: 0 !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group > div {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
}
@media (min-width: 640px) {
#iubenda-cs-banner .iubenda-cs-opt-group {
-webkit-box-align: center !important;
-ms-flex-align: center !important;
align-items: center !important;
-webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
justify-content: space-between !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group-custom {
margin-right: auto !important;
-ms-flex-item-align: start !important;
align-self: start !important;
-webkit-box-pack: start !important;
-ms-flex-pack: start !important;
justify-content: flex-start !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group-consent {
margin-left: auto !important;
-ms-flex-item-align: end !important;
align-self: end !important;
-webkit-box-pack: end !important;
-ms-flex-pack: end !important;
justify-content: flex-end !important;
}
}
@media (max-width: 639px) {
#iubenda-cs-banner .iubenda-cs-opt-group {
margin: 12px !important;
-webkit-box-orient: vertical !important;
-webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
flex-direction: column !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group-custom {
-webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
order: 2;
}
#iubenda-cs-banner .iubenda-cs-opt-group-consent {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
}
#iubenda-cs-banner .iubenda-cs-opt-group button {
-webkit-appearance: none !important;
-moz-appearance: none !important;
appearance: none !important;
padding: 8px 32px !important;
border-radius: 64px !important;
cursor: pointer !important;
font-weight: bold !important;
font-size: 100% !important;
margin-top: 4px !important;
margin-bottom: 4px !important;
text-align: center !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group button:focus {
opacity: 0.8 !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group button:hover {
opacity: 0.5 !important;
}
@media (min-width: 640px) {
#iubenda-cs-banner .iubenda-cs-opt-group button:not(:last-of-type) {
margin-right: 8px !important;
}
}
@media (max-width: 639px) {
#iubenda-cs-banner .iubenda-cs-opt-group button {
padding: 8px 24px !important;
width: 100% !important;
display: block;
text-align: center !important;
margin: 6px 3px !important;
}
}
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-brand {
margin: 0 -8px 0 !important;
}
@media (max-width: 991px) {
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-brand {
margin: -8px -8px 0 !important;
}
}
@media (min-width: 992px) {
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-brand div {
margin: 0 auto !important;
width: calc(992px - 32px) !important;
}
}
@media (max-width: 991px) {
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-brand div {
margin: 0 8px !important;
}
}
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-container {
width: 100% !important;
}
@media (min-width: 992px) {
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-rationale {
width: 992px !important;
margin: 16px auto !important;
}
}
@media (max-width: 991px) {
#iubenda-cs-banner.iubenda-cs-default .iubenda-cs-content {
padding: 8px !important;
}
}
#iubenda-cs-banner.iubenda-cs-default-floating .iubenda-cs-brand {
margin: -8px -8px 0 !important;
}
#iubenda-cs-banner.iubenda-cs-default-floating .iubenda-cs-brand div {
margin: 8px !important;
}
@media (min-width: 992px) {
#iubenda-cs-banner.iubenda-cs-default-floating .iubenda-cs-container {
width: 992px !important;
}
}
@media (max-width: 991px) {
#iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center.iubenda-cs-top .iubenda-cs-container, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center.iubenda-cs-bottom .iubenda-cs-container {
width: 100% !important;
}
}
@media (min-width: 640px) {
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-container, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-container, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-container {
width: 480px !important;
}
}
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-opt-group, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-opt-group, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-opt-group {
-webkit-box-orient: vertical !important;
-webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
flex-direction: column !important;
}
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-opt-group > div, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-opt-group > div, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-opt-group > div {
width: 100% !important;
}
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-opt-group button, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-opt-group button, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-opt-group button {
display: block !important;
width: 100% !important;
text-align: center !important;
}
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-opt-group-custom, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-opt-group-custom, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-opt-group-custom {
-webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
order: 2;
}
#iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-top):not(.iubenda-cs-center) .iubenda-cs-opt-group-consent, #iubenda-cs-banner.iubenda-cs-default-floating:not(.iubenda-cs-bottom):not(.iubenda-cs-center) .iubenda-cs-opt-group-consent, #iubenda-cs-banner.iubenda-cs-default-floating.iubenda-cs-center:not(.iubenda-cs-top):not(.iubenda-cs-bottom) .iubenda-cs-opt-group-consent {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
#iubenda-cs-banner.iubenda-cs-default-floating .iubenda-cs-content {
-webkit-box-shadow: 0 8px 48px rgba(0, 0, 0, 0.15) !important;
box-shadow: 0 8px 48px rgba(0, 0, 0, 0.15) !important;
padding: 8px !important;
}
@media (min-width: 992px) {
#iubenda-cs-banner.iubenda-cs-default-floating .iubenda-cs-content {
border-radius: 4px !important;
margin: 16px !important;
}
}
#iubenda-cs-banner.iubenda-cs-fix-height .iubenda-cs-container,
#iubenda-cs-banner.iubenda-cs-fix-height .iubenda-cs-content,
#iubenda-cs-banner.iubenda-cs-fix-height .iubenda-cs-rationale {
height: 100% !important;
}
#iubenda-cs-banner.iubenda-cs-fix-height.iubenda-cs-default-floating .iubenda-cs-content {
height: calc(100% - 32px) !important;
}
#iubenda-cs-banner.iubenda-cs-fix-height .iubenda-cs-brand img {
max-width: 75% !important;
}
#iubenda-cs-banner .iubenda-cs-content {
background-color: #000000 !important;
color: #FFFFFF !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group {
color: #000000 !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group button {
background-color: rgba(255, 255, 255, 0.1) !important;
color: #FFFFFF !important;
}
#iubenda-cs-banner .iubenda-cs-opt-group button.iubenda-cs-btn-primary {
background-color: #0073CE !important;
color: #FFFFFF !important;
}
/*
-----------------
MOBILE SDK
-----------------
*/
.iubenda-mobile-sdk #iubenda-cs-banner.iubenda-cs-visible {
justify-content: center!important;
align-items: center!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-container {
max-height: 100%!important;
display: flex!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-container .iubenda-cs-content {
height: auto!important;
border-radius: 0!important;
margin: 0!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-opt-group {
text-align: center!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-close-btn {
display: none!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-rationale {
display: flex!important;
flex-direction: column!important;
height: 100%!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-banner-content {
flex: 1;
overflow-y: auto!important;
margin: 0!important;
padding: 16px 16px 48px!important;
max-height: inherit!important;
mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0%, black 15%) !important;
-webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0%, black 15%) !important;
}
@media (min-width: 992px) {
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-banner-content,
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-opt-group {
margin: 24px!important;
}
.iubenda-mobile-sdk #iubenda-cs-banner.iubenda-cs-default .iubenda-cs-rationale {
width: 100% !important;
margin: 0 !important;
}
}
.no-banner #iubenda-cs-banner {
display: none!important;
}
/** fix scrolling in iOS 10 **/
.iubenda-mobile-sdk #iubenda-cs-banner.iubenda-cs-visible .iubenda-cs-container,
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-container .iubenda-cs-content,
.iubenda-mobile-sdk #iubenda-cs-banner .iubenda-cs-rationale {
height: 100%!important;
}
.iubenda-mobile-sdk #iubenda-iframe .iubenda-iframe-top-container {
position: relative!important;
}
.iubenda-mobile-sdk #iubenda-iframe #iab-container {
position: absolute!important;
top: 0!important;
bottom: 0!important;
left: 0!important;
right: 0!important;
}
/** iframe **/
.iubenda-mobile-sdk #iubenda-iframe #iubenda-iframe-popup {
height: 100%!important;
width: 100%!important;
}
.iubenda-mobile-sdk #iubenda-iframe .iubenda-iframe-close-btn {
display: none!important;
}
.iubenda-mobile-sdk #iubenda-iframe {
background-color: transparent!important;
}
/* Fix cookie policy trimming on older Android devices */
.iubenda-mobile-sdk #iubenda-iframe iframe {
background-color: transparent!important;
position:absolute!important;
bottom:0!important;
top:0!important;
}
.iubenda-mobile-sdk #iubenda-iframe .iubenda-iframe-spinner {
top: 50px !important;
}
/* Fix TCF widget overlapping footer in older Android devices */
.iubenda-mobile-sdk #iubenda-iframe .iubenda-iframe-footer {
z-index: 9999!important;
}
config.json:
{
"banner": {
"acceptButtonDisplay": "true",
"customizeButtonDisplay": "true",
"backgroundColor": "#000000",
"textColor": "#FFFFFF",
"acceptButtonColor": "#FD1D1D",
"acceptButtonCaptionColor": "white",
"customizeButtonColor": "transparent",
"customizeButtonCaptionColor": "#FFF"
}
}
In tegenstelling tot de standaardversie van de CS is de TCF optie standaard ingeschakeld in de SDK. Als je geen gepersonaliseerde advertenties van derden draait en je wilt de TCF ondersteuning uitschakelen, stel dan enableTcf: false
in het config.json bestand in.
Voorbeeld:
{
…
enableTcf: false,
"banner": {
…
}
}
invalidateConsentBefore
Accepteert een Datum en als deze wordt gewaardeerd, moet worden gecontroleerd of er al een voorkeur is uitgesproken en als die er is en de tijdstempel is kleiner dan de dag van de geconfigureerde datum, dan moet de voorkeur niet meer in aanmerking worden genomen. Geaccepteerde formaten: dd/MM/jjjj – jjjj/MM/dd – dd-MM-jjjj – jjjj-MM-dd – dd.MM.jjjj – jjjj.MM.dd
expireAfter
Indien gewaardeerd, wordt het aantal dagen van de tijdstempel van de toestemming en de gehele waarde van de expireAfter
parameter vergeleken. Als de toestemmingsdatum is verstreken, worden de gegevens op het apparaat gewist (Standaard: 360 dagen)
Voorbeeld:
{
…
"invalidateConsentBefore": "08/11/2022",
"expireAfter": 100,
…
}
}
Methode | Beschrijving |
---|---|
askConsent() | Presenteert de toestemmings-UI bij het starten van de app |
openPreferences() | (voorheen editConsent, nu afgeschreven) Sta gebruikers toe om hun toestemmingsvoorkeuren te wijzigen als er al toestemming is gegeven. Anders wordt het toestemmingsverzoek geopend. |
Om de toestemmings-UI te openen bij het starten van de app, roep je IubendaCMP.askConsent()
aan in de onCreate
methode van je hoofdactiviteit:
skipNoticeWhenOffline
niet is ingesteld op false); IubendaCMP.askConsent()
het toestemmingsverzoek laten verschijnen.Houd er rekening mee dat als je forceConsent
op false hebt ingesteld, IubendaCMP.askConsent()
geen effect heeft als de gebruiker het toestemmingsverzoek na de eerste start afwijst: om de toestemmings-UI opnieuw te tonen, moet je IubendaCMP.openPreferences()
aanroepen.
Voorbeeld:
public class DemoActivity extends AppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// automatically show the consent popup when needed
IubendaCMP.askConsent(this);
}
}
Dus als het je doel is om toestemmingen te maximaliseren:
forceConsent
in op true en IubendaCMP.askConsent()
aanAnders kun je de gebruiker de kans geven om het toestemmingsverzoek te weigeren zonder opnieuw te worden gevraagd wanneer IubendaCMP.askConsent()
weer wordt opgeroepen:
forceConsent
in op falseIubendaCMP.askConsent()
aan, maar merk op dat het geen effect heeft na de eerste lanceringIubendaCMP.openPreferences()
aanOpmerkingen over IubendaCMP.openPreferences()
:
IubendaCMP.openPreferences()
het toestemmingsverzoek.IubendaCMP.openPreferences()
gebruikers in staat om hun toestemmingsvoorkeuren te wijzigen:
"perPurposeConsent": true
, worden de voorkeuren per categorie getoond."perPurposeConsent": false
worden de TCF toestemmingsvoorkeuren getoond."perPurposeConsent": false
en "enableTcf": false
, wordt het cookiebeleid getoond.Om volledige controle te hebben over wanneer het toestemmingsverzoek wordt getoond, zou je volledig kunnen vertrouwen op IubendaCMP.openPreferences()
, maar dan moet je een manier implementeren om te controleren of er toestemming is gegeven.
Je kunt een aangepaste activiteit gebruiken om de gebruiker om toestemming te vragen, zonder de meegeleverde popup te tonen; in dit geval kun je gebruik maken van de volgende methoden van IubendaCMP
:
Methode | Beschrijving |
---|---|
accept() | (voorheen acceptDefaultConsent, nu afgeschreven) Stelt de standaard toestemming op de achtergrond in |
reject() | Weiger de standaard toestemming op de achtergrond |
openTcfPreferences() | (voorheen showConsentPreferences, nu afgeschreven) Opent een popup voor het instellen van TCF toestemmingsvoorkeuren |
openTcfVendorsPreferences() | (Voorheen showVendorsPreferences, nu afgeschreven) Opent een popup voor het instellen van voorkeuren voor verkopers |
openCookiePolicy() | (Voorheen showCookiePolicy, nu afgeschreven) Opent een popup met het cookiebeleid |
shouldGetConsent() | Roep deze functie aan om te controleren of je de gebruiker om toestemming moet vragen, of dat de voorkeur al is aangegeven |
getConfig() | Configuratie geïnitialiseerd in Toepassingsklasse |
isInitialized() | Indien true is iubenda SDK succesvol geïnitialiseerd |
isPurposeEnabled(id) | Als perPurposeConsent true is, wordt true getoond als de gebruiker toestemming heeft gegeven voor het doel dat is opgegeven in de numerieke parameter id . |
isConsentGiven() | Als perPurposeConsent false is, toont true als de gebruiker de toestemming heeft geaccepteerd, anders false . |
clearData() | Wist de toestemmingssignalen voor CMP die tijdens de vorige gebruikersinteractie zijn verzameld |
shouldGetConsentForInvalidateConsentBefore() | Roep deze functie aan om te controleren of het nodig is om toestemming van de gebruiker te vragen als de tijdstempel kleiner is dan de dag van de geconfigureerde invalidateConsentBefore datumparameter. |
getVendorList() | Leverancierslijst tonen. Als de optionele parameter version niet is ingesteld, wordt de nieuwste lijst met leveranciers getoond. Neemt CustomUIListener parameter voor succes- en foutresultaten |
getUserPreferences() | Geef opgeslagen gebruikersvoorkeuren die ook toestemming bevatten weer |
setUserPreferences() | Gebruikersvoorkeuren instellen met toevoegingen zoals toestemming, TCF-gegevens door de webservice |
Opmerkingen over IubendaCMP.accept()
:
Er wordt ook geadviseerd om een luisteraar toe te voegen om te detecteren wanneer de gebruiker toestemming heeft gegeven bij het aanroepen van de open*
methoden.
Voorbeeld:
public class ConsentActivity extends Activity implements IubendaCMPChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_consent);
}
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
IubendaCMP.registerChangeListener(this);
}
@Override
protected void onDestroy() {
IubendaCMP.unregisterChangeListener(this);
super.onDestroy();
}
public void onAcceptClick(View view) {
IubendaCMP.accept();
finish();
}
public void onOptionsClick(View view) {
IubendaCMP.openTcfPreferences(this);
}
@Override
public void onConsentChanged() {
if (IubendaCMP.isConsentGiven())
finish();
}
}
Als het nodig is, kun je luisteren naar wijzigingen in de toestemming van de gebruiker door een luisteraar te registreren. Dit doe je door IubendaCMP.registerChangeListener()
aan te roepen, bijvoorbeeld in de onCreate
methode van je Applicatie of Activiteit.
Je kunt een listener verwijderen door IubendaCMP.unregisterChangeListener()
aan te roepen, bijvoorbeeld binnen onDestroy()
.
Luisteraars worden vastgelegd als een zwakke referentie.
Je hebt toegang tot de IAB TCF instellingen, zoals de gecodeerde toestemmingsstring, hetzij rechtstreeks als IAB specs of via de gemaksmethoden die worden aangeboden door een CMPStorage
object. Je kunt een instantie van de opslag krijgen door IubendaCMP.getStorage()
aan te roepen.
Methode | Beschrijving |
---|---|
getConsentString() | Geef de toestemmingsreeks weer |
getSubjectToGdpr() | Geeft de SubjectToGdpr-instelling weer |
getCmpPresentValue() | Geeft true terug als de CMP aanwezig is |
getVendorsString() | Geeft de binaire gegevensreeks van de leverancier weer |
getPurposesString() | Geeft de doeleinden binaire gegevensreeks weer |
isPurposeConsentGivenForPurposeId(purposeId) | Geeft als resultaat of de toestemming is gegeven voor het opgegeven doel id |
isVendorConsentGivenForVendorId(vendorId) | Geeft als resultaat of er toestemming is gegeven voor de doorgegeven id van de verkoper |
getConsentTimestamp | Geeft de tijdstempel van de toestemming (sinds v1.3.2) |
isPreferenceExpressed() | Geeft true aan als de SDK een reeds opgeslagen geldige voorkeur detecteert, “valid” betekent dat als de voorkeur ongeldig wordt gemaakt door invalidateConsentBefore , de methode false aan geeft |
Lees onze TCF handleiding voor meer informatie over het TCF en de geavanceerde instellingen, zoals de mogelijkheid om doelen te beperken en de uitvoerbare rechtsgrondslag te bepalen(toestemming en/of legitiem belang).
Zoals uitgelegd in hun documentatie (“Vereisten om niet-gepersonaliseerde advertenties weer te geven”), ondersteunt Google geen gevallen waarin toestemming is geweigerd, zelfs niet voor niet-gepersonaliseerde advertenties. Als gevolg daarvan worden er helemaal geen advertenties weergegeven.
Bibliotheken van derden die zich niet direct houden aan het IAB Transparency and Consent Framework, moeten mogelijk afzonderlijk worden geïnitialiseerd, afhankelijk van de toestemmingsstatus en -voorkeuren.
Om dat te bereiken kun je een change listener implementeren in je applicatieklasse en IubendaCMP.isConsentGiven()
en andere methoden aanroepen om de toestemmingsstatus te evalueren.
Voorbeeld:
public class MyApplication extends Application implements IubendaCMPChangeListener { @Override public void onCreate() { super.onCreate(); IubendaCMPConfig config = IubendaCMPConfig.builder() .gdprEnabled(true) .siteId("12345678") .cookiePolicyId("ABCDE") .googleAds(true) .build(); IubendaCMP.initialize(this, config); IubendaCMP.registerChangeListener(this); initializeLibraries(); } private void initializeLibraries() { if (IubendaCMP.isConsentGiven()) { if (IubendaCMP.isGooglePersonalized()) { // enable Google personalized ADs } else { // disable Google personalized ADs } // setup other libraries } } @Override public void onConsentChanged() { initializeLibraries(); } }
De bibliotheek heeft een internetverbinding nodig om de toestemmingspop-up weer te geven en dus om de toestemmingsstring te genereren of bij te werken, terwijl de meest recente toestemmingsstring altijd beschikbaar is op de lokale opslag via CMPStorage
.
Standaard controleert de askConsent
methode of er een internetverbinding is voordat de popup-activiteit wordt gestart, dus als er geen verbinding is, wordt de popup niet getoond, maar wordt deze bij de volgende start wel getoond.
Als er een fout optreedt tijdens de toestemmingsstroom, wordt er in plaats daarvan een foutmelding getoond met de optie om het opnieuw te proberen of de popup te sluiten. In dit geval zorgt het instellen van forceConsent(true)
ervoor dat de popup opnieuw wordt weergegeven als er geen toestemming is gegeven.
Lees deze handleiding om te leren hoe je de Consent Database API kunt implementeren om toestemmingsvoorkeuren tussen sites en apps te synchroniseren voor elke geauthenticeerde gebruiker.
reject()
toegevoegd aan de klasse IubendaCMPlandscapeWidth
, landscapeHeight
, portraitWidth
, portraitHeight
toegevoegd aan IubendaCMPConfiguration
getPreferencesJson
toegevoegd aan de IubendaCMP
klassedismissColor
toegevoegd aan de IubendaCMPConfig
klasse voor het aanpassen van de sluitknopgetVendorList()
, getUserPreferences()
en setUserPreferences()
isGooglePersonalized()
is afgeschrevenproxyUrl(baseUrl)
methode toegevoegd om de URL te herschrijven die wordt gebruikt om CS in te sluiten.saveConsent(preferencesJson,timestamp)
functieisPreferenceExpressed()
methode toegevoegdisConsentGiven()
methodeexpireAfter
optie toegevoegd aan config.json
om te vergelijken met opgeslagen toestemmingsdatum en gegevens indien nodig te wisseninvalidateConsentBefore
Parameter toegevoegd aan IubendaCMP klasse om te vergelijken met opgeslagen toestemmingsdatum en opnieuw toestemming te tonen indien nodigshouldGetConsentForInvalidateConsentBefore
() functie toegevoegd aan IubendaCMP-klasse voor aangepaste UI-oproepIubendaCMP.storage
parameter toegevoegdBannerPosition
Parameter toegevoegd aan IubendaCMPConfiguratie klasse om Consent Banner Positie aan te passen (standaard:CENTER)forceConsent=true
gebruiken met enableTcf=false
enableTcf=false
en forceConsent=false
zich niet correct gedroegen.IubendaCMP.clearData()
methode toegevoegd acceptDefaultConsent
, editConsent
, showConsentPreferences
, showVendorsPreferences
, showCookiePolicy
zijn hernoemd naar respectievelijk accept
, openPreferences
, openTcfPreferences
, openTcfVendorsPreferences
, openCookiePolicy
.isPurposeConsentGivenForPurposeId(purposeId)
en isVendorConsentGivenForVendorId(vendorId)
zijn toegevoegdpreventDismissWhenLoaded
toegevoegdConsentActivity
wordt hersteld voordat de SDK is geïnitialiseerd)hasConsent
is afgeschreven en vervangen door isConsentGiven
shouldGetConsent
functie geïntroduceerd voor meer aangepaste implementatiescsVersion
toegevoegdsaveConsent()
en CMPStorage
cssFile
en jsonFile
opties geïntroduceerdcssContent
geïntroduceerd en jsonContent
optiesskipNoticeWhenOffline
optie geïntroduceerdforceConsent
acceptIfDismissed
optie geïntroduceerd