Info
Content

Integratie van de CMP API voor apps

In sommige gevallen kunnen de bestaande SDK's niet worden gebruikt en zijn aangepaste intergaties nodig. In dit geval kunnen app-ontwikkelaars de CMP API for Apps gebruiken om de CMP handmatig in hun app te integreren.

Workflow

De CMP API voor apps wordt in de volgende volgorde gebruikt:

  1. De app vraagt ​​het consentmanager server eenmaal per dag (eerste start van de app op deze dag). Het verzendt de bestaande toestemmingsinformatie en vraagt ​​het consentmanager server of de gebruiker al dan niet (opnieuw) om toestemming moet worden gevraagd.
  2. Afhankelijk van de reactie van de consentmanager server, toont de app de toestemmingslaag in een webweergave. De gebruiker kan zich laten informeren en keuzes maken.
  3. Als de gebruiker klaar is, communiceert de webview dit naar de app. De app sluit de webweergave en verwerkt de toestemmingsinformatie.
  4. De app kan de toestemmingsinformatie vervolgens gebruiken voor zijn eigen gegevensverwerking.

1. Het opvragen van het consentmanager server

Als eerste stap stuurt de app een HTTP-verzoek naar:

https://[consentmanager-server]/delivery/appjson.php?id=[CMP-ID]&l=[Language]&idfa=[IDFA]&appname=[Appname]&consent=[Consent-Info]

Waarbij de volgende macro's vóór verzending door de app moeten worden vervangen:

  • [consentmanager-server] - Server-domein (zie Menu> Code ophalen> Instellingen app-SDK)
  • [CMP-ID] - ID van de CMP (zie Menu> Code ophalen> Instellingen app-SDK)
  • [Language] - Taalcode voor het weergeven van het bericht (bijv. EN, FR, DE, ...)
  • [IDFA] - optioneel. IDFA van de app
  • [Appname] - optioneel. Naam van de app voor rapportagedoeleinden
  • [Toestemmingsinformatie] - Toestemmingsinformatie zoals ontvangen van de webweergave (base64-gecodeerde versie van toestemmingsgegevens)

Voorbeeld-URL:

https://consentmanager.mgr.consensu.org/delivery/appjson.php?id=123456&l=FR&appname=my%20App&consent=Qxc2j2J8aN....

Het antwoord op dit verzoek is een JSON-tekst zoals het volgende:

{
 "status":1, 
 "regulation":1, 
 "message":"", 
 "url":"https://consentmanager.mgr.consensu.org/delivery/appcmp.php?id=123456&consent=&appname=my%20App&l=FR"
 }

De velden in de respons zijn als volgt:

Veld Omschrijving
status

0 = Geen toestemming vereist, webview mag niet worden weergegeven

1 = Toestemming vereist, URL van veld url zou in webview moeten worden getoond

2 = Fout opgetreden, zie message

regulation 0 = geen reguleringsinstellingen, 1 = GDPR van toepassing, 2 = CCPA van toepassing, 3 = LGPD van toepassing, ...
message Foutmelding die aan de ontwikkelaar moet worden getoond.
url URL die in een webweergave moet worden weergegeven

2. De webweergave weergeven

Als de aanroep naar /delivery/appjson.php (zie Stap 1) resulteerde in status = 1, moet de app de waarde van field gebruiken url en open het in een webweergave (browservenster ingebed in de app). De URL geeft een minimale HTML-pagina weer die de webversie van de CMP-code bevat. De pagina bevat ook een "Skipp" -link om problemen met JavaScript-compatibiliteit te voorkomen.

Om de CMP met alle functies weer te geven, moet de webview de volgende minimale functies bieden:

  • HTML 5-ondersteuning
  • CSS 3-ondersteuning
  • JavaScript 1.2-ondersteuning
  • DOM 3-ondersteuning
  • Minimale resolutie van 300x300 pixels (bij voorkeur volledige breedte en minimaal 80% hoogte in staande modus)
  • Open / navigeer naar URL's via https: protocol (bijv. Privacybeleid) door een nieuw browservenster te openen
  • Leg vast wanneer de webweergave probeert naar een URN te navigeren, beginnend met het protocol "consent: //"

