전체 화면 광고에 대한 활동 지원

의견 보내기

SDK 런타임은 SDK가 새 활동을 시작할 수 있는 방식에 제한을 가합니다. 이 경우 향상된 제어 및 사용자 환경을 위해 별도의 활동을 시작하는 것이 일반적인 전체 화면 광고 형식에서 문제가 됩니다. 이를 해결하기 위해 SDK 런타임에는 샌드박스 활동을 위한 새로운 메커니즘이 도입되었습니다.

SDK 런타임 환경 내에서 로드된 SDK는 매니페스트에서 <activity> 태그를 직접 정의하거나 자체 활동을 시작할 수 없습니다. 대신 새로운 인텐트 작업 START_SANDBOXED_ACTIVITY가 도입되었습니다.

SDK도 이 작업으로 인텐트를 시작할 수 없지만 클라이언트 앱에 이 인텐트를 시작하도록 요청합니다. 그러면 시스템이 플랫폼에서 정의한 활동을 생성하여 SDK에 전달합니다. 이 활동은 다음에서 실행됩니다. SDK와 동일한 프로세스로 이루어집니다

그러면 SDK는 이 활동을 사용하여 전체 화면 광고를 구현하고 관리할 수 있습니다. 경험해 볼 수 있습니다

플랫폼에서 제공하는 활동은 표준 android.app.Activity입니다. 클라이언트 앱 작업의 일부로 실행됩니다.

SDK 런타임에서 활동 생성

활동을 만드는 데는 간소화된 Jetpack 활동 라이브러리를 사용하거나 플랫폼 API와 직접 상호작용하는 두 가지 기본 방법이 있습니다.

활동 라이브러리는 기본적인 복잡성을 추상화하여 활동 생성을 간소화하므로 활동 라이브러리를 사용하는 것이 좋습니다.

활동 라이브러리

활동 라이브러리를 사용하면 장점:

  • 활동 핸들러를 등록하고 클라이언트 앱과 식별자를 공유하는 방법에 관한 내부 세부정보를 추상화합니다.
  • 충족시킬 조건 (조건자)을 설정함으로써 앱 개발자가 앱 내에서 SDK가 활동을 생성하는 방식을 더 세밀하게 제어할 수 있습니다.
  • SDK가 활동을 실행하는 API를 정의하는 통합된 방법을 만듭니다.

활동 라이브러리는 코어, 클라이언트, 제공자라는 세 가지입니다.

  • core 라이브러리는 클라이언트 앱과 제공업체 라이브러리에 액세스할 수 있습니다.
  • provider 라이브러리는 SDK가 활동을 실행하는 API를 제공합니다.
  • 클라이언트 라이브러리는 클라이언트 앱이 활동 런처를 만들 수 있는 API를 제공합니다. SDK는 이 API를 사용하여 앱이 활동을 실행하도록 요청할 수 있습니다.

이러한 라이브러리에는 다음과 같은 API가 도입되었습니다.

활동 라이브러리로 활동을 실행하는 흐름은 다음과 같습니다.

  1. SDK는 SdkActivityLauncher를 활동을 시작하는 모든 API에 연결합니다.
  2. 클라이언트 앱은 활동 중 하나에서 createSdkActivityLauncher를 실행하여 API 호출 시 SDK에 전달할 수 있는 런처를 만듭니다.
  3. SDK는 SdkSandboxControllerCompat.registerSdkSandboxActivityHandler(SdkSandboxActivityHandlerCompat) 드림 식별자 토큰을 검색합니다
  4. SDK는 launchSdkActivity 드림 활동을 시작합니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.

다음 다이어그램은 활동 라이브러리를 사용하는 경우의 흐름을 보여줍니다.

<ph type="x-smartling-placeholder">
</ph> 활동 라이브러리 시퀀스 다이어그램
활동을 사용한 활동 시작 흐름을 보여주는 시퀀스 다이어그램 제공합니다.

플랫폼 API

플랫폼에는 다음과 같은 API가 도입되어 SDK 런타임 내에서 샌드박스 처리된 활동을 관리할 수 있습니다.

플랫폼 API를 사용하여 활동을 시작하려면 SDK가 다음 흐름을 따라야 합니다.

  1. SDK는 제공된 API를 사용하여 활동 핸들러를 등록하고 식별자를 가져옵니다.
  2. SDK는 이 식별자를 클라이언트 앱과 공유합니다.
  3. 클라이언트 앱은 이 메서드를 호출하여 플랫폼 API startSdkSandboxActivity(Activity, IBinder)로 SDK 런타임에서 활동을 시작하고 이 새 활동에 대해 선택한 시작 활동과 활동 핸들러의 식별자를 매개변수로 전달합니다.
  4. 플랫폼은 활동을 시작하고 활동 핸들러 (SdkSandboxActivityHandler.onActivityCreated(Activity))의 콜백을 통해 SDK에 알립니다.
  5. SDK는 활동을 사용하여 광고를 채웁니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.

플랫폼 API를 사용하면 SDK가 SdkSandboxActivityHandler의 적절한 시점에 클라이언트 앱과 식별자를 제공해야 합니다. 클라이언트 앱에 사용 방법을 안내합니다.

다음 흐름 다이어그램에서 예시 SDK에는launchActivity(AppCallback) 콜백을 사용합니다 (SDK API의 일부로 정의됨). 이 콜백은 활동 핸들러 (SdkSandboxActivityHandler)의 클라이언트 앱과 <ph type="x-smartling-void-element"><br /></ph> 식별자

<ph type="x-smartling-placeholder">
</ph> 플랫폼 API 시퀀스 다이어그램
플랫폼 API를 사용한 활동 시작 흐름을 보여주는 시퀀스 다이어그램

조회가능성

SDK 런타임 내에서 클라이언트 앱의 뷰 계층 구조에 통합된 광고는 측면 채널 SDK 프로세스에서 클라이언트 앱의 프로세스로 SDK 뷰를 렌더링합니다.

SDK는 SDK 런타임 외부에서 사용하는 것과 동일한 View API를 사용하여 사용자가 광고를 볼 수 있는지 여부를 결정합니다. 애플리케이션 창에 (조회가능성)

반대로 플랫폼에서 제공하는 활동은 기본적으로 SDK 런타임 프로세스 내에서 실행되므로 부채널이 필요하지 않으며 SDK가 표준 Android ActivityView API를 사용할 수 있습니다.

이처럼 다양한 구현 방식으로 인해 Google에서는 인터페이스를 사용하여 광고 로드 컨텍스트와 관계없이 조회가능성 신호를 가져옵니다.

Lifecycle

ActivityHolder 드림 SDK에 전달됩니다. SdkSandboxActivityHandlerCompat.onActivityCreated(ActivityHolder) implements LifecycleOwner 이 측정항목을 통해 Lifecycle.Event.

뒤로 탐색

메서드 ActivityHolder.getOnBackPressedDispatcher() 드림 반품 OnBackPressedDispatcher 이 세그먼트를 통해 OnBackPressedCallback 인스턴스를 사용하여 뒤로 탐색을 처리합니다.