Ś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:
SdkActivityLauncher
: program uruchamiający aktywność umożliwia pakietom SDK wykonywanie działań związanych z uruchamianiem aplikacji klienckiej. Aplikacje klienckie powinny tworzyć program uruchamiający i przekazywać go jako parametr do interfejsów API pakietu SDK, które rozpoczynają działania.<T : Activity & LifecycleOwner> T.createSdkActivityLauncher(() -> Boolean )
: Funkcja rozszerzenia, którą aplikacja kliencka może wywoływać na podstawie swoich działań, aby tworzyć programy uruchamiające.SdkActivityLauncher.launchSdkActivity(IBinder)
: metoda używana przez pakiet SDK do wysyłania żądań uruchamiania działań przez aplikację.
Proces uruchamiania działań za pomocą bibliotek aktywności wygląda tak:
- Pakiet SDK dodaje parametr typu
SdkActivityLauncher
do interfejsów API, które rozpoczną działania. - 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. - Pakiet SDK wywołuje
SdkSandboxControllerCompat.registerSdkSandboxActivityHandler(SdkSandboxActivityHandlerCompat)
i pobiera token identyfikatora. - Pakiet SDK wywołuje
launchSdkActivity
aby rozpocząć aktywność.
Poniższy diagram przedstawia przepływ w przypadku korzystania z bibliotek aktywności.
Interfejsy API platformy
Platforma wprowadza poniższe interfejsy API, aby ułatwić tworzenie zarządzanie działaniami w piaskownicy w środowisku wykonawczym SDK:
SdkSandboxActivityHandler
: Moduł obsługi aktywności służy do powiadamiania pakietu SDK o utworzeniu działania i jest rejestrowane przez pakiet SDK.- Aby ułatwić rejestrację modułów obsługi aktywności, pakiet SDK może korzystać z tych metod w
SdkSandboxController
:- .
.registerSdkSandboxActivityHandler(SdkSandboxActivityHandler)
: Rejestruje instancjęSdkSandboxActivityHandler
, , który zwraca identyfikatorIBinder
..unregisterSdkSandboxActivityHandler(SdkSandboxActivityHandler)
: Wyrejestrowuje zarejestrowaną instancjęSdkSandboxActivityHandler
za pomocą jego identyfikatora.
SdkSandboxManager.startSdkSandboxActivity(Activity, IBinder)
: Ta metoda jest wywoływana z aplikacji klienckiej, a potem aktywuje tworzenie działań dla pakietu SDK. Aplikacja kliencka musi przekazywać jako parametry wybraną przez siebie aktywność początkową oraz identyfikator modułu obsługi aktywności pakietu SDK.
Aby rozpocząć aktywność za pomocą interfejsów API platformy, pakiety SDK muszą wykonać ten proces:
- Pakiet SDK rejestruje moduł obsługi aktywności za pomocą podanych interfejsów API i uzyskuje identyfikator.
- Pakiet SDK udostępnia ten identyfikator swojej aplikacji klienckiej.
- 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. - Platforma uruchamia działanie i powiadamia pakiet SDK przez wywołanie zwrotne w module obsługi aktywności (
SdkSandboxActivityHandler.onActivityCreated(Activity)
). - 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.
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.