Ottenere un ID pubblicità reimpostabile dall'utente Componente di Android Jetpack.

Per proteggere la privacy degli utenti, si tratta di una best practice per l'utilizzo di tutte le app per Android 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 su cui è in esecuzione la tua app, puoi utilizzare la libreria 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 ID pubblicità coerenti.

Il fornitore di annunci incluso nella libreria di ID pubblicità definisce anche un l'intenzione standard di aprire una schermata delle impostazioni implementata dal fornitore dell'annuncio. Questa schermata delle impostazioni consente all'utente di reimpostare l'ID pubblicità e di disattivare la funzionalità della personalizzazione degli annunci.

Questa guida spiega come utilizzare il modulo client della libreria di ID pubblicità. per ottenere un ID pubblicità coerente in base all'utente del dispositivo. Questa guida presenta quindi una panoramica dell'architettura della libreria.

Configura l'app client

Interagendo con il modulo client della libreria di ID pubblicità, la tua app recuperare un ID pubblicità coerente che rappresenta l'utente che a interagire con l'app.

L'ID pubblicità è rappresentato utilizzando la versione 3 del formato dell'identificatore universale univoco (UUID) o un formato a 128 bit equivalente:

38400000-8cf0-11bd-b23e-10b96e40000d

La libreria di ID pubblicità normalizza il valore restituito in base alle esigenze per fornire ID che utilizzano questo formato.

Per recuperare l'ID pubblicità reimpostabile dall'utente per la tua app, completa i seguenti passaggi:

  1. Verifica se un fornitore di annunci è disponibile chiamando AdvertisingIdClient.isAdvertisingIdProviderAvailable() Se questo metodo restituisce false, la tua app deve usare un altro mezzo per eseguire il monitoraggio degli annunci richiesto e casi d'uso specifici.

  2. Ottieni i dettagli dell'identificatore annuncio, incluso l'ID pubblicità, chiamando AdvertisingIdClient.getAdvertisingIdInfo() La libreria ID pubblicità esegue questo metodo su un thread di lavoro e utilizza un timeout di connessione di 10 secondi.

Il seguente snippet di codice mostra come recuperare l'ID pubblicità insieme ad altre informazioni dal fornitore di annunci:

app/build.gradle

Groovy

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")
}

Cliente ID pubblicità

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à

Diagramma dell&#39;architettura
Figura 1. Architettura della libreria ID pubblicità

La figura 1 illustra la struttura della libreria di ID pubblicità. La libreria è costituita dai seguenti moduli:

  • Un modulo client, ovvero un livello sottile incluso nelle app.
  • Un modulo provider, messo a disposizione dal produttore del dispositivo. Le implementazioni di questo modulo devono definire una UI di impostazioni per offrire agli utenti di reimpostare l'ID pubblicità e attivare/disattivare le preferenze di monitoraggio degli annunci.

Il modulo client comunica con il modulo del fornitore per recuperare gli annunci ID e preferenze dell'utente relative al monitoraggio degli annunci.

Come la raccolta gestisce più provider

È possibile che un dispositivo supporti contemporaneamente più fornitori di annunci a livello di sistema. Se la raccolta ID pubblicità rileva questa situazione, garantisce che la tua app recuperi sempre le informazioni dallo stesso fornitore, a condizione che il fornitore rimanga disponibile. In questo modo, l'ID pubblicità rimane coerente.

Se l'insieme di fornitori di annunci disponibili cambia nel tempo e la tua app interagisce con un fornitore di identificatori degli annunci diverso, tutte le altre app client inizieranno a utilizzare anche questo nuovo fornitore. La tua app mostra lo stesso comportamento che si verificherebbe se l'utente avesse richiesto di reimpostare il proprio ID pubblicità.

La libreria del fornitore di ID pubblicità utilizza il seguente ordine deterministico per classifica i fornitori:

  1. I fornitori che hanno richiesto Autorizzazione androidx.ads.identifier.provider.HIGH_PRIORITY.
  2. Provider installati sul dispositivo da più tempo.
  3. I fornitori vengono visualizzati per primi in ordine alfabetico.