Android의 개인 정보 보호 샌드박스 개발자 프리뷰가 출시되었습니다. 시작하는 방법을 알아보고 의견을 제공해 주세요.

FLEDGE 최대 게재빈도 설정

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

최대 게재빈도 설정은 일정 기간 내에 사용자에게 표시되는 특정 카테고리의 광고 수를 제한하는 광고 방식입니다. 최대 게재빈도를 설정하면 광고 노출을 새롭고 흥미롭게 유지하여 최종 사용자 환경이 개선되고 광고주가 광고비를 관리하는 데 도움이 됩니다.

이 제안서에서는 Android의 FLEDGE를 사용하여 최대 게재빈도 설정 기능을 개인 정보를 보호하는 정확한 방식으로 구현하는 방법을 소개합니다.

FLEDGE는 두 가지 기능, 즉 광고별 이벤트 카운터의 기기 내 저장소와 사전 정의된 일련의 필터 전략에 따라 광고를 필터링하는 기능을 결합하여 최대 게재빈도 설정을 구현합니다. 최대 게재빈도 설정을 사용하면 광고주가 특정 기간 히스토그램 값 합계에 관한 카운터 기준점을 나타낼 수 있습니다.

카운터는 기기 프로필과 광고 기술, 카운터 키의 조합마다 고유합니다. 각 광고에는 광고의 조회 또는 노출이 등록되는 경우에 사용할 카운터 키 세트가 있어야 합니다. 각 키의 경우 FLEDGE는 카운터 세트를 저장하고 각 카운터는 특정 시간 간격 내에 발생하는 모든 광고별 이벤트를 기록합니다. 기기 내 카운터는 노출 또는 조회가 발생할 때 증가하며 카운터 데이터는 기기에 유지됩니다. 정확한 지속성 시간은 나중에 정의됩니다.

FLEDGE의 광고 선택 워크플로의 광고 필터링 로직은 카운터, 리마케팅 광고, 문맥 광고에 액세스할 수 있으므로 FLEDGE 최대 게재빈도 설정을 통해 이러한 모든 유형의 광고 요청을 처리할 수 있습니다.

참고: 광고 필터링은 Android의 개인 정보 보호 샌드박스에서만 사용할 수 있습니다. Chrome의 FLEDGE 구현은 현재 문맥 타겟팅 비 FLEDGE 광고를 필터링하는 메커니즘을 구현하지 않습니다. 이 제안서에서는 구매 측 지원만 다룹니다. 수요가 있는 경우 나중에 판매 측 지원을 추가할 예정입니다.

FLEDGE 최대 게재빈도 설정은 다음을 비롯한 광범위한 요구사항을 지원합니다.

  • 실시간 필터링(기기 내 카운터가 업데이트될 때 서버 측 지연이 최소화됨)
  • 유연한 키 계층 구조(개별 광고나 캠페인, 기타 그룹화 등)
  • 다른 최대 게재빈도 설정 방식과의 일치(광고 ID에 종속되지 않음)
  • 특정 기기 사용자 프로필의 여러 앱에서 작동함
  • 정확하고 완전한 카운터
  • 조회나 노출과 같은 광고 이벤트의 맞춤 정의 지원
  • 리마케팅 광고와 문맥 광고에 모두 맞는 한 가지 기능

최대 게재빈도를 설정하려면 다음 단계를 따르세요.

1단계: 광고에 최대 게재빈도 설정 정보 추가

문맥 광고와 리마케팅 광고는 임의의 키 값 목록이 포함될 새 필드 on_device_counters_keys를 조회나 노출에서 사용하는 경우 업데이트할 관련 히스토그램 카운터를 나타냅니다. 이 필드는 FLEDGE에서 파싱되지 않는 metadata 필드에 포함되지 않습니다.

다음 예는 AdSelectionConfig에 있는 adsData 필드의 데이터 형식을 보여줍니다. 리마케팅에서는 특정 맞춤 잠재고객의 광고 목록 형식이 아래와 같이 ads 필드의 콘텐츠와 일치합니다.

'adsData': [
  {
    "buyer": "ads.example.com",
    "ads": [
      {
        'render_url': 'exampleUrl',
        'metadata': {...},   /* metadata are opaque to FLEDGE and
                                just required to be in valid JSON
                                format */
        'on_device_counters_keys': [
          'campaign_id:1234',
          'campaign_id:1234+adgroup_id:5678'
        ]
      }]
  }]
}

