Cómo delegar la unión de un público personalizado con Protected Audience

La API de fetchAndJoinCustomAudience permite que los compradores deleguen unirse a un público personalizado aprovechando la presencia en el dispositivo de sus MMP o SSP de socios.

Descripción general del funcionamiento

El llamador integrado en el dispositivo (ya sea un MMP o un SDK de la SSP) crea un objeto fetchAndJoinCustomAudienceRequest que se ve de la siguiente manera:

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();

Nota importante sobre todos los parámetros opcionales: Si se establecen dentro de la solicitud de recuperación, sus datos no se pueden anular con lo que muestra el comprador, lo que le brinda al llamador integrado en el dispositivo controles adicionales sobre lo que qué público personalizado se conserva.

El elemento fetchUri debe apuntar a un extremo del servidor que opere el comprador, que mostrará un objeto JSON del público personalizado que coincida con el siguiente formato:

//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
      }
    }
  ]
}

Puedes encontrar más información sobre cómo es resuelto por la API, en la propuesta de diseño para delegar la unión a un público personalizado.

Pruebas

Una vez que hayas implementado la llamada de recuperación dentro del código del cliente y hayas configurado un extremo en el DSP para mostrar los datos del público personalizado, puedes probar la delegación de la unión a un público personalizado. Antes de ejecutar tu app, deberás ejecutar el siguiente comando para abrir la IU y habilitar Privacy Sandbox:

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

Una vez que aparezca la IU, asegúrate de habilitar Privacy Sandbox y, luego, ejecutar los siguientes comandos de ADB para terminar de configurar el dispositivo para las pruebas:

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 vez que ejecutes estos comandos, deberías poder comenzar a realizar, de forma correcta, llamadas con la API de Fetch.

Para ver un ejemplo de este flujo, se agregaron las llamadas de recuperación a la rama de la versión preliminar para desarrolladores del repositorio de muestras de Privacy Sandbox en GitHub.