Topics API를 통한 관심 기반 광고

의견 보내기

Topics API 정보

모바일 광고에서 광고주는 사용자의 관심분야와 관련된 광고를 게재하려고 합니다. 예를 들어 요리와 관련된 정보에 관심이 있는 사용자는 관심분야와 관련 없는 광고보다 요리 관련 광고가 더 관련성이 높다고 생각할 수 있습니다.

문맥 광고는 현재 조회되고 있는 콘텐츠에서 파생된 관심분야만을 기반으로 합니다. Topics API의 이점 중 하나는 사용자에게 유용하지만 문맥 광고를 통해 쉽게 수익을 창출할 수 없는 앱에서 다른 방법보다 더 관련성 높은 광고를 표시할 수 있으므로 사용자가 사용하는 앱에 자금을 지원할 수 있다는 것입니다.

Topics API는 사용자의 앱 사용을 기반으로 기기 내에서 대략적인 관심분야 신호를 추론합니다. 주제라고 하는 이러한 신호는 광고주와 공유되어 앱 전반에서 개별 사용자를 추적하지 않고도 지속적인 기타 퍼스트 파티 신호를 지원합니다.

Topics API는 일반적으로 여러 앱에서 작동하는 서드 파티 광고 SDK를 지원하도록 설계되었습니다. 이러한 지원은 SDK가 일반적으로 관찰하는 교차 앱 관심분야를 표시하는 형태로 제공됩니다. 개별 앱 개발자는 사용자에 관한 추가 정보를 배우면 안 됩니다.

주요 개념

  • 주제는 이 사용자를 위한, 인간이 읽을 수 있는 관심 주제이며 주제 분류의 일부입니다.
  • 호출자가 지난 3 에포크 동안 이 주제와 연결된 앱에서 Topics API 요청을 보낸 경우 주제는 호출자(앱 또는 앱에서 사용된 서드 파티 SDK)가 관찰합니다.
  • 에포크는 주제 계산 기간(예: 1주일)입니다.

사용 방법

이 제안서에서 Topics API의 목적은 사용자의 앱 사용에 따라 관심 있는 대략적인 광고 주제를 호출자에게 제공하는 것입니다. 이러한 주제는 광고를 표시하려는 앱과 관련된 문맥 정보를 보완하는 데 사용할 수 있으며 사용자에게 적합한 광고를 찾는 데 도움이 되도록 결합될 수 있습니다.

관심 기반 광고를 위해 주제를 가져오는 기능을 설정하는 방법을 보여주는 코드 예시는 Topics API 개발자 가이드를 참고하세요. 참고: API는 아직 완료되지 않았습니다.

주제는 사전 정의된 오픈소스 분류에서 선택합니다.

플랫폼에서는 분류 기준 모델을 사용하여 주제를 추론합니다. Topics API 구현과 분류 기준 사용은 Android 오픈소스 프로젝트의 일부이며 시간이 지남에 따라 개선됩니다.

예시로 다음 코드는 주제를 사용하여 관심 기반 광고를 가져오는 방법을 보여줍니다. 여기에 사용된 API는 최종 버전이 아닙니다.

// Initialize the Topics API.
…
topicsFuture = AdvertisingTopicsClient.getTopics();

// Retrieve Topics and use them in Ad request.
Futures.addCallback(
    topicsFuture,
    new FutureCallback<AdvertisingTopicsInfo>() {
        @Override
        public void onSuccess(@Nullable AdvertisingTopicsInfo topicsInfo) {
            // Sanitize Topics result.
            ...
            // Initialize ad request with Topics obtained.
            AdRequest adRequest = AdRequest.initialize(topicsInfo);
        }

        @Override
        public void onFailure(Throwable t) {
            // Handle error.
            ...
        }
});

분류 기준 모델의 작동 방식을 잘 이해하려면 Android Topics Classifier Colab을 사용하여 시스템에서 여러 앱 데이터가 반응하는 방식을 테스트해 보세요.

Topics API에 액세스

광고 기술 플랫폼은 Topics API에 액세스할 수 있도록 등록해야 합니다. 자세한 내용은 개인 정보 보호 샌드박스 계정 등록을 참고하세요.

세부정보

  • 각 에포크에 한 번(예: 일주일에 한 번) 사용자의 상위 5개 주제가 기기 내 정보를 사용하여 계산됩니다.

    • Topics API가 호출되면 플랫폼은 API를 호출하는 앱에 주제가 할당되었는지 확인합니다. 할당된 주제가 없으면 한 주제가 다음과 같이 선택되고 선택된 주제는 이 에포크의 나머지 기간 동안 이 앱에 할당됩니다.
      • 95%의 확률로 주제는 이 에포크 동안 계산된 상위 5개 주제 목록에서 무작위로 선택됩니다.
      • 5%의 확률로 주제는 분류에서 무작위로 선택됩니다.
      • 호출자는 매개변수(shouldRecordObservation = false)를 사용하여 getTopics를 호출하는 방식으로 상태를 수정하지 않고 주제를 가져오도록 지정할 수 있습니다. 즉, 주제는 반환될 수 있지만 호출은 주간 에포크 계산에 포함되지 않으며 호출자에 관해 관찰된 주제 목록도 업데이트하지 않습니다.
    • 각 앱이 여러 주제 중 하나를 얻는 이유는 앱마다 서로 다른 주제를 보유하도록 하여 앱이 같은 사용자를 서로 연관시키기 어렵게 하기 위함입니다.
      • 예를 들어 앱 A에는 사용자를 위해 주제 T1이 표시되지만 앱 B에는 주제 T2가 표시될 수 있습니다. 이렇게 하면 두 앱에서 이 정보가 동일한 사용자와 연결되어 있는지 확인하기가 더 어려워집니다.
  • Topics API는 지난 3 에포크 각각에 하나씩, 주제가 최대 3개인 목록을 반환합니다.

    • 최대 3개 주제를 제공함으로써 자주 사용하지 않는 앱은 관련성 있는 광고를 찾는 데 충분한 주제를 보유하지만 자주 사용하는 앱은 매주 새로운 주제를 많아야 1개 학습합니다.
    • 반환된 주제 정보에는 분류 항목에 해당하는 주제 ID(int), 분류 버전, 분류 기준 모델 버전이 포함됩니다.
    • 사용자가 지난 3 에포크 이내에 해당 주제와 연결된 앱을 사용하는 것을 관찰한 호출자만 주제를 수신할 수 있습니다.
    • 반환된 모든 주제는 사용자의 관심분야를 나타내며, 광고 요청의 광고 개인 최적화를 위해 이러한 주제 중 일부 또는 전체를 선택할 수 있습니다.
  • 주제가 Topics API를 호출하는 앱에 할당되면 플랫폼은 호출자가 이 주제를 수신할 수 있는지 결정합니다.

    • 지난 3 에포크 이내에 해당 주제와 연결된 앱의 사용자 참여를 관찰한 호출자만 주제를 수신할 수 있습니다.
    • 호출자가 이전에 이 주제에 관한 앱에서 해당 사용자를 위해 API를 호출하지 않았다면 API가 반환하는 목록에 주제가 포함되지 않습니다.
    • 호출자가 지난 3 에포크 동안 주제를 받지 못한 경우 Topics API는 빈 목록을 반환합니다.

    예를 들어 사용자가 기기에 앱을 7개(A, B, C, D, E, F, G) 설치했다고 가정해 보겠습니다. 앱과 이러한 앱의 광고 기술 SDK의 주제 분류는 다음과 같다고 가정해 보겠습니다.

    주제 분류 광고 기술 SDK
    A T1, T5 ad-sdk1, ad-sdk2
    B T2 광고 SDK2
    C T3, T6 ad-sdk3, ad-sdk4
    케이스가 T1, T4 광고 SDK1
    E T5 ad-sdk4, ad-sdk5
    F T6 ad-sdk2, ad-sdk3, ad-sdk4
    G T7 광고 SDK2
    • 1주 차: Topics API가 이 에포크 동안 사용자의 상위 5개 주제를 생성합니다.
    상위 주제 주제에 관해 알아볼 수 있는 호출자
    T1 ad-sdk1, ad-sdk2
    T2 광고 SDK2
    T3 ad-sdk3, ad-sdk4
    T4 광고 SDK1
    T5 ad-sdk1, ad-sdk2, ad-sdk4, ad-sdk5
    • 2주 차에 앱의 호출자가 API를 호출하면 반환되는 주제 목록에는 이 에포크 동안 이 앱에 관한 이 주제의 '주제에 관해 알아볼 수 있는 호출자' 열에 호출자가 있는 주제만 포함됩니다.
    • 각 호출자가 사용할 수 있는 주제 계산에 포함된 기록 기간은 3 에포크(또는 3주)입니다.
    • 광고 SDK를 통해 Topics API를 호출하는 앱과 연결된 주제만 사용됩니다. 즉, 앱에 Topics API를 호출하는 광고 SDK가 포함되어 있지 않으면 앱과 연결된 주제는 광고 SDK에서 액세스할 수 있는 주제 풀에 영향을 미치지 않습니다.
    • 앱은 광고 SDK가 앱에 API를 사용하지 못하도록 새로운 매니페스트 및 XML 요소를 통해 Topics API를 선언적으로 선택 해제할 수도 있습니다. 선택 해제된 앱과 연결된 주제는 주간 주제 계산에 영향을 주지 않습니다. 이 문서는 관련 구현 세부정보를 포함하도록 업데이트될 예정입니다.
  • 플랫폼에서 5개 주제를 추론하기에 충분한 앱 사용이 없으면 플랫폼은 나머지 주제를 무작위로 생성하는 등의 옵션을 고려할 수 있습니다.

분류

  • 현재 제안서의 경우 초기 분류에는 주제가 수백 개에서 수천 개 포함됩니다. 초기 분류 제안서는 이 문서의 향후 업데이트에서 공유됩니다.
  • 이 분류는 민감한 주제가 분류에 포함되지 않도록 사람이 선별합니다.
  • 이 분류는 Android의 모바일 앱에 표시될 수 있는 광고 카테고리에 맞게 조정됩니다.
  • 분류는 공개적으로 사용 가능하며 변경될 수 있습니다. 이 페이지 상단의 의견 보내기 버튼을 사용하여 의견을 제출하실 수 있습니다.

주제 분류 기준

관심 주제는 공개적으로 사용 가능한 앱 정보(예: 앱 이름, 설명, 패키지 이름)에 관해 학습된 분류 기준 모델에서 파생됩니다.

  • 주어진 에포크 동안 주제를 계산하는 추론에 사용되는 분류 기준 모델을 사용하면 사용된 신호 집합이 기기에 유지됩니다. 이러한 신호 집합에는 설치되었거나 최근에 사용된 앱이 포함될 수 있으며 나중에 다른 신호가 포함되도록 확장될 수 있습니다.
  • 초기 모델은 Google에서 학습시키며 이 학습 데이터에는 공개적으로 사용 가능한 앱 정보에 관한, 사람이 선별한 라벨이 포함됩니다. 이 모델은 앱이 어떤 주제로 분류되는지 테스트하기 위해 앱에서 무료로 사용할 수 있습니다.
  • 초기 모델은 Google Play 스토어와 같은 일부 앱 스토어에서 공개적으로 사용 가능한 앱 정보에 관해 학습됩니다.
  • 앱이 두 개 이상의 주제에 매핑되거나, 주제에 매핑되지 않거나, 사용자의 주제 기록에 추가되지 않을 수 있습니다. 앱이 분류에서 2개 이상의 주제에 매핑되는 경우 이 앱에 선택된 주제 수는 상위 3개로 제한됩니다.

사용자 제어

  • 설계의 목적은 사용자가 앱 사용과 연결된 주제를 보고 삭제할 수 있도록 하는 것입니다. 이 사용자 제어 기능 구현은 진행 중인 작업이며 향후 업데이트에 포함될 예정입니다.
  • 사용자가 지난 3 에포크 동안 추론된 주제 선택에 기여한 앱을 제거해도 주제는 제거 관련 정보가 공개되지 않도록 지난 3 에포크 동안 반환된 주제 목록에서 삭제되지 않습니다.

최종 사용자 환경을 간단하게 테스트할 수 있도록 인앱 인텐트를 실행하여 최종 사용자에게 표시되는 것과 비슷하게 주제의 설정 UI를 볼 수도 있습니다. 이 호출의 예는 다음과 같습니다.

//Button that launches settings UI
private Button mSettingsAppButton;
private static final String RB_SETTING_APP_INTENT = "android.adservices.ui.SETTINGS";


//Does setup for button on screen that will launch settings UI to observe Topics
private void registerLaunchSettingsAppButton() {
    mSettingsAppButton.setOnClickListener(
        new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Context context = getApplicationContext();
                Intent activity2Intent = new Intent(RB_SETTING_APP_INTENT);
                activity2Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(activity2Intent);
            }
        });
}

광고 기술 플랫폼 등록

Topics API에 액세스하려면 모든 광고 기술 플랫폼 (Google 포함)에서 등록 프로세스를 완료해야 합니다.

앱 개발자는 광고 기술 개발자의 등록 ID를 앱 매니페스트 내에 포함하여 Topics API에 액세스할 수 있는 광고 기술 개발자를 관리할 수 있습니다.

반환된 주제의 암호화

Topics API를 호출하는 등록된 광고 기술 플랫폼은 반환된 주제를 호출자만 읽을 수 있도록 암호화 키를 제공해야 합니다.

개인 정보 보호 샌드박스는 광고 기술이 제공하는 엔드포인트에서 이러한 키를 가져옵니다. 키는 자주 업데이트하되 최소 6개월마다 업데이트하는 것이 좋습니다.

개인 정보 보호 샌드박스는 등록 프로세스 중에 광고 기술에서 제공하는 엔드포인트의 사용 가능 여부를 광고 기술에 확인하도록 요청합니다. 현재 및 새로 등록된 광고 기술에 필요한 조치에 대한 자세한 내용은 등록 개발자 가이드를 참조하세요.

암호화 세부정보

암호화가 도입되면서 'GetTopics()'를 호출하면 이제 'EncryptedTopic' 객체 목록이 포함된 응답이 생성됩니다. 이러한 결과를 복호화하면 이전 Topic 객체와 동일한 JSON 형식을 가진 객체가 생성됩니다.

Topics API는 HPKE (하이브리드 공개 키 암호화)의 원샷 구현을 지원합니다. 등록된 호출자는 등록 중에 제공된 공개 암호화 URL 엔드포인트에 32비트 공개 키를 호스팅해야 합니다. 이러한 키는 Base64로 인코딩되어야 합니다.

EncryptedTopic 객체에는 3개의 필드가 있습니다. 반환된 주제 목록은 공개 키에 해당하는 비공개 키를 사용하여 가져올 수 있습니다.

개발 목적으로 등록 확인을 사용 중지하여 Topics API 암호화를 테스트할 수 있습니다. 이렇게 하면 API가 응답 암호화에 테스트 공개 키를 사용하게 됩니다. 해당하는 비공개 키를 사용하여 암호화된 주제를 복호화할 수 있습니다.