2단계: 조회 또는 노출 등록

광고 기술은 updateEventHistogram 메서드를 호출하여 최대 게재빈도 설정에 사용되는 이벤트의 발생을 등록할 수 있습니다. 낙찰된 광고의 eventType에 지정된 키에 관해 동일한 이벤트에서 메서드를 반복적으로 호출할 수 있습니다.

void updateEventHistogram(@EventType eventType, long adSelectionId)

입력:

  • eventType: 이벤트가 조회, 노출, 아니면 광고 선택 프로세스의 낙찰로 계산되는지 식별합니다.
  • adSelectionId: selectAds 호출에서 반환되는 AdSelectionOutcome 객체의 ID 값입니다.

updateEventHistogram 호출은 CustomAudience에서 가져온 리마케팅 광고 또는 selectAdsAdSelectionConfig 매개변수에 포함된 문맥 광고의 일부로 정의된 키 세트의 히스토그램을 업데이트합니다. on_device_counters_keys의 키 외에도 이 호출은 광고의 render_url 값으로 식별되는 카운터의 히스토그램을 업데이트합니다.

1단계의 광고가 id 값이 9999AdSelection의 낙찰자라고 가정한다면 updateEventHistogram(EventType.VIEW, adSelectionId: 999) 호출은 다음 세 가지 기본 키의 카운터를 증가시킵니다.

  • {'ads.example.com', 'campaign_id:1234', VIEW}
  • {'ads.example.com', 'campaign_id:1234+adgroup_id:5678', VIEW}
  • {'ads.example.com', 'exampleUrl', VIEW}.

광고 기술 이름은 낙찰된 광고의 출처에 따라 구매자 필드(문맥 광고 또는 맞춤 잠재고객)에서 가져옵니다.

Android용 FLEDGE는 selectAds API 호출에서 반환된 광고의 이벤트 유형 EventType.AD_SELECTION_WIN에 관해 위에 언급된 모든 카운터를 자동으로 증가시킵니다. 이는 Chrome의 FLEDGE 구현에서 generateBidbrowser_signalsprev_wins 인수를 추가하는 것과 기능적으로 동일합니다.

3단계: 필터로 최대 게재빈도 필터링 구현

최적의 성능을 위해 최대 게재빈도 필터링 기능은 AdServices 내에서 실행됩니다. FLEDGE는 AdsData 객체의 필터 필드를 읽어 메시지를 필터링해야 하는지 파악합니다. 필터 목록은 frequency_cap에 지정됩니다. 키, event_type, interval_seconds의 값은 필터링 및 FLEDGE에 사용되는 이벤트의 히스토그램을 검색하는 데 사용됩니다.

필터링 정보는 맞춤 잠재고객이 제공하는 리마케팅 광고 및 문맥 광고에 관해 AdSelectionConfig 객체의 일부로 지정할 수 있습니다.

최대 게재빈도 필터가 있는 문맥 광고의 경우 광고는 AdSelectionConfig 객체의 광고 필드를 사용하여 전달됩니다. 광고가 필터링되고 입찰가가 가장 높은 광고가 selectAds 호출의 결과로 반환됩니다.

최대 게재빈도 필터가 있는 리마케팅 광고의 경우 광고는 구매자가 제공한 generateBid() 자바스크립트 함수가 호출되기 전에 필터링됩니다.

다음 예는 최대 게재빈도 필터링이 포함된 메시지를 보여줍니다.