De app mag de gebruiker niet toestaan ​​de webweergave op een andere manier over te slaan (bijvoorbeeld door de "terug" -knop of vergelijkbare functies uit te schakelen).

3. Verwerking van de toestemmingsgegevens

Nadat de gebruiker zijn keuzes heeft gemaakt, roept de CMP een URN aan met protocolprefix consent: // gevolgd door de toestemmingsinformatie in base64-websafe gecodeerde vorm. Voorbeeld:

consent://Q083NU1KN084QXBEOEFmWlhDREVBOUNzQVBfQUFIX0FBQWlnR2t0Zl9YX2ZiMnZqLV81OTlfdDBlWTFmOV82M3Ytd3pqaGVOcy04TnlkX1hfTDRYdjJNeXZCMzZwcTRLdVI0a3UzYkJBUWR0SE9uY1RRbVJ3SWxWcVRMc2IwMk1yN05LSjdMRW1sc2JlMmRZR0g5dm45WFRfWktaNzBfX19fXzdfM19fX19fXzc3Xy1iXzRHa3RmX1hfZmIydmotXzU5OV90MGVZMWY5XzYzdi13empoZU5zLThOeWRfWF9MNFh2Mk15dkIzNnBxNEt1UjRrdTNiQkFRZHRIT25jVFFtUndJbFZxVExzYjAyTXI3TktKN0xFbWxzYmUyZFlHSDl2bjlYVF9aS1o3MF9fX19fN18zX19fX19fNzdfLWJfNENnS0FZQUNFQVhJQkFBQ2JBR3lBT29BcGdCWFlDLWdHSUFNakFhRURBQWdMYUNRREFBUWdDNUFJQUFUWUEyUUIxQUZNQUs3QVgwQXhBQmtZRFFnb0FFQmJRYUFZQUNFQVhJQkFBQ2JBR3lBT29BcGdCWFlDLWdHSUFNakFhRUhBQWdMYUVRREFBUWdDNUFJQUFUWUEyUUIxQUZNQUs3QVgwQXhBQmtZRFFoSUFFQmJRcUFZQUNFQVhJQkFBQ2JBR3lBT29BcGdCWFlDLWdHSUFNakFhRUxBQWdMYUdRREFBUWdDNUFJQUFUWUEyUUIxQUZNQUs3QVgwQXhBQmtZRFFob0FFQmJRNkFZQUNFQVhJQkFBQ2JBR3lBT29BcGdCWFlDLWdHSUFNakFhRVBBQWdMYUlRREFBUWdDNUFJQUFUWUEyUUIxQUZNQUs3QVgwQXhBQmtZRFFpSUFFQmJSS0FZQUNFQVhJQkFBQ2JBR3lBT29BcGdCWFlDLWdHSUFNakFhRVRBQWdMYUtRREFBUWdDNUFJQUFUWUEyUUIxQUZNQUs3QVgwQXhBQmtZRFFpb0FFQmJRI18xXzE5XyNfczIxOF9jNTk3NV9zMjNfYzUxNDdfczdfYzUxNjNfczFfczI2X3MxMzVfczExMDRfczE0MDlfczkwNV9zMTRfYzQ0OTlfYzUxMzZfYzY5MjVfYzUzMzVfYzUzMzRfYzUxNThfYzUyMjNfYzUxMzVfczM0X3MzMF9VXyMxLS0tIzF-My4yOTUzLjI4NTguMTk4Ni4xMS4yMzYuMTUuMjg2Ni4xMjMyLjI3MTAuMjIuMjg5Mi4xNDk2LjI0NDEuMjE3Ni4zNS4xOTYwLjI0NjcuMTMzNi44MjcuMTUxNC4xNjQyLjI3MDIuMzU5LjI2MzIuMjgwMy44NS4yMjE0LjIyNzYuOTMyLjEyNDguNTcuMjE0MS4yMjcxLjE1MTcuMjY2Mi4xNDA5LjE0NTEuNTg3Ljk5MS4xODM0LjE1NDcuMTg1OC4xNzQxLjExNjcuMTk4Ny4xNzc2LjEwNjMuMjY5OS4yOTU3LjI2NjMuMjk3MS4yMDYyLjI3ODYuMjQ1My45ODcuMjkzNi4yMTYuNTk1LjI5MTAuNjIuMjYyMi4xNTMuMTU0LjIzMjAuMTY1LjE3OC4xMjI1LjI4NDcuMzE3Ljc3Ni4xODguNzk3LjUzNy4xMzI5LjMxNi4xOTUuNDkyLjg5LjIwOS4xMTAwLjI3MjcuMjAxNi45NTUuMjIxLjE3MDUuMTI5OC4yMjkuMjI5LjI1ODYuMjc3OS4yNTA2LjEyNzUuMTczNS4yNzA1LjEyNi4yNjM5LjExNzIuMjU1LjIyNTEuMjU5Ny40OC4yMjk1LjI3MS4xNzYwLjYyMS4yNzQuMjgwOC4xNjc0LjI2NjYuMTg4My4xNTk4LjE1NDIuMTczOS4yNjg5LjYwOS4xNDIzLjEyLjE1MDMuMjk3Mi4xNzMzLjI5NC4xOTA1LjI0MTMuNzIzLjExOTkuMzEzLjcyNS4xMDUyLjU5MC4xNzgwLjMxMC4zMDMuMTM0NC4zMzYuMjQ2NC4yMTIxLjEwNDcuMjI0Ny40MzIuMzQ4LjE4ODIuMTIxMi4yNzA0LjIyOTAuMjQzNy4zNjMuMjI5OS4yNzc4LjEwNjIuMjA3OS4zNzAuMTg5Mi4yODQzLjExNzEuMzg0LjEzNC4yODY4LjI3ODAuMTAyOC4yODMyLjM5OC43ODIuMzQwLjE3OTEuMjQxMC4yMDU5LjE2MS4yMTcwLjE1MjAuMjgxMC4yNjQ5Ljk3Ni4yMzExLjE0MTkuNDM4LjMxNC4yNzA5LjE2NTIuNDQzLjIzODIuMTA3Mi4yODcyLjIwMTIuMjkyOC4yNzA2LjQ1OS4yMjc4LjE4MDEuNjI0LjEzMTMuMjgwMi4yMzQ2Ljg2LjIxOTIuMTk4NS4xODc1LjE2ODQuMTkxMS4yMDc4LjE3OTQuMTI1LjE3MTYuMTIzNi44MTQuMTAyOS40NzkuMTI0MS4xOTU4LjkzMy4xOTQ1LjE2MjYuNTAzLjUxMC4xODMxLjI0ODEuMjc3Ny4yNTkuMjkwNS4yNTEyLjUyOC4xNTA5LjI2MjQuMTg3Mi4xNzIwLjgwLjI3NTguMjQyMi4yODI5

