Ottieni un ID pubblicità reimpostabile dall'utente parte di Android Jetpack.
Per proteggere la privacy degli utenti, è consigliabile che tutte le app per Android funzionino con identificatori reimpostabili dall'utente. Uno di questi identificatori è un ID pubblicità, che identifica in modo univoco un determinato utente per i casi d'uso pubblicitari, come la personalizzazione degli annunci.
Per supportare una soluzione di monitoraggio degli annunci standardizzata su tutti i dispositivi che eseguono la tua app, puoi utilizzare la libreria di ID pubblicità. Questa libreria, disponibile sui dispositivi con Android 4.0 (livello API 14) e versioni successive, definisce un'interfaccia per interagire con i fornitori di annunci a livello di sistema. Questa interfaccia consente alla tua app di ricevere valori di ID pubblicità coerenti.
Il fornitore di annunci incluso nella libreria di ID pubblicità definisce anche un intent standard per l'apertura di una schermata delle impostazioni implementata dal fornitore di annunci. Questa schermata delle impostazioni consente all'utente di reimpostare il proprio ID pubblicità e disattivare la personalizzazione degli annunci.
Questa guida spiega come utilizzare il modulo client della libreria di ID pubblicità per ottenere un ID pubblicità coerente per utente del dispositivo. Questa guida presenta poi una panoramica dell'architettura della libreria.
Configura l'app client
Interagendo con il modulo client della libreria di ID pubblicità, l'app può recuperare un ID pubblicità coerente che rappresenta l'utente che interagisce con l'app.
L'ID pubblicità viene rappresentato utilizzando la versione 3 del formato UUID (Universally Unique Identifier) o un formato equivalente a 128 bit:
38400000-8cf0-11bd-b23e-10b96e40000d
La libreria di ID pubblicità normalizza il valore restituito in base alle esigenze per fornire gli ID utilizzando questo formato.
Per recuperare l'ID pubblicità reimpostabile dall'utente per la tua app, segui questi passaggi:
Verifica se un fornitore di annunci è disponibile chiamando il numero
AdvertisingIdClient.isAdvertisingIdProviderAvailable()
. Se questo metodo restituiscefalse
, la tua app deve utilizzare un altro mezzo per eseguire tutti i casi d'uso richiesti per il monitoraggio degli annunci.Per ottenere i dettagli dell'identificatore annuncio, incluso l'ID pubblicità, chiama
AdvertisingIdClient.getAdvertisingIdInfo()
. La libreria di ID pubblicità esegue questo metodo su un thread di worker e utilizza un timeout della connessione di 10 secondi.
Il seguente snippet di codice mostra come recuperare l'ID pubblicità insieme ad altre informazioni dal fornitore di annunci:
Trendy
dependencies { implementation 'androidx.ads:ads-identifier:1.0.0-alpha01' // Used for the calls to addCallback() in the snippets on this page. implementation 'com.google.guava:guava:28.0-android' }
Kotlin
dependencies { implementation("androidx.ads:ads-identifier:1.0.0-alpha01") // Used for the calls to addCallback() in the snippets on this page. implementation("com.google.guava:guava:28.0-android") }
Kotlin
// Used for the call to addCallback() within this snippet. import com.google.common.util.concurrent.Futures.addCallback private fun determineAdvertisingInfo() { if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) { val advertisingIdInfoListenableFuture = AdvertisingIdClient.getAdvertisingIdInfo(applicationContext) addCallback(advertisingIdInfoListenableFuture, object : FutureCallback<AdvertisingIdInfo> { override fun onSuccess(adInfo: AdvertisingIdInfo?) { val id: String = adInfo?.id val providerPackageName: String = adInfo?.providerPackageName val isLimitTrackingEnabled: Boolean = adInfo?.isLimitTrackingEnabled } // Any exceptions thrown by getAdvertisingIdInfo() // cause this method to be called. override fun onFailure(t: Throwable) { Log.e("MY_APP_TAG", "Failed to connect to Advertising ID provider.") // Try to connect to the Advertising ID provider again or fall // back to an ad solution that doesn't require using the // Advertising ID library. } }, Executors.newSingleThreadExecutor()) } else { // The Advertising ID client library is unavailable. Use a different // library to perform any required ad use cases. } }
Java
// Used for the call to addCallback() within this snippet. import com.google.common.util.concurrent.Futures; private void determineAdvertisingInfo() { if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) { ListenableFuture<AdvertisingIdInfo> advertisingIdInfoListenableFuture = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext()); Futures.addCallback(advertisingIdInfoListenableFuture, new FutureCallback<AdvertisingIdInfo>() { @Override public void onSuccess(AdvertisingIdInfo adInfo) { String id = adInfo.getId(); String providerPackageName = adInfo.getProviderPackageName(); boolean isLimitTrackingEnabled = adInfo.isLimitTrackingEnabled(); // Any exceptions thrown by getAdvertisingIdInfo() // cause this method to be called. @Override public void onFailure(Throwable throwable) { Log.e("MY_APP_TAG", "Failed to connect to Advertising ID provider."); // Try to connect to the Advertising ID provider again // or fall back to an ad solution that doesn't require // using the Advertising ID library. } }); } else { // The Advertising ID client library is unavailable. Use a different // library to perform any required ad use cases. } }
Architettura della libreria di ID pubblicità
La Figura 1 mostra la struttura della libreria di ID pubblicità. La libreria è costituita dai seguenti moduli:
- Un modulo client, ovvero un livello thin incluso nelle app.
- Un modulo provider, che viene reso disponibile dal produttore del dispositivo. Le implementazioni di questo modulo devono definire un'UI di impostazioni per offrire agli utenti la possibilità di reimpostare l'ID pubblicità e attivare/disattivare le preferenze di monitoraggio degli annunci.
Il modulo client comunica con il modulo provider per recuperare gli ID pubblicità e le preferenze dell'utente relative al monitoraggio degli annunci.
In che modo la libreria gestisce più provider
Un dispositivo può supportare più fornitori di annunci a livello di sistema contemporaneamente. Se la libreria di ID pubblicità rileva questa situazione, garantisce che la tua app recuperi sempre le informazioni dallo stesso fornitore, supponendo che quest'ultimo rimanga disponibile. Questa procedura consente di mantenere coerente l'ID pubblicità.
Se l'insieme dei fornitori di annunci disponibili cambia nel tempo e la tua app interagisce con un fornitore di identificatori annuncio diverso, anche tutte le altre app client iniziano a utilizzare il nuovo fornitore. La tua app mostra lo stesso comportamento che si sarebbe se l'utente avesse richiesto di reimpostare il proprio ID pubblicità.
La libreria del provider di ID pubblicità utilizza il seguente ordine deterministico per classificare i fornitori:
- Provider che hanno richiesto l'autorizzazione
androidx.ads.identifier.provider.HIGH_PRIORITY
. - Provider che sono stati installati sul dispositivo da più tempo.
- Fornitori che vengono visualizzati per primi in ordine alfabetico.