Integrering av CMP API för appar
I vissa fall kan de befintliga SDK: erna inte användas och anpassade intergationer är nödvändiga. I det här fallet kan apputvecklare använda CMP API för appar för att manuellt integrera CMP i sin app.
Observera att Query API är utfasat och kommer att tas bort i mitten av 2022. Använd SDK:erna istället.
Arbetsflöde
CMP API för appar används i följande ordning:
- Appen kommer att fråga consentmanager server en gång per dag (första start av appen den här dagen). Den kommer att skicka den befintliga samtyckeinformationen och fråga consentmanager server oavsett om användaren behöver be om samtycke eller inte (igen).
- Beroende på svaret från consentmanager server kommer appen att visa tillståndsskiktet i en webbvy. Användaren kan informeras och göra sina val.
- När användaren är klar kommer webbvisningen att kommunicera detta till appen. Appen stänger webbvisningen och behandlar samtyckeinformationen.
- Appen kan sedan använda samtyckeinformation för sin egen databehandling.
1. Fråga consentmanager server
Som det första steget skickar appen en HTTP-begäran till:
https://[consentmanager-server]/delivery/appjson.php?id=[CMP-ID]&l=[Language]&idfa=[IDFA]&appname=[Appname]&consent=[Consent-Info]
Där följande makron ska ersättas av appen innan de skickas:
- [consentmanager-server] - Server-domän (se Meny> Hämta kod> App SDK-inställningar)
- [CMP-ID] - CMP-ID (se Meny> Hämta kod> App SDK-inställningar)
- [Språk] - Språkkod för att visa meddelandet (t.ex. EN, FR, DE, ...)
- [IDFA] - valfritt. IDFA för appen
- [Appnamn] - valfritt. Appens namn för rapporteringsändamål
- [Samtyckeinfo] - Samtyckeinformation mottagen från webbvyn (bas64-kodad version av samtycksdata)
Exempel på URL:
https://delivery.consentmanager.net/delivery/appjson.php?id=123456&l=FR&appname=my%20App&consent=Qxc2j2J8aN....
Svaret på denna begäran är en JSON-text som följande:
{
"status":1,
"regulation":1,
"message":"",
"url":"https://delivery.consentmanager.net/delivery/appcmp.php?id=123456&consent=&appname=my%20App&l=FR"
}
Fälten i svaret är som följer:
Fält | Beskrivning |
status |
0 = Inget samtycke nödvändigt, webbvyn ska inte visas 1 = Samtycke nödvändigt, URL från fält 2 = Fel uppstod, se |
regulation |
0 = inga reglerinställningar, 1 = GDPR gäller, 2 = CCPA gäller, 3 = LGPD gäller, ... |
message |
Felmeddelande som ska visas för utvecklaren. |
url |
URL som ska visas i en webbvy |
2. Visa webbvyn
Om samtalet till /delivery/appjson.php (se steg 1) resulterade i status = 1
bör appen använda värdet från fältet url
och öppna den i en webbvy (webbläsarfönster inbäddat i appen). URL: en visar en minimal HTML-sida som innehåller webbversionen av CMP-koden. Sidan innehåller också en "Skipp" -länk för att undvika problem med JavaScript-kompatibilitet.
För att visa CMP med alla funktioner bör webbvisningen tillhandahålla följande minimala funktioner:
- HTML 5-support
- CSS 3-stöd
- JavaScript 1.2-stöd
- DOM 3-support
- Minimal upplösning på 300x300 pixlar (helst full bredd och min 80% höjd i stående läge)
- Öppna / navigera till URL: er via https: protokoll (t.ex. sekretesspolicyer) genom att öppna ett nytt webbläsarfönster
- Fånga när webbvyn försöker navigera till ett URN som börjar med protokollet "medgivande: //"
Appen bör inte tillåta användaren att hoppa över webbvyn på något annat sätt (t.ex. genom att inaktivera "tillbaka" -knappen eller liknande funktioner).
3. Behandling av samtyckeuppgifter
När användaren väl gjort sina val kommer CMP att ringa ett URN med protokollprefix samtycke: // följt av samtyckeinformation i base64-websafe kodad form. Exempel:
consent://Q083NU1KN084QXBEOEFmWlhDREVBOUNzQVBfQUFIX0FBQWlnR2t0Zl9YX2ZiMnZqLV81OTlfdDBlWTFmOV82M3Ytd3pqaGVOcy04TnlkX1hfTDRYdjJNeXZCMzZwcTRLdVI0a3UzYkJBUWR0SE9uY1RRbVJ3SWxWcVRMc2IwMk1yN05LSjdMRW1sc2JlMmRZR0g5dm45WFRfWktaNzBfX19fXzdfM19fX19fXzc3Xy1iXzRHa3RmX1hfZmIydmotXzU5OV90MGVZMWY5XzYzdi13empoZU5zLThOeWRfWF9MNFh2Mk15dkIzNnBxNEt1UjRrdTNiQkFRZHRIT25jVFFtUndJbFZxVExzYjAyTXI3TktKN0xFbWxzYmUyZFlHSDl2bjlYVF9aS1o3MF9fX19fN18zX19fX19fNzdfLWJfNENnS0FZQUNFQVhJQkFBQ2JBR3lBT29BcGdCWFlDLWdHSUFNakFhRURBQWdMYUNRREFBUWdDNUFJQUFUWUEyUUIxQUZNQUs3QVgwQXhBQmtZRFFnb0FFQmJRYUFZQUNFQVhJQkFBQ2JBR3lBT29BcGdCWFlDLWdHSUFNakFhRUhBQWdMYUVRREFBUWdDNUFJQUFUWUEyUUIxQUZNQUs3QVgwQXhBQmtZRFFoSUFFQmJRcUFZQUNFQVhJQkFBQ2JBR3lBT29BcGdCWFlDLWdHSUFNakFhRUxBQWdMYUdRREFBUWdDNUFJQUFUWUEyUUIxQUZNQUs3QVgwQXhBQmtZRFFob0FFQmJRNkFZQUNFQVhJQkFBQ2JBR3lBT29BcGdCWFlDLWdHSUFNakFhRVBBQWdMYUlRREFBUWdDNUFJQUFUWUEyUUIxQUZNQUs3QVgwQXhBQmtZRFFpSUFFQmJSS0FZQUNFQVhJQkFBQ2JBR3lBT29BcGdCWFlDLWdHSUFNakFhRVRBQWdMYUtRREFBUWdDNUFJQUFUWUEyUUIxQUZNQUs3QVgwQXhBQmtZRFFpb0FFQmJRI18xXzE5XyNfczIxOF9jNTk3NV9zMjNfYzUxNDdfczdfYzUxNjNfczFfczI2X3MxMzVfczExMDRfczE0MDlfczkwNV9zMTRfYzQ0OTlfYzUxMzZfYzY5MjVfYzUzMzVfYzUzMzRfYzUxNThfYzUyMjNfYzUxMzVfczM0X3MzMF9VXyMxLS0tIzF-My4yOTUzLjI4NTguMTk4Ni4xMS4yMzYuMTUuMjg2Ni4xMjMyLjI3MTAuMjIuMjg5Mi4xNDk2LjI0NDEuMjE3Ni4zNS4xOTYwLjI0NjcuMTMzNi44MjcuMTUxNC4xNjQyLjI3MDIuMzU5LjI2MzIuMjgwMy44NS4yMjE0LjIyNzYuOTMyLjEyNDguNTcuMjE0MS4yMjcxLjE1MTcuMjY2Mi4xNDA5LjE0NTEuNTg3Ljk5MS4xODM0LjE1NDcuMTg1OC4xNzQxLjExNjcuMTk4Ny4xNzc2LjEwNjMuMjY5OS4yOTU3LjI2NjMuMjk3MS4yMDYyLjI3ODYuMjQ1My45ODcuMjkzNi4yMTYuNTk1LjI5MTAuNjIuMjYyMi4xNTMuMTU0LjIzMjAuMTY1LjE3OC4xMjI1LjI4NDcuMzE3Ljc3Ni4xODguNzk3LjUzNy4xMzI5LjMxNi4xOTUuNDkyLjg5LjIwOS4xMTAwLjI3MjcuMjAxNi45NTUuMjIxLjE3MDUuMTI5OC4yMjkuMjI5LjI1ODYuMjc3OS4yNTA2LjEyNzUuMTczNS4yNzA1LjEyNi4yNjM5LjExNzIuMjU1LjIyNTEuMjU5Ny40OC4yMjk1LjI3MS4xNzYwLjYyMS4yNzQuMjgwOC4xNjc0LjI2NjYuMTg4My4xNTk4LjE1NDIuMTczOS4yNjg5LjYwOS4xNDIzLjEyLjE1MDMuMjk3Mi4xNzMzLjI5NC4xOTA1LjI0MTMuNzIzLjExOTkuMzEzLjcyNS4xMDUyLjU5MC4xNzgwLjMxMC4zMDMuMTM0NC4zMzYuMjQ2NC4yMTIxLjEwNDcuMjI0Ny40MzIuMzQ4LjE4ODIuMTIxMi4yNzA0LjIyOTAuMjQzNy4zNjMuMjI5OS4yNzc4LjEwNjIuMjA3OS4zNzAuMTg5Mi4yODQzLjExNzEuMzg0LjEzNC4yODY4LjI3ODAuMTAyOC4yODMyLjM5OC43ODIuMzQwLjE3OTEuMjQxMC4yMDU5LjE2MS4yMTcwLjE1MjAuMjgxMC4yNjQ5Ljk3Ni4yMzExLjE0MTkuNDM4LjMxNC4yNzA5LjE2NTIuNDQzLjIzODIuMTA3Mi4yODcyLjIwMTIuMjkyOC4yNzA2LjQ1OS4yMjc4LjE4MDEuNjI0LjEzMTMuMjgwMi4yMzQ2Ljg2LjIxOTIuMTk4NS4xODc1LjE2ODQuMTkxMS4yMDc4LjE3OTQuMTI1LjE3MTYuMTIzNi44MTQuMTAyOS40NzkuMTI0MS4xOTU4LjkzMy4xOTQ1LjE2MjYuNTAzLjUxMC4xODMxLjI0ODEuMjc3Ny4yNTkuMjkwNS4yNTEyLjUyOC4xNTA5LjI2MjQuMTg3Mi4xNzIwLjgwLjI3NTguMjQyMi4yODI5
Appen kommer att fånga navigeringshändelsen, stänga webbvyn och bearbeta data enligt följande:
- Gör en websafe base64-avkodning:
1. byt ut alla+
med utrymme
2. byt ut alla_
med/
3. byt ut alla-
med+
4. lägg till=
till slutet av strängen så att strängens längd kan delas med 4
5. gör en base64-avkodning
Ovanstående exempelsträng kommer att resultera i följande avkodade sträng: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
- Dela upp data med #, du kommer att få fyra eller fler delar:
1. Del: IAB TCF ConsentString (se https://iabeurope.eu/transparency-consent-framework/)
2. Del: Syften ID (samtycke; Lista över ändamål ID separerade med_
)
3. Del: Leverantörs-ID (samtycke; Lista över leverantörs-ID åtskilda av_
)
4. Del: Googles ytterligare samtycke (se https://support.google.com/admanager/answer/9681920)
5. Del: IAB USP Privacy String (se https://iabtechlab.com/standards/ccpa/)
6. Del: Syften ID (legitimt intresse; Lista över ändamål ID åtskilda av_
)
7. Del: Leverantörs-ID (legitimt intresse; Lista över ändamål ID åtskilda av_
)
8. Del: Komprimerat anpassat ID-format (se Komprimerat anpassat ID-format)
- Avkoda varje del beroende på varje datadataformat.
Observera: Samtyckeinformation, vissa eller alla delar kan vara tomma (t.ex. om användarna trycker på hoppa-länken eller beroende på CMP-inställningar).
Glöm inte att lagra samtyckeinformation (websafe base64-kodad version som skickades från webbvyn till appen). Det behövs i steg 1 när du frågar om consentmanager servern.