{
  'render_url': 'url',
  'metadata': {...},   /* metadata are opaque to FLEDGE and assumed
                        to be in valid JSON format */

  'on_device_counters_keys': [
    'campaign_id:1234',
    'campaign_id:1234+adgroup_id:5678'
  ],

  "filters": {
    "frequency_cap": {
      "view": {
        "campaign_id:1234": {
          "cap": 10,
          "interval_seconds": 86400
        },
        "adgroup_id:5678": {
          "cap": 10,
          "interval_seconds": 86400
        },
      },
      "win": {
        "campaign_id:1234": {
          "cap": 5,
          "interval_seconds": 604800
        },
        "adgroup_id:5678": {
          "cap": 5,
          "interval_seconds": 345600
        },
      }
    },

  // This field is only required in contextual ads and is used in
  // reportImpression calls to fetch the reportWin function.
  'reportingJS': "https://ads.example.com?reportWin.js"
}

4단계: 낙찰된 광고 보고서

광고 선택 프로세스가 완료되면 selectAds 호출의 숫자 식별자인 renderUriadSelectionId가 포함된 AdSelectionOutcome 객체를 반환합니다. 이 ID는 현재 이벤트 수준 보고를 지원하는 reportImpression API를 호출하는 데 사용할 수 있습니다. 베타 1에서 이 메서드는 리마케팅 광고 보고를 지원하며 향후 출시에서는 문맥 광고 보고를 지원하도록 확장될 예정입니다. 문맥 광고의 경우 구매자는 광고 구조에서 reportingJS라는 추가 필드를 사용하여 reportImpression 호출 중에 reportWin 함수를 가져올 수 있는 위치를 표시해야 합니다(위 예 참고).

광고 조합 선택 권장사항

FLEDGE는 최대 게재빈도 설정 적용을 서버에서 기기로 이동합니다. 낙찰된 입찰이 개인 정보 보호 샌드박스로 보고되지만 개발자는 광고가 표시되지 않는 이유를 알지 못합니다. 광고는 입찰 실패나 최대 게재빈도 설정으로 인해 표시되지 않을 수 있습니다. 특정 광고가 낙찰되지 않는 이유를 완전히 파악할 수 없으므로 입찰 시스템은 추가 작업을 통해 최적의 광고가 게재되도록 합니다. 이러한 권장사항을 따르면 FLEDGE를 사용한 최적의 광고 게재를 보장할 수 있습니다.

충분한 리마케팅 광고 전송

리마케팅 광고는 사용자별로 최적화할 수 없습니다. 사용자에게 맞춤 잠재고객의 광고가 상당히 많이 표시되고 광고 제한이 낮으면 모든 광고가 필터링될 수 있습니다. 리마케팅 광고는 주기적으로 새로고침되므로 충분한 광고 인벤토리가 최대 게재빈도 설정을 통과해야 리마케팅 광고가 계속 게재됩니다. 이는 joinCustomAudience 호출 중 그리고 맞춤 잠재고객 백그라운드 가져오기 프로세스 중에 지정할 수 있는 광고 크기에 관한 제한사항과 균형을 이루어야 합니다. 구매자는 입찰 단계에서 지연 시간이 늘어날 수 있음을 고려해야 합니다. 이러한 문제의 영향을 최소화하기 위해 generateBid 호출 전에 최대 게재빈도 필터링이 실행됩니다.

서버에 문맥 카운터 유지

서버 측 추정을 사용하여 개발자는 최대 게재빈도 설정이 활성화될 수 있는 시점에 관해 대략적으로 추정할 수 있습니다. 이러한 추정은 광고가 최대 게재빈도 기준점에 도달했을 가능성이 크므로 더 많은 광고 조합과 함께 전송되거나 완전히 삭제되어야 함을 나타낼 수 있습니다.

문맥 응답에서 여러 광고 조합 전송

FLEDGE 입찰 전에 문맥 응답과 함께 여러 광고 조합을 전송해야 합니다. 이렇게 하면 여러 광고가 필터링되더라도 다른 광고가 계속 표시됩니다. 일부 광고가 백업으로 제공되도록 광고 조합을 우선할 수 있습니다.

실행은 정해진 기한이 있으므로 광고 조합은 입찰에서 낙찰되고 필터링되지 않을 가능성을 고려하여 선택해야 합니다.

제한사항

다음은 FLEDGE 최대 게재빈도 설정의 알려진 제한사항입니다.

  1. FLEDGE 최대 게재빈도 설정은 기기 사용자 프로필 수준에서 작동하며 현재는 다른 기기 및 다른 프로필에 공유 카운터가 없습니다. 원하는 경우 다른 기기에서 표시되는 모든 광고 증분은 수동으로 통합해야 합니다.
  2. 기기 카운터는 기기에 저장되고 기기에서 액세스됩니다. 서버 측 카운터는 별도로 관리해야 합니다.
  3. 최대 게재빈도 설정 및 관련 광고 필터링이 기기에서 처리되므로 광고 기술 플랫폼에서는 이러한 작업을 직접 제어할 수 없습니다. 기기의 최대 게재빈도 설정 기준점을 지우기 위해 광고 기술 플랫폼은 여러 조합 광고를 전송할 수 있습니다.
  4. 기록된 게재빈도에 따른 입찰가 조정은 지원되지 않습니다. generateBid 함수는 게재빈도 카운터를 볼 수 없습니다.