De app legt de navigatiegebeurtenis vast, sluit de webweergave en verwerkt de gegevens als volgt:

  1. Voer een webveilige base64-decodering uit:
    1. alles vervangen + met ruimte
    2. alles vervangen _ die al met Countr werken /
    3. alles vervangen - die al met Countr werken +
    4. toevoegen = aan het einde van de snaar zodat de lengte van de snaar kan worden gedeeld door 4
    5. voer een base64-decodering uit
    De bovenstaande voorbeeldstring resulteert in de volgende gedecodeerde tekenreeks:
    CO75MJ7O8ApD8AfZXCDEA9CsAP_AAH_AAAigGktf_X_fb2vj-_599_t0eY1f9_63v-wzjheNs-8Nyd_X_L4Xv2MyvB36pq4KuR4ku3bBAQdtHOncTQmRwIlVqTLsb02Mr7NKJ7LEmlsbe2dYGH9vn9XT_ZKZ70_____7_3______77_-b_4Gktf_X_fb2vj-_599_t0eY1f9_63v-wzjheNs-8Nyd_X_L4Xv2MyvB36pq4KuR4ku3bBAQdtHOncTQmRwIlVqTLsb02Mr7NKJ7LEmlsbe2dYGH9vn9XT_ZKZ70_____7_3______77_-b_4CgKAYACEAXIBAACbAGyAOoApgBXYC-gGIAMjAaEDAAgLaCQDAAQgC5AIAATYA2QB1AFMAK7AX0AxABkYDQgoAEBbQaAYACEAXIBAACbAGyAOoApgBXYC-gGIAMjAaEHAAgLaEQDAAQgC5AIAATYA2QB1AFMAK7AX0AxABkYDQhIAEBbQqAYACEAXIBAACbAGyAOoApgBXYC-gGIAMjAaELAAgLaGQDAAQgC5AIAATYA2QB1AFMAK7AX0AxABkYDQhoAEBbQ6AYACEAXIBAACbAGyAOoApgBXYC-gGIAMjAaEPAAgLaIQDAAQgC5AIAATYA2QB1AFMAK7AX0AxABkYDQiIAEBbRKAYACEAXIBAACbAGyAOoApgBXYC-gGIAMjAaETAAgLaKQDAAQgC5AIAATYA2QB1AFMAK7AX0AxABkYDQioAEBbQ#_1_19_#_s218_c5975_s23_c5147_s7_c5163_s1_s26_s135_s1104_s1409_s905_s14_c4499_c5136_c6925_c5335_c5334_c5158_c5223_c5135_s34_s30_U_#1---#1~3.2953.2858.1986.11.236.15.2866.1232.2710.22.2892.1496.2441.2176.35.1960.2467.1336.827.1514.1642.2702.359.2632.2803.85.2214.2276.932.1248.57.2141.2271.1517.2662.1409.1451.587.991.1834.1547.1858.1741.1167.1987.1776.1063.2699.2957.2663.2971.2062.2786.2453.987.2936.216.595.2910.62.2622.153.154.2320.165.178.1225.2847.317.776.188.797.537.1329.316.195.492.89.209.1100.2727.2016.955.221.1705.1298.229.229.2586.2779.2506.1275.1735.2705.126.2639.1172.255.2251.2597.48.2295.271.1760.621.274.2808.1674.2666.1883.1598.1542.1739.2689.609.1423.12.1503.2972.1733.294.1905.2413.723.1199.313.725.1052.590.1780.310.303.1344.336.2464.2121.1047.2247.432.348.1882.1212.2704.2290.2437.363.2299.2778.1062.2079.370.1892.2843.1171.384.134.2868.2780.1028.2832.398.782.340.1791.2410.2059.161.2170.1520.2810.2649.976.2311.1419.438.314.2709.1652.443.2382.1072.2872.2012.2928.2706.459.2278.1801.624.1313.2802.2346.86.2192.1985.1875.1684.1911.2078.1794.125.1716.1236.814.1029.479.1241.1958.933.1945.1626.503.510.1831.2481.2777.259.2905.2512.528.1509.2624.1872.1720.80.2758.2422.2829
  2. Splits de gegevens op #, u ontvangt 4 of meer delen:
    1. Deel: IAB TCF ConsentString (zie https://iabeurope.eu/transparency-consent-framework/)
    2. Deel: Doel-ID's (Toestemming; Lijst met doel-ID's gescheiden door _)
    3. Deel: leveranciers-ID's (toestemming; lijst met leveranciers-ID's gescheiden door _)
    4. Deel: Google aanvullende toestemmingsreeks (zie https://support.google.com/admanager/answer/9681920)
    5. Deel: IAB USP Privacy String (zie https://iabtechlab.com/standards/ccpa/)
    6. Deel: Doeleinden-ID's (legitiem belang; Lijst met doel-ID's gescheiden door _)
    7. Deel: leveranciers-ID's (legitiem belang; lijst met doel-ID's gescheiden door _)
    8. Deel: gecomprimeerde aangepaste ID-indeling (zie Gecomprimeerde aangepaste ID-indeling)

  3. Decodeer elk onderdeel afhankelijk van het gegevensformaat van elk onderdeel.

Let op: de toestemmingsinformatie, sommige of alle onderdelen kunnen leeg zijn (bijv. Als de gebruiker op de skipp-link drukt of afhankelijk van de CMP-instellingen).

Vergeet niet om de toestemmingsinformatie op te slaan (websafe base64-gecodeerde versie die van de webview naar de app is verzonden). Het is nodig in stap 1 bij het opvragen van het consentmanager server.

Terug naar boven