Privacidad del SDK para Android
Los SDK móviles de Xandr incluyen soporte para clientes para la Plataforma global de privacidad (GPP), el Reglamento General de Protección de Datos (RGPD) y la Ley de Protección del Consumidor de California (CCPA) y la Ley de Servicios Digitales (DSA).
La Plataforma de privacidad global (GPP) permite a anunciantes, editores y proveedores de tecnología adaptarse a las demandas normativas en todos los mercados. EL RGPD proporciona normas para el procesamiento, el movimiento y la protección de datos personales dentro de la Unión Europea. CCPA crea nuevos derechos de consumidor relacionados con el acceso, la eliminación y el uso compartido de información personal que recopilan las organizaciones. La DSA es una medida legislativa clave de la Unión Europea destinada a mejorar la transparencia en la publicidad digital, con un objetivo fundamental de promover la transparencia, la rendición de cuentas y la protección de los usuarios en servicios en línea.
Advertencia
Este recurso no debe interpretarse como asesoramiento legal y Xandr no garantiza el cumplimiento de ninguna ley o reglamento. Tenga en cuenta que, dado que cada empresa y su recopilación, uso y almacenamiento de datos personales son diferentes, también debe buscar asesoramiento legal independiente en relación con las obligaciones establecidas en la normativa europea, incluidos el RGPD y la directiva ePrivacy existente. Solo un abogado puede proporcionarle asesoramiento legal específicamente adaptado a su situación. Nada en esta guía está pensado para proporcionarle, o debe usarse como sustituto de, asesoramiento legal adaptado a su negocio.
Nota:
Los publicadores son responsables de proporcionar aviso, transparencia y elección y de recopilar el consentimiento de sus usuarios de acuerdo con las directivas de Framework, ya sea mediante su propio proveedor de administración de consentimiento o trabajando con un proveedor. > - Registrar su propio CMP> : lista de CMP registrados
Nuestras directivas de servicio (para comprar, vender y proveedores de datos) incluyen obligaciones específicas de privacidad de las que debe tener en cuenta.
Todos los SDK de proveedor (incluidos los SDK de mediación) son responsables de buscar información de consentimiento y proveedor aprobados por sí mismos; Xandr no pasa esta información a estos SDK.
Reglamento general de protección de datos (RGPD)
Con el fin de que nuestros clientes cumplan sus requisitos de transparencia, notificación y elección/consentimiento en virtud del RGPD y la Directiva ePrivacy existente, Xandr apoya el Marco de transparencia & consentimiento de IAB Europa (el "Marco").
Esta es una referencia para los editores de aplicaciones móviles que usan el SDK móvil de Xandr para mostrar aviso, transparencia y elección a los usuarios finales ubicados en el EEE y señalar a proveedores aprobados y, si es necesario, pasar el consentimiento a Xandr y a orígenes de demanda y sus proveedores a través de la plataforma Xandr.
Xandr proporciona tres API en mobile SDK para que los publicadores de aplicaciones móviles usen framework. Estas API están disponibles en mobile SDK versión 4.8+ para Android y 4.7.1+ para iOS. Estas API le permiten:
- Definir si el usuario se encuentra en el Espacio Económico Europeo (el "EEE") y que debe aplicarse la normativa europea de privacidad
- Establecimiento de la cadena de consentimiento de IAB Europe (IAB)
- Establecimiento de los consentimientos de uso de IAB Europa (IAB)
El SDK conservará esta información y se agregará a cada llamada de anuncio para aplicar controles de plataforma.
Los publicadores o plataformas de administración de consentimiento (CMP) pueden almacenar estos valores en una interfaz SharedPreferences (como se define en Mobile In-App CMP API v2.0: Transparency & Consent Framework) en lugar de pasarlos a través de las nuevas API, y el SDK leerá los valores como reserva.
/** * Set the consentRequired value in the SDK
*
* @param true if subject to GDPR regulations, false otherwise
*/
ANGDPRSettings.setConsentRequired(context,true);
/**
* Set the consent string in the SDK
*
* @param A valid Base64 encode consent string as per
* https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework
*/
ANGDPRSettings.setConsentString(context,"BOMyQRvOMyQRvABABBAAABAAAAAAEA");
/**
* Set the purpose consents in the SDK
*
* @param A valid Binary String: The '0' or '1' at position n – where n's indexing begins at 0 – indicates the consent status for purpose ID n+1; false and true respectively. eg. '1' at index 0 is consent true for purpose ID 1
*/
ANGDPRSettings.setPurposeConsents(context,"101010001");
Nota:
Para garantizar la monetización adecuada y la segmentación pertinente, el SDK debe estar habilitado para enviar la información del dispositivo. Establecer la consentRequired
marca y purposeConsents
correctamente ayudará a garantizar que se envía la información adecuada del dispositivo. Consulte la tabla siguiente para determinar si se pasarán o no los detalles del dispositivo.
En la tabla siguiente se describen las acciones realizadas para los distintos purposeConsents
valores en combinación con consentRequired
los valores.
true | false | Indefinido | |
---|---|---|---|
consentRequired=false |
El SDK pasará la información del dispositivo. | El SDK no pasará la información del dispositivo. | El SDK pasará la información del dispositivo. |
consentRequired=true |
El SDK pasará la información del dispositivo. | El SDK no pasará la información del dispositivo. | El SDK no pasará la información del dispositivo. |
consentRequired=undefined |
El SDK pasará la información del dispositivo. | El SDK no pasará la información del dispositivo. | El SDK pasará la información del dispositivo. |
Ley de privacidad del consumidor de California (CCPA)
Xandr proporciona tres API que permiten a los usuarios del SDK establecer, recuperar y borrar controles del mecanismo de señal de usuario de privacidad de EE. UU. IAB Tech Lab ha formalizado y adoptado la "us_privacy"
cadena como mecanismo para codificar datos sobre la información divulgada a las elecciones de usuario y usuario en virtud de varias leyes de privacidad de EE. UU., empezando por el CCPA.
El SDK conservará esta información y se agregará a cada llamada de anuncio para aplicar controles de plataforma.
Las plataformas de administración de publicadores y consentimientos (CMP) pueden almacenar estos valores en una interfaz SharedPreferences (tal como se define en el mecanismo de cumplimiento de CCPA de IAB) en lugar de pasarlos a través de las nuevas API, y el SDK leerá los valores como reserva.
/**
* Set the IAB US Privacy String in the SDK
*
* @param privacyString will be set and pass string to Ad Server
*/
ANUSPrivacySettings.setUSPrivacyString(context,"1YNN");
/**
* Get the IAB US Privacy String that will be sent in the request.
*
* @param context
* @return Return IAB US Privacy String set by Publisher
*/
ANUSPrivacySettings.getUSPrivacyString(context);
/**
* Clear the value of IAB US Privacy String that was previously set using setUSPrivacyString
*
* @param context
*/
ANUSPrivacySettings.reset(context);
Plataforma de privacidad global (GPP)
Global Privacy Platform es un único protocolo diseñado para simplificar la transmisión de señales de privacidad, consentimiento y elección del consumidor desde sitios web y aplicaciones a proveedores de tecnología de anuncios. Estas señales se empaquetan en una carga estandarizada y fácil de comunicar denominada cadena GPP. Los datos de GPP previamente analizados, así como la cadena GPP, se almacenarán en SharedPreferences (Android). Esto permitirá lo siguiente:
- Proveedores para acceder fácilmente a los datos de GPP.
- Datos de GPP que se conservarán entre sesiones de aplicación.
- Los datos de GPP se van a portátiles entre plataformas de administración de consentimiento (CMP) para proporcionar flexibilidad para que un publicador intercambie un SDK de CMP por otro.
- Proveedores dentro de una aplicación para evitar la duplicación de código, ya que no es necesario incluir un descodificador de cadenas GPP al tiempo que se habilitan todos los casos de uso típicos.
Nota:
Si un publicador decide quitar un SDK de CMP de su aplicación, es responsable de borrar todos los valores vestigios IABGPP_* para los usuarios para que los proveedores no sigan usando los datos de GPP en ellos.
A continuación, el SDK de Xandr leerá los valores de SharedPreferences que se pasan a la llamada de anuncio. A continuación se muestran las cadenas desde las que el SDK consultará:
Nombre de la clave | Tipo de datos | Descripción |
---|---|---|
IABGPP_HDR_GppString |
string | Cadena de consentimiento completa en su forma codificada. E.g "DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN" |
IABGPP_GppSID |
string | Se considera que los identificadores de sección están en vigor. Varios identificadores se separan por subrayado, por ejemplo, “2_3” |
Ley de Servicios Digitales (DSA)
La Ley de Servicios Digitales (DSA) supervisa a los intermediarios y plataformas en línea, donde su objetivo principal es detener las actividades ilegales y perjudiciales en Internet y mitigar la difusión de la desinformación. La DSA es una medida legislativa clave de la Unión Europea destinada a mejorar la transparencia en la publicidad digital, con un objetivo fundamental de promover la transparencia, la rendición de cuentas y la protección de los usuarios en servicios en línea.
Establecimiento de valores DSA en el SDK
A continuación, el SDK pasará estos valores a la llamada de anuncio.
/**
* Set the DSA information requirement.
* 0 = Not required
* 1 = Supported, bid responses with or without DSA object will be accepted
* 2 = Required, bid responses without DSA object will not be accepted
* 3 = Required, bid responses without DSA object will not be accepted, Publisher is an Online Platform
*
* @param dsaRequired The DSA information requirement value to be set.
*/
ANDSASettings.setDSARequired(1);
/**
* Set if the publisher renders the DSA transparency info.
* 0 = Publisher can't render
* 1 = Publisher could render depending on adrender
* 2 = Publisher will render
*
* @param pubRender The value indicating whether the publisher renders DSA transparency info.
*/
ANDSASettings.setPubRender(0);
/**
* Set the transparency list using the provided list of ANDSATransparencyInfo.
*
* @param domain The domain of the entity that applied user parameters.
* @param params The list of user parameters used for the platform or sell-side.
*/
ArrayList<ANDSATransparencyInfo> transparencyList = new ArrayList<>();
transparencyList.add(new ANDSATransparencyInfo("example.com", new ArrayList<>(Arrays.asList(1, 2, 3))));
transparencyList.add(new ANDSATransparencyInfo("example.net", new ArrayList<>(Arrays.asList(4, 5, 6))));
ANDSASettings.setTransparencyList(transparencyList);
Recuperación de los valores de DSA establecidos en el SDK
ANDSASettings.getDSARequired()
ANDSASettings.getPubRender()
ANDSASettings.getTransparencyList()
Recuperar valores de respuesta de DSA
Java de ejemplo de código
// Request Banner Ad
bav = new BannerAdView(this);
bav.setPlacementID("1"); // Placement ID
bav.setAdSize(300, 250); // Size
bav.setAdListener(this) // AdListener
// On Ad Loaded
@Override
public void onAdLoaded(AdView bav) {
log("Banner Ad Loaded");
ANDSAResponseInfo dsaResponseInfo = bav.getAdResponseInfo().getDSAResponseInfo();
/**
* Retrieve on whose behalf the ad is displayed.
*/
String behalf = dsaResponseInfo.getBehalf();
/**
* Retrieve who paid for the ad.
*/
String paid = dsaResponseInfo.getPaid();
/**
* Retrieve the transparency user parameters info
*/
ArrayList<ANDSATransparencyInfo> transparencyList = dsaResponseInfo.getTransparencyList();
for(int i = 0; i <= transparencyList.size(); i++) {
ANDSATransparencyInfo tranparencyInfo = transparencyList.get(i);
String domain = tranparencyInfo.getDomain();
ArrayList<Integer> params = tranparencyInfo.getDSAParams();
}
/**
* Retrieve indicating if the buyer/advertiser will render DSA transparency info.
* 0 = buyer/advertiser will not render
* 1 = buyer/advertiser will render
*/
int adRender = dsaResponseInfo.getAdRender();
}
Kotlin de ejemplo de código
// Request Banner Ad
banner = BannerAdView(this)
banner.placementID = "1" // PlacementID
banner.setAdSize(300, 250) // Size
banner.adListener = this // AdListener
banner.loadAd()
// On Ad Loaded
override fun onAdLoaded(ad: AdView?) {
log("Banner Ad Loaded")
val dsaResponseInfo: ANDSAResponseInfo = bav.adResponseInfo.dsaResponseInfo
/**
* Retrieve on whose behalf the ad is displayed.
*/
val behalf: String? = dsaResponseInfo.behalf
/**
* Retrieve who paid for the ad.
*/
val paid: String? = dsaResponseInfo.paid
/**
* Retrieve the transparency user parameters info
*/
val transparencyList: ArrayList<ANDSATransparencyInfo> = dsaResponseInfo.transparencyList
for (i in 0 until transparencyList.size) {
val transparencyInfo: ANDSATransparencyInfo = transparencyList[i]
val domain: String = transparencyInfo.domain
val params: ArrayList<Int> = transparencyInfo.getDSAParams()
}
}
/**
* Retrieve indicating if the buyer/advertiser will render DSA transparency info.
* 0 = buyer/advertiser will not render
* 1 = buyer/advertiser will render
*/
val adRender: Int = dsaResponseInfo.adRender
Nota:
ANDSAResponseInfo se puede recuperar mediante la instancia de Video Ad, la instancia de vista de anuncios intersticial y la respuesta de anuncios nativos, además de banner ad view.
Java
//Video Ad
ANDSAResponseInfo dsaResponseInfo = videoAd.getAdResponseInfo().getDSAResponseInfo()
//Native Ad
ANDSAResponseInfo dsaResponseInfo = nativeAdResponse.getAdResponseInfo().getDSAResponseInfo()
//Insterstitial Ad View
ANDSAResponseInfo dsaResponseInfo = interstitial.getAdResponseInfo().getDSAResponseInfo()
Kotlin
//Video Ad
val dsaResponseInfo = videoAd.adResponseInfo.dsaResponseInfo
//Native Ad
val dsaResponseInfo = nativeAdResponse.adResponseInfo.dsaResponseInfo
//Insterstitial Ad View
val dsaResponseInfo = interstitial.adResponseInfo.dsaResponseInfo