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입니다.
  • 미디에이션 대상: 미디에이터에 의해 호출되어 광고를 제공하고 렌더링하는 광고 네트워크 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 mediatee를 초기화하는 흐름

광고 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 런타임의 전체 화면 광고 활동 지원에 대해 자세히 알아보세요.

인앱 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을 획득할 때 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의 개인 정보 보호 샌드박스는 진행 중인 프로젝트이며 이 문서는 현재 설계를 반영합니다. YouTube는 기능을 계속 개발하고 개선하고 있으며, 이때 여러분의 의견이 매우 중요합니다. 버그를 신고하여 의견을 제공하세요.