SDK 런타임의 미디에이션 지원

미디에이션은 판매 측 광고 플랫폼에서 수익 관리를 제공하는 일반적인 방법입니다. 미디에이션 워크플로에서 미디에이션 SDK ('미디에이터')는 여러 광고 네트워크 ('미디에이티' 또는 '미디에이티스')를 호출하여 지정된 슬롯에 가장 적합한 광고를 가져옵니다. 경우에 따라 미디에이터와 미디에이터가 호출하는 광고 네트워크 모두 SDK가 기기에 있어야 하고 상호작용해야 합니다.

이 문서에서는 SDK 런타임의 미디에이션 워크플로의 주요 변경사항을 간략히 설명합니다. 다음 주제를 다룹니다.

  • 이전 미디에이션 흐름과 현재 SDK 런타임 미디에이션 지원의 차이점
  • SDK 런타임의 미디에이션 워크플로 및 전환의 다양한 단계에 대한 설정 작업
  • 일부 SDK가 런타임으로 이전되지 않은 시나리오를 처리하는 방법에 관한 안내

SDK 런타임에서 미디에이션된 광고를 지원하는 기능은 AGP 8.5 및 다음 버전의 SDK 런타임 Jetpack 라이브러리에서 사용할 수 있습니다.

Androidx 라이브러리 버전
androidx.privacysandbox.activity 1.0.0-alpha01
androidx.privacysandbox.sdkruntime 1.0.0-alpha13
androidx.privacysandbox.tools 1.0.0-alpha08
androidx.privacysandbox.ui 1.0.0-alpha09

용어 설명

다음 용어는 SDK 런타임의 미디에이션을 이해하는 데 중요합니다.

  • 런타임 지원 SDK (RE SDK): SDK 런타임 환경에서 실행되고 프로세스 간 통신(IPC)을 통해 앱과 통신하도록 만든 SDK입니다.
  • 런타임 인식 SDK (RA SDK): 런타임 지원이 아닌 SDK로, 앱에 정적으로 연결되며 기존 SDK 코드와 런타임 지원 SDK를 호출하는 새 코드가 포함될 수 있습니다.
  • 인앱 SDK: 앱에 정적으로 연결되어 실행되며 SDK 런타임을 인식하지 않는 SDK입니다. SDK 런타임으로 전환하지 않은 광고 네트워크 또는 게시자의 맞춤 어댑터일 수 있습니다.
  • 미디에이터: 다른 광고 네트워크 SDK와 상호작용하여 기기 내 미디에이션 서비스를 제공하는 광고 미디에이션 SDK입니다.
  • Mediatee: 미디에이터가 광고를 제공하고 렌더링하기 위해 호출하는 광고 네트워크 SDK입니다.
  • 미디에이션 어댑터: 미디에이터 SDK에서 다양한 미디에이티 SDK와 상호 운용하기 위한 API 인터페이스 변환을 제공하는 데 사용하는 SDK로, 일반적으로 미디에이터에서 제공합니다. 런타임 인식 또는 런타임 비인식일 수 있습니다.

일반적인 미디에이션 흐름

SDK가 SDK 런타임에서 미디에이션 사용 사례를 지원해야 하는 경우 몇 가지 변경사항을 구현해야 합니다. 이 섹션에서는 미디에이터와 미디에이티에 필요한 변경사항을 해결할 수 있도록 미디에이션 흐름의 주요 요소를 검토합니다.

설명하는 흐름은 여러 광고 네트워크 SDK를 사용하는 기기 내 미디에이션의 단순화된 버전을 나타내며 미디에이션 여정을 SDK 런타임과 호환되도록 하는 데 필요한 변경사항에 관한 논의의 기반이 됩니다.

미디에이션 흐름 구현의 다양성을 고려하여 다음 두 가지 주요 흐름에 중점을 둡니다.

  • 초기화 (광고 네트워크 검색 및 통신 포함)
  • 광고 사용자 인터페이스 (UI) 프레젠테이션

초기화

다음은 표준 초기화, 광고 네트워크 검색, 커뮤니케이션 흐름을 나타냅니다.

  1. 클라이언트 앱이 미디에이터를 시작합니다.
  2. 미디에이터는 관련 미디에이션 대상과 어댑터를 검색하고 초기화합니다.
  3. 미디에이터는 어댑터를 사용하여 각 미디에이트와 통신합니다.
  4. 클라이언트 앱이 미디에이터에 광고를 로드하도록 요청함
  5. 클라이언트 앱이 미디에이터에 이 광고를 표시하도록 요청합니다.

광고 UI 프레젠테이션

이전 단계의 최종 요청 후 광고를 렌더링하는 경우 흐름은 광고 유형에 따라 다릅니다.

배너 광고 전체 화면 광고 네이티브 광고
미디에이터 SDK는 낙찰된 미디에이터의 광고 뷰를 래핑하는 광고 뷰를 만듭니다.

이 뷰에 리스너를 설정하거나 동일한 미디에이티 또는 다른 미디에이티를 사용하여 광고를 자동 새로고침할 수도 있습니다.
미디에이터 SDK는 미디에이티에서 전체 화면 광고를 요청하고 미디에이티는 Activity를 시작합니다. 게시자는 미디에이터 SDK에서 반환된 구성요소를 사용하여 뷰 처리 및 확장을 관리합니다.

SDK 런타임의 미디에이션 흐름

SDK 런타임 내에서 미디에이션이 작동하는 방식은 미디에이션 대상이 런타임 지원 여부에 따라 다릅니다. 이를 바탕으로 다음과 같은 시나리오가 가능합니다.

  • 미디에이터와 미디에이트가 모두 SDK 런타임에 있습니다. RE 미디에이트
  • 미디에이터가 SDK 런타임에 있고 미디에이트 대상이 인앱에 있는 경우: 인앱 미디에이트 대상

RE Mediatee

다음 아키텍처 다이어그램은 미디에이터의 런타임 지원 (RE) 및 런타임 인식 (RA) SDK, RE 미디에이션 어댑터, 미디에이티의 RE SDK 상호작용에 관한 개요를 보여줍니다.

미디에이션 어댑터는 상호작용하는 미디에이티와 동일한 프로세스에 있어야 하므로 SDK 런타임으로 이전해야 합니다.

미디에이터의 런타임 지원 (RE) 및 런타임 인식 (RA) SDK, RE 미디에이션 어댑터, 미디에이티의 RE SDK 상호작용에 관한 개요를 보여주는 아키텍처 다이어그램
**그림 1.** 미디에이터와 미디에이티는 모두 RE SDK입니다.

초기화

런타임 지원 미디에이터와 미디에이티의 초기화, 검색, 통신을 모두 고려할 때 흐름은 다음 단계를 따릅니다.

  1. 앱 (또는 RA SDK)은 SdkSandboxManager#loadSdk를 사용하여 미디에이터 SDK를 로드하고 초기화합니다.
  2. 미디에이터 SDK는 초기화 중에 SdkSandboxController#loadSdk를 사용하여 SDK 런타임에서 필요한 모든 미디에이트를 로드하고 초기화합니다.
  3. RE SDK는 SdkSandboxController#getSandboxedSdks를 호출하여 런타임에서 로드된 모든 SDK를 검색할 수 있습니다.
RE - 이전에 설명된 흐름을 보여주는 RE 미디에이션 시퀀스 다이어그램
**그림 2.** RE 미디에이티를 초기화하는 흐름

광고 UI 프레젠테이션

다음 섹션에서는 RE 미디에이티에서 배너 및 전체 화면 광고를 로드하는 방법을 설명합니다.

RE Mediatee 배너 광고

앱의 배너 광고 로드 요청이 있으면 렌더링을 완료하는 흐름은 다음과 같습니다.

  1. 미디에이터가 이 광고의 낙찰된 미디에이트를 선택합니다.
  2. 중재자는 중재 대상에서 SandboxedUiAdapter를 가져옵니다.
  3. 미디에이터는 UiAdapter를 앱에 전달합니다.
RE-RE 미디에이션에서 배너 광고 렌더링을 완료하는 흐름
**그림 3.** RE 미디에이티에서 배너 광고 렌더링을 완료하는 흐름

SandboxedUiAdapter 및 SDK 런타임 UI 라이브러리의 사용에 대해 자세히 알아보세요.

배너 광고 오버레이

미디에이터가 광고에 오버레이를 추가하려면 다음과 같이 흐름을 수정해야 합니다.

  1. 미디에이터는 오버레이와 SandboxedSdkView로 레이아웃을 만듭니다.
  2. 미디에이터는 이 광고에 대해 낙찰된 미디에이트를 선택합니다.
  3. 중재자는 중재 대상에서 SandboxedUiAdapter를 가져옵니다.
  4. 미디에이터는 미디에이트 대상의 UiAdapterSandboxedSdkView로 설정합니다.
  5. 미디에이터는 채워진 뷰를 앱과 공유합니다.
RE Mediatee에서 가져온 배너 광고 위에 뷰를 오버레이하는 흐름입니다.
RE Mediatee에서 가져온 배너 광고 위에 뷰를 오버레이하는 흐름입니다.
RE Mediatee 전체 화면 광고

앱에서 전체 화면 광고를 로드하도록 요청하면 다음 단계를 따릅니다.

  1. 앱 (또는 RA SDK)은 광고 로드 요청과 함께 SdkActivityLauncher를 미디에이터에 전달합니다.
    1. 클라이언트는 조건자를 사용하여 활동 생성을 제한할 수 있습니다.
  2. 미디에이터는 이 광고에 대해 낙찰된 미디에이트를 선택합니다.
  3. 미디에이터는 미디에이티에게 광고를 로드하도록 요청하여 앱에서 SdkActivityLauncher를 전달합니다.
  4. 미디에이티는 활동 핸들러를 등록하고 등록된 활동의 식별자 토큰을 가져옵니다.
  5. 미디에이티는 SdkActivityLauncher를 사용하여 이 토큰을 사용하여 활동을 시작하도록 요청합니다.
  6. 클라이언트 앱의 조건자가 허용하는 경우 SDK 런타임은 전용 프로세스에서 이 활동을 시작합니다.
RE Mediatee에서 미디에이션된 전체 화면 앱을 표시하는 흐름입니다.
**그림 4.** RE Mediatee에서 미디에이션된 전체 화면 광고를 로드하는 방법을 보여주는 플로우 다이어그램

SDK 런타임에서 전체 화면 광고에 대한 Activity 지원에 관해 자세히 알아보세요.

인앱 Mediatee

다음 아키텍처 다이어그램은 미디에이터의 RE 및 RA SDK, SDK 런타임을 인식하지 못하는 미디에이션 어댑터, 앱에 정적으로 연결된 미디에이티의 SDK(런타임 인식 불가) 간의 상호작용에 관한 개요를 보여줍니다.

미디에이터의 RE 및 RA SDK 상호작용, SDK 런타임을 인식하지 못하는 미디에이션 어댑터, 앱에 정적으로 연결된 미디에이티의 SDK(런타임 인식 불가)에 대한 개요를 보여주는 아키텍처 다이어그램
**그림 5.** 미디에이티는 RE SDK를 인식하더라도 앱에 정적으로 연결됩니다.

초기화

이 시나리오에서 미디에이티는 앱에 정적으로 연결되어 있고 아직 SDK 런타임으로 이전되지 않았으므로 미디에이터의 런타임 지원 SDK에는 미디에이티를 등록하는 프로세스가 있어야 합니다.

이 등록은 미디에이터의 API를 사용하여 액세스할 수 있어야 하지만 구현 세부정보는 각 미디에이터의 재량에 맡겨집니다. 이 API를 MediationSandboxedSdk#registerInAppMediatee라고 합니다.

RE 미디에이터 SDK 및 인앱 미디에이터 SDK의 초기화, 검색, 통신을 고려할 때 흐름은 다음 단계를 따릅니다.

  1. 앱이 미디에이터의 런타임 인식 SDK를 로드하고 초기화합니다.
  2. 미디에이터의 RA SDK:
    1. SdkSandboxManager#loadSdk를 사용하여 미디에이터의 RE SDK를 초기화합니다.
    2. 모든 인앱 미디에이티 SDK를 초기화합니다.
    3. RE SDK MediationSandboxedSdk#registerInAppMediate에서 제공하는 API를 사용하여 인앱 미디에이티 SDK를 검색하고 등록합니다.

모든 인앱 미디에이티 SDK가 등록되어 있는 것 외에도 미디에이터의 RE SDK는 SdkSandboxController#getSandboxedSdks를 사용하여 SDK 런타임에 로드된 모든 SDK를 검색할 수 있습니다.

인앱 미디에이트를 초기화하는 데 설명된 흐름을 보여주는 시퀀스입니다.
**그림 6.** 추천 미디에이터의 API를 사용하여 인앱 미디에이터 참조를 등록합니다.

광고 UI 프레젠테이션

다음 섹션에서는 인앱 미디에이티에서 배너 및 전체 화면 광고를 로드하는 방법을 설명합니다.

인앱 미디에이션 대상 배너 광고

앱의 배너 광고 로드 요청이 있으면 렌더링을 완료하는 흐름은 다음과 같습니다.

  1. 미디에이터의 런타임 인식 SDK는 앱의 요청을 런타임 지원 SDK로 전달합니다.
  2. 미디에이터의 RE SDK가 관련 미디에이트를 선택합니다.
  3. 미디에이터의 RE SDK는 미디에이티에 대한 참조를 검색하고 RA SDK를 통해 광고를 로드하도록 요청합니다.
  4. RA SDK는 인앱 미디에이션 대상에서 뷰를 가져옵니다.
  5. RA SDK는 수신한 뷰의 SandboxedUiAdapter를 만듭니다.
  6. RA SDK는 UiAdapter를 RE SDK로 전달합니다.
  7. RE SDK는 UiAdapter를 앱에 전달합니다.
인앱 미디에이티에서 배너 광고 렌더링을 완료하는 흐름
**그림 7.** 미디에이터는 인앱 미디에이티에서 뷰를 가져올 때 V1 위에 뷰를 오버레이해서는 안 됩니다.
인앱 미디에이티드 전체 화면 광고

앱에서 전체 화면 광고를 로드하도록 요청하면 다음 단계를 따릅니다.

  1. 앱은 광고 로드 요청과 함께 SdkActivityLauncher를 미디에이터의 RA SDK에 전달합니다.
    1. 클라이언트는 조건자를 사용하여 활동 생성을 제한할 수 있습니다.
  2. 미디에이터의 RA SDK는 앱의 요청을 RE SDK로 전달합니다.
  3. 미디에이터의 RE SDK:
    1. 관련 미디에이트를 선택합니다.
    2. 인앱 미디에이션 대상에 대한 참조를 가져옵니다.
    3. RA SDK를 통해 광고를 로드하도록 요청합니다.
  4. RA SDK는 미디에이티에게 광고를 로드하도록 요청합니다.
  5. 중재 대상이 활동을 직접 시작합니다. 앱의 조건자가 적용되지 않습니다.
미디에이티가 앱 프로세스에 있는 경우 전체 화면 광고 로드 흐름
**그림 8.** 인앱 미디에이티에서 이 조건자를 무시합니다.

참여 및 의견 공유

Android의 개인 정보 보호 샌드박스는 진행 중인 프로젝트이며 이 문서는 현재 설계를 반영합니다. 보내주신 의견은 기능을 지속적으로 개발하고 개선하는 데 큰 도움이 됩니다. 버그를 신고하여 의견을 제공하세요.