Partecipa alla delega del pubblico personalizzato con Protected Audience

L'API fetchAndJoinCustomAudience consente agli acquirenti di delegare la partecipazione a un segmento di pubblico personalizzato sfruttando la presenza sul dispositivo delle MMP o delle SSP partner.

Panoramica

Una panoramica generale del funzionamento è che il chiamante sul dispositivo (che si tratti di un SDK MMP o SSP) crea un fetchAndJoinCustomAudienceRequest simile al seguente:

Kotlin

/**
 * @param fetchUri The URL to retrieve the CA from.
 * (optional)@param name The name of the CA to join.
 * (optional)@param activationTime The time when the CA will activate.
 * (optional)@param expirationTime The time when the CA will expire,
    must be a time in the future otherwise this will fail
 * (optional)@param userBiddingSignals The user bidding signals used at auction.
*/

val request = FetchAndJoinCustomAudienceRequest.Builder(fetchUri)
    .setName(name)
    .setActivationTime(activationTime)
    .setExpirationTime(expirationTime)
    .setUserBiddingSignals(userBiddingSignals)
    .build()

Java

/**
 * @param fetchUri The URL to retrieve the CA from.
 * (optional)@param name The name of the CA to join.
 * (optional)@param activationTime The time when the CA will activate.
 * (optional)@param expirationTime The time when the CA will expire,
    must be a time in the future otherwise this will fail
 * (optional)@param userBiddingSignals The user bidding signals used at auction.
*/

FetchAndJoinCustomAudienceRequest request =
 new FetchAndJoinCustomAudienceRequest.Builder(fetchUri)
  .setName(name) //Optional
  .setActivationTime(activationTime) //Optional
  .setExpirationTime(expirationTime) //Optional
  .setUserBiddingSignals(userBiddingSignals) //Optional
  .build();

Una nota importante su tutti i parametri facoltativi è che, se impostati all'interno della richiesta di recupero, i dati non possono essere sostituiti da quanto restituito dall'acquirente, offrendo al chiamante sul dispositivo ulteriori controlli su quale segmento di pubblico personalizzato persistente.

fetchUri deve indirizzare a un endpoint del server gestito dall'Acquirente che restituirà un oggetto JSON Custom Audience corrispondente al formato visualizzato qui:

//Return a 200 response with data matching the format of the following in the body
{
  "daily_update_uri": "https://js.example.com/bidding/daily",
  "bidding_logic_uri": "https://js.example.com/bidding",
  "user_bidding_signals": {
    "valid": true,
    "arbitrary": "yes"
  },
  "trusted_bidding_data": {
    "trusted_bidding_uri": "https://js.example.com/bidding/trusted",
    "trusted_bidding_keys": [
      "key1",
      "key2"
    ]
  },
  "ads": [
    {
      "render_uri": "https://js.example.com/render/fetch_and_join_ad1",
      "metadata": {
        "valid": 1
      }
    },
    {
      "render_uri": "https://js.example.com/render/fetch_and_join_ad2",
      "metadata": {
        "valid": 2
      }
    }
  ]
}

Ulteriori informazioni sulla risoluzione di questo problema sul lato API sono disponibili nella Proposta di progettazione per la delega CA di partecipazione.

Test

Dopo aver implementato la chiamata di recupero all'interno del codice client e aver configurato un endpoint sul lato DSP per restituire i dati personalizzati sul pubblico, puoi provare la delega per l'aggiunta di un segmento di pubblico personalizzato. Prima di eseguire l'app, devi eseguire il comando seguente per aprire l'interfaccia utente e abilitare Privacy Sandbox:

adb shell am start -n com.google.android.adservices.api/com.android.adservices.ui.settings.activities.AdServicesSettingsMainActivity

Quando viene visualizzata l'interfaccia utente, assicurati di attivare l'opzione per abilitare Privacy Sandbox, quindi esegui i seguenti comandi ADB per completare la configurazione del dispositivo per i test:

adb shell device_config set_sync_disabled_for_tests persistent
adb shell device_config put adservices ppapi_app_signature_allow_list \"\*\"
adb shell device_config put adservices ppapi_app_allow_list \"\*\"
adb shell device_config put adservices adservice_system_service_enabled true
adb shell device_config put adservices adservice_enabled true
adb shell device_config put adservices adservice_enable_status true
adb shell device_config put adservices global_kill_switch false
adb shell device_config put adservices fledge_js_isolate_enforce_max_heap_size false
adb shell device_config put adservices fledge_custom_audience_service_kill_switch false
adb shell device_config put adservices fledge_select_ads_kill_switch false
adb shell device_config put adservices adid_kill_switch false
adb shell setprop debug.adservices.disable_fledge_enrollment_check true
adb shell device_config put adservices fledge_fetch_custom_audience_enabled true

Una volta eseguiti questi comandi, dovresti essere in grado di iniziare a effettuare correttamente le chiamate utilizzando l'API Fetch.

Per un esempio di questo flusso, sono state aggiunte chiamate di recupero al ramo per l'anteprima per gli sviluppatori del repository Esempi di Privacy Sandbox su GitHub.