Android의 네이티브 광고

네이티브 광고 형식을 사용하면 게시자가 사용자에게 표시되는 광고를 맞춤설정할 수 있습니다. SDK에서 광고를 가져온 후 게시자는 애플리케이션의 사용자 인터페이스와 더 잘 맞도록 광고의 레이아웃과 디자인을 변경할 수 있습니다(색상 필터 추가, 서체 변경, 맞춤 오버레이 추가). 네이티브 광고의 실적이나 사용자 환경을 최적화하기 위해 게시자는 표시 한도를 설정하거나 SDK에 동영상 재생을 오프로드하는 경우가 많습니다. 마지막으로 게시자는 광고 클릭 리스너를 맞춤설정하여 위로 스와이프 등의 추가 이벤트를 모니터링할 수 있습니다.

네이티브 광고 형식에는 다른 광고 형식을 표시하는 데 필요한 것보다 더 높은 수준의 게시자에 대한 신뢰가 필요합니다. 일반적으로 SDK는 정책 위반을 감지하고 게시자에게 제공된 광고 콘텐츠가 사용자에게 표시되었는지 확인하려고 합니다.

SDK 런타임의 배너 광고 지원은 SurfaceControlViewHost API를 통해 이루어집니다. 이렇게 하면 클라이언트 애플리케이션에서 조작되지 않고 SDK가 SDK 런타임 프로세스의 사용자 인터페이스 요소를 표시할 수 있습니다. SurfaceView Z 위 모드나 Z 아래 모드를 사용하여 SDK UI가 렌더링되는 노출 영역이 클라이언트 애플리케이션의 창 위에 있는지 아래에 있는지 결정합니다. 광고가 Z 위 모드를 사용하여 렌더링되면 SDK는 사용자 상호작용에서 MotionEvents를 수신하지만 클라이언트 애플리케이션 뷰는 광고 위에 표시되지 않습니다. 광고가 Z 아래 모드로 렌더링되면 애플리케이션은 광고 위에 자체 뷰를 표시하지만 광고에 대한 사용자 상호작용의 MotionEvents는 SDK가 아닌 애플리케이션으로 이동합니다.

privacysandbox.ui Jetpack 라이브러리를 SDK 및 게시자가 사용하여 UI 세션을 설정하고 유지할 수 있습니다.

앱 소유 광고 컨테이너

네이티브 광고(애플리케이션의 오버레이 포함)를 구성하는 모든 뷰를 SDK가 소유하도록 프로토타입을 제작했으며, 실행은 가능하지만 UI에 몇 가지 제한사항이 적용되고 SDK와의 통합 복잡성이 증가한다는 사실을 확인했습니다. 좀 더 실용적인 접근 방식은 애플리케이션이 대부분의 뷰를 소유하도록 하는 것입니다. SDK는 여전히 privacysandbox.ui에서 SandboxedSdkView를 사용하여 광고 뷰와 같은 일부 UI를 자체적으로 표시할 수 있습니다. 이 접근 방식을 사용하면 이 광고 형식의 기존 사용 사례와 향후 사용 사례가 가장 유연하게 지원됩니다. 이 접근 방식으로 앱 개발자가 필요에 따라 광고 구성요소를 이동하고 스타일을 지정할 수 있으며 SDK는 원하는 경우 동영상 플레이어의 소유권을 유지하고 미디어 컨트롤에 대한 액세스 권한을 유지할 수 있습니다.

게시자와 SDK 간에 데이터가 흐르는 방식을 보여주는 다이어그램
제안된 네이티브 광고 제어 흐름

광고 상태 알림

SDK마다 사기 감지 및 정책 위반에 대해 여러 광고 뷰 속성을 살펴봅니다. 사용할 속성을 정의하거나 SDK가 쿼리되는 속성 집합을 변경하는 병목 현상을 일으키지 않고 이를 지원하려고 합니다. NativeAdContainerInfo를 사용하여 광고 컨테이너와 그 하위 뷰의 표현을 만드는 것이 좋습니다. 이는 광고 컨테이너와 그 콘텐츠로 제한된 정보를 노출하는 다양한 getter가 있는 parcelable 객체이며 여기서 이러한 정보는 개인 정보를 보호하고 계산 비용이 많이 들지 않습니다. SDK는 NativeAdContainerInfo에 포함된 신호의 카테고리를 선택할 수 있습니다. SDK는 광고 노출 및 사용자 클릭과 같은 청구 가능한 이벤트 등 SDK와 관련된 방식으로 광고 상태가 변경될 때마다 이 객체를 수신합니다.

또한 게시자는 NativeAdContainer에 추가된 각 하위 요소에 뷰별 태그(문자열)를 추가할 수 있습니다. 이를 통해 각 하위 요소에 해당하는 광고 애셋을 SDK에 알릴 수 있습니다.

사용자가 SDK에서 소유한 뷰를 클릭하면 UI 라이브러리는 SDK의 좌표 공간으로 변환된 속성이 있는 MotionEvent를 원래 MotionEvent와 함께 SDK에 전달합니다. 향후 Android 버전의 경우 클라이언트 애플리케이션이 SDK에서 처리할 이 네이티브 광고의 SDK 소유 부분에 있는 모든 사용자 동작의 터치 포커스를 전송할 수 있도록 하는 방법을 모색하고 있습니다.

증명

광고 표시를 보다 확실하게 보장하기 위해 다음 증명을 SDK에서 사용할 수 있습니다.

  1. 기기 무결성 증명: 키 증명과 같은 플랫폼 API를 사용하여 기기 무결성을 확인합니다.
  2. APK ID: SdkSandboxController.getClientPackageName과 같은 SdkSandbox API와 requestChecksum과 같은 PackageManager API를 사용하여 APK ID를 확인합니다.
  3. VerifiedMotionEvents: 향후 Android 버전에서는 클라이언트 애플리케이션이 SDK에서 처리할 이 네이티브 광고의 SDK 소유 부분에 있는 모든 사용자 동작의 터치 포커스를 전송할 수 있도록 하는 방법을 모색하고 있습니다. MotionEvents는 시스템 API를 사용하여 VerifiedMotionEvents로 변환할 수 있습니다. SDK는 원하는 경우 사용자 상호작용에 응답하여 자체 UI를 표시할 수 있습니다.

미응답 질문

다음 사항에 관한 의견을 보내주시기 바랍니다.

  1. SDK가 VerifiedMotionEvents를 직접 생성하는 것이 좋나요, 아니면 SDK 대신 제공자 UI 라이브러리가 생성하는 것이 좋은가요?
  2. SDK가 동영상이 포함된 뷰를 게시자가 소유하도록 허용하는 것이 좋은가요 아니면 이러한 뷰를 직접 소유하는 것이 좋은가요?
  3. AppOwnedAdContainerInfo 객체에 어떤 속성을 포함하고 싶으신가요?
  4. 화면에 SDK 소유 광고 또는 광고 구성요소가 동시에 몇 개나 표시될 것으로 예상하나요?