Aktywność związana z reklamami pełnoekranowymi

Prześlij opinię

Środowisko wykonawcze SDK nakłada ograniczenia na to, jak pakiety SDK mogą uruchamiać nowe działania. Stanowi to wyzwanie dla formatów reklam pełnoekranowych, które zwykle wymagają rozpoczęcia osobnej czynności w celu zwiększenia kontroli i większej wygody użytkownika. Aby rozwiązać ten problem, w środowisku wykonawczym SDK wprowadziliśmy nowatorski mechanizm aktywności w piaskownicy.

Pakiety SDK wczytane w środowisku wykonawczym SDK nie mogą bezpośrednio definiować tagów <activity> w pliku manifestu ani inicjować własnych działań. Zamiast tego wprowadzane jest nowe działanie intencji: START_SANDBOXED_ACTIVITY.

Pakiety SDK nie mogą uruchamiać intencji w ramach tego działania, ale pakiety SDK mogą zażądać zainicjowania tej intencji przez aplikację kliencką. System tworzy działanie zdefiniowaną przez platformę i przekazuje je do pakietu SDK. To działanie zostanie uruchomione za taką samą procedurę jak w przypadku pakietu SDK.

Pakiet SDK może następnie wykorzystać tę aktywność do wdrożenia reklamy pełnoekranowej i zarządzania nią z myślą o użytkownikach.

Aktywność udostępniana przez platformę to standardowa android.app.Activity, uruchomione w ramach zadania aplikacji klienta.

Tworzenie aktywności w środowisku wykonawczym SDK

Aktywności możesz tworzyć na 2 główne sposoby: za pomocą uproszczonych bibliotek aktywności Jetpack oraz w bezpośredniej interakcji z interfejsami API platformy.

Zalecamy korzystanie z bibliotek aktywności, ponieważ upraszczają one tworzenie aktywności przez wyodrębnianie jej złożoności.

Biblioteki aktywności

Działanie biblioteki oferują kilka zalety:

  • Omówienie wewnętrznych szczegółów rejestrowania modułów obsługi aktywności i udostępniania ich identyfikatorów aplikacjom klienckim.
  • Daje deweloperom aplikacji większą kontrolę nad tym, jak pakiety SDK tworzą aktywności w ich aplikacjach, umożliwiając im określanie warunków (predykatów) do spełnienia.
  • Utwórz ujednolicony sposób definiowania interfejsów API uruchamiających działania w pakietach SDK.

Dostępne są 3 biblioteki aktywności: podstawowy, klient i dostawca.

  • Biblioteka core obejmuje interfejsy używane przez aplikacje klienckie oraz biblioteki dostawcy.
  • Biblioteka provider udostępnia interfejsy API przeznaczone do uruchamiania działań przez pakiety SDK.
  • Biblioteka client udostępnia interfejsy API dla aplikacji klienckich, które pozwalają utworzyć program uruchamiający aktywność, za pomocą którego pakiety SDK mogą wysyłać żądania aplikacji do uruchamiania działań.

Te biblioteki wprowadzają następujące interfejsy API:

Proces uruchamiania działań za pomocą bibliotek aktywności wygląda tak:

  1. Pakiet SDK dodaje parametr typu SdkActivityLauncher do interfejsów API, które rozpoczną działania.
  2. Aplikacja klienta wywołuje createSdkActivityLauncher w jednym z jej działań, aby utworzyć program uruchamiający, który można przekazywać do SDK w przypadku wywołań interfejsu API.
  3. Pakiet SDK wywołuje SdkSandboxControllerCompat.registerSdkSandboxActivityHandler(SdkSandboxActivityHandlerCompat) i pobiera token identyfikatora.
  4. Pakiet SDK wywołuje launchSdkActivity aby rozpocząć aktywność.
.

Poniższy diagram przedstawia przepływ w przypadku korzystania z bibliotek aktywności.

Schemat sekwencji biblioteki aktywności
Schemat sekwencji pokazujący przepływ rozpoczynania aktywności za pomocą aktywności i biblioteki.

Interfejsy API platformy

Platforma wprowadza poniższe interfejsy API, aby ułatwić tworzenie zarządzanie działaniami w piaskownicy w środowisku wykonawczym SDK:

Aby rozpocząć aktywność za pomocą interfejsów API platformy, pakiety SDK muszą wykonać ten proces:

  1. Pakiet SDK rejestruje moduł obsługi aktywności za pomocą podanych interfejsów API i uzyskuje identyfikator.
  2. Pakiet SDK udostępnia ten identyfikator swojej aplikacji klienckiej.
  3. Aplikacja kliencka wywołuje metodę rozpoczynania aktywności w środowisku wykonawczym SDK za pomocą interfejsu API platformy startSdkSandboxActivity(Activity, IBinder), przekazując jako parametry wybrane działanie początkowe dla tego nowego działania, a także identyfikator modułu obsługi aktywności.
  4. Platforma uruchamia działanie i powiadamia pakiet SDK przez wywołanie zwrotne w module obsługi aktywności (SdkSandboxActivityHandler.onActivityCreated(Activity)).
  5. Pakiet SDK używa aktywności, aby wypełnić ją reklamą.
.

Korzystanie z interfejsów Platform API sprawia, że pakiet SDK jest odpowiedzialny za udostępnianie SdkSandboxActivityHandler w odpowiednim momencie identyfikatora za pomocą aplikacji klienckiej za pomocą jej interfejsów API; przekazać aplikacjom klienckim, jak jej używać.

Na poniższym diagramie przepływu przykładowy pakiet SDK zawiera metodę launchActivity(AppCallback), która oczekuje wywołanie zwrotne (zdefiniowane w ramach interfejsu API pakietu SDK). To wywołanie zwrotne jest używane przez SDK do udostępniania modułu obsługi aktywności (SdkSandboxActivityHandler) za pomocą aplikacji klienckiej.

Diagram sekwencji interfejsów API platformy
Schemat sekwencji pokazujący przepływ uruchamiania działania za pomocą interfejsów API platformy.

Widoczność

W środowisku wykonawczym pakietu SDK reklamy zintegrowane z hierarchią widoków aplikacji klienckiej bok kanały umożliwia renderowanie widoków SDK z procesu SDK w procesie aplikacji klienckiej.

Pakiet SDK nie może używać tych samych interfejsów API do wyświetlania, których używają poza środowiskiem wykonawczym SDK do czy reklama jest widoczna dla użytkownika, bo wyświetlenie reklamy załączony do okna aplikacji (Widoczność).

Natomiast działania dostarczane przez platformę są uruchamiane natywnie w ramach procesu środowiska wykonawczego SDK, eliminując potrzebę korzystania z kanałów bocznych i umożliwiając pakietom SDK używanie standardowych interfejsów API Androida Activity i View.

Ze względu na różne implementacje trwające wysiłki mają na celu ujednolicenie do pobierania sygnałów o widoczności niezależnie od kontekstu wczytywania reklam.

Lifecycle

ActivityHolder przekazywane do pakietu SDK przez SdkSandboxActivityHandlerCompat.onActivityCreated(ActivityHolder) implementuje LifecycleOwner i można wykorzystać tę wiedzę, aby poznać Lifecycle.Event.

Nawigacja wstecz

Metoda ActivityHolder.getOnBackPressedDispatcher() zwraca OnBackPressedDispatcher które mogą być wykorzystane do rejestracji OnBackPressedCallback instancji do obsługi nawigacji wstecz.