Присоединяйтесь к делегированию индивидуально настроенной аудитории с помощью защищенной аудитории

API fetchAndJoinCustomAudience позволяет покупателям делегировать присоединение к индивидуальной аудитории, используя присутствие на устройстве своих партнерских MMP или SSP.

Обзор

Общий обзор того, как это работает, заключается в том, что вызывающая сторона на устройстве (будь то MMP или SSP SDK) создает fetchAndJoinCustomAudienceRequest , который выглядит следующим образом:

Котлин

/**
 * @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()

Ява

/**
 * @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();

Важным примечанием обо всех необязательных параметрах является то, что если они установлены внутри запроса на выборку, их данные не могут быть переопределены тем, что возвращается от покупателя, что дает вызывающему на устройстве дополнительный контроль над тем, какая пользовательская аудитория сохраняется.

fetchUri должен указывать на конечную точку сервера, управляемую покупателем, который вернет объект JSON индивидуальной аудитории, соответствующий формату, показанному здесь:

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

Дополнительную информацию о том, как это решается на стороне API, можно найти в предложении по проекту присоединения к делегированию ЦС .

Тестирование

После того как вы реализовали вызов Fetch внутри клиентского кода и настроили конечную точку на стороне DSP для возврата данных индивидуально настроенной аудитории, вы можете протестировать делегирование присоединения к индивидуально настроенной аудитории. Перед запуском приложения вам необходимо выполнить следующую команду, чтобы открыть пользовательский интерфейс и включить «Песочницу конфиденциальности»:

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

После появления пользовательского интерфейса убедитесь, что вы включили «Песочницу конфиденциальности», а затем выполните следующие команды ADB, чтобы завершить настройку устройства для тестирования:

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

После выполнения этих команд вы сможете начать успешно совершать вызовы с помощью Fetch API.

Чтобы увидеть пример этого потока, вызовы fetch были добавлены в ветку предварительной версии для разработчиков репозитория Privacy Sandbox Samples на Github .

,

API fetchAndJoinCustomAudience позволяет покупателям делегировать присоединение к индивидуальной аудитории, используя присутствие на устройстве своих партнерских MMP или SSP.

Обзор

Общий обзор того, как это работает, заключается в том, что вызывающая сторона на устройстве (будь то MMP или SSP SDK) создает fetchAndJoinCustomAudienceRequest , который выглядит следующим образом:

Котлин

/**
 * @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()

Ява

/**
 * @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();

Важным примечанием обо всех необязательных параметрах является то, что если они установлены внутри запроса на выборку, их данные не могут быть переопределены тем, что возвращается от покупателя, что дает вызывающему на устройстве дополнительный контроль над тем, какая пользовательская аудитория сохраняется.

fetchUri должен указывать на конечную точку сервера, управляемую покупателем, который вернет объект JSON индивидуальной аудитории, соответствующий формату, показанному здесь:

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

Дополнительную информацию о том, как это решается на стороне API, можно найти в предложении по проекту присоединения к делегированию ЦС .

Тестирование

После того как вы реализовали вызов Fetch внутри клиентского кода и настроили конечную точку на стороне DSP для возврата данных индивидуально настроенной аудитории, вы можете протестировать делегирование присоединения к индивидуально настроенной аудитории. Перед запуском приложения вам необходимо выполнить следующую команду, чтобы открыть пользовательский интерфейс и включить «Песочницу конфиденциальности»:

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

После появления пользовательского интерфейса убедитесь, что вы включили «Песочницу конфиденциальности», а затем выполните следующие команды ADB, чтобы завершить настройку устройства для тестирования:

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

После выполнения этих команд вы сможете начать успешно совершать вызовы с помощью Fetch API.

Чтобы увидеть пример этого потока, вызовы fetch были добавлены в ветку предварительного просмотра для разработчиков репозитория Privacy Sandbox Samples на Github .