Runtime SDK memberlakukan pembatasan pada cara SDK dapat meluncurkan aktivitas baru. Hal ini menimbulkan tantangan bagi format iklan layar penuh yang biasanya mengandalkan memulai aktivitas terpisah untuk kontrol dan pengalaman pengguna yang lebih baik. Untuk mengatasinya, Runtime SDK memperkenalkan mekanisme baru untuk aktivitas dalam sandbox.
SDK yang dimuat dalam lingkungan Runtime SDK tidak dapat secara langsung menentukan tag <activity>
dalam manifesnya atau memulai aktivitasnya sendiri.
Sebagai gantinya, tindakan intent baru, START_SANDBOXED_ACTIVITY
, diperkenalkan.
Meskipun SDK juga dibatasi agar tidak meluncurkan intent dengan tindakan ini, SDK dapat meminta aplikasi klien untuk memulai intent ini. Sistem kemudian membuat aktivitas yang ditentukan platform dan meneruskannya ke SDK. Aktivitas ini akan berjalan di proses yang sama dengan SDK.
SDK kemudian dapat menggunakan aktivitas ini untuk menerapkan dan mengelola iklan layar penuh pengalaman yang lancar bagi developer.
Aktivitas yang disediakan oleh platform adalah android.app.Activity
standar,
diluncurkan sebagai bagian
dari tugas aplikasi klien.
Pembuatan aktivitas di Runtime SDK
Anda memiliki dua metode utama untuk membuat aktivitas: menggunakan Library aktivitas Jetpack yang disederhanakan atau berinteraksi langsung dengan Platform API.
Sebaiknya gunakan library Aktivitas karena library ini menyederhanakan pembuatan aktivitas dengan mengabstraksi kompleksitas yang mendasarinya.
Library aktivitas
Aktivitas library ini menyediakan beberapa kelebihan:
- Mengabstraksi detail internal pendaftaran pengendali aktivitas dan membagikan ID-nya dengan aplikasi klien.
- Memberi developer aplikasi lebih banyak kontrol atas cara SDK membuat Aktivitas dalam aplikasi mereka dengan memungkinkan mereka menetapkan kondisi (predikat) yang harus dipenuhi.
- Membuat cara terpadu bagi SDK untuk menentukan API yang meluncurkan aktivitas.
Ada tiga library aktivitas: core, klien, dan penyedia.
- Library core menyediakan antarmuka yang digunakan oleh aplikasi klien dan library penyedia.
- Library provider menyediakan API bagi SDK untuk meluncurkan aktivitas.
- Library client menyediakan API bagi aplikasi klien untuk membuat peluncur aktivitas, yang dapat digunakan SDK untuk meminta aplikasi meluncurkan aktivitas.
Library ini memperkenalkan API berikut:
SdkActivityLauncher
: Peluncur aktivitas memungkinkan SDK menangani aktivitas peluncuran dari aplikasi klien. Aplikasi klien harus membuat peluncur dan meneruskannya sebagai parameter ke API SDK yang memulai aktivitas.<T : Activity & LifecycleOwner> T.createSdkActivityLauncher(() -> Boolean )
: Fungsi ekstensi yang dapat dipanggil aplikasi klien dari aktivitasnya untuk membuat peluncur.SdkActivityLauncher.launchSdkActivity(IBinder)
: Metode yang digunakan oleh SDK untuk meminta aplikasi meluncurkan aktivitas.
Alur aktivitas peluncuran dengan library aktivitas adalah sebagai berikut:
- SDK menambahkan parameter jenis
SdkActivityLauncher
ke API apa pun yang akan memulai aktivitas. - Aplikasi klien memanggil
createSdkActivityLauncher
pada salah satu aktivitasnya untuk membuat peluncur yang dapat diteruskan ke SDK pada panggilan API. - Panggilan SDK
SdkSandboxControllerCompat.registerSdkSandboxActivityHandler(SdkSandboxActivityHandlerCompat)
dan mengambil token ID. - Panggilan SDK
launchSdkActivity
untuk meluncurkan aktivitas.
Diagram berikut menunjukkan alur dalam kasus penggunaan library aktivitas.
API Platform
Platform ini memperkenalkan API berikut untuk memfasilitasi pembuatan dan pengelolaan aktivitas dalam sandbox dalam Runtime SDK:
SdkSandboxActivityHandler
: Pengendali Aktivitas digunakan untuk memberi tahu SDK saat Aktivitas dibuat, dan didaftarkan oleh SDK.- Untuk membantu pendaftaran Pengendali Aktivitas, SDK dapat menggunakan metode berikut di bagian
SdkSandboxController
:.registerSdkSandboxActivityHandler(SdkSandboxActivityHandler)
: Mendaftarkan instanceSdkSandboxActivityHandler
, yang menampilkan IDIBinder
..unregisterSdkSandboxActivityHandler(SdkSandboxActivityHandler)
: Membatalkan pendaftaran instance yang terdaftar dariSdkSandboxActivityHandler
menggunakan pengenalnya.
SdkSandboxManager.startSdkSandboxActivity(Activity, IBinder)
: Dipanggil dari aplikasi klien, metode ini memicu pembuatan aktivitas untuk SDK. Aplikasi klien harus diteruskan sebagai parameter awal yang dipilihnya dan ID Pengendali Aktivitas SDK.
Untuk memulai aktivitas menggunakan Platform API, SDK harus mengikuti alur ini:
- SDK mendaftarkan pengendali aktivitas menggunakan API yang disediakan dan memperoleh ID.
- SDK membagikan ID ini ke aplikasi kliennya.
- Aplikasi klien memanggil metode untuk memulai aktivitas di Runtime SDK dengan API platform
startSdkSandboxActivity(Activity, IBinder)
, yang meneruskan sebagai parameter Aktivitas awal yang dipilih untuk Aktivitas baru ini, dan ID Pengendali Aktivitas. - Platform memulai Aktivitas, dan memberi tahu SDK melalui callback di Pengendali Aktivitas (
SdkSandboxActivityHandler.onActivityCreated(Activity)
). - SDK menggunakan aktivitas untuk mengisinya dengan iklan.
Menggunakan Platform API membuat SDK bertanggung jawab untuk membagikan SdkSandboxActivityHandler dengan aplikasi klien melalui API-nya pada waktu yang tepat, dan memandu aplikasi klien tentang cara menggunakannya.
Dalam diagram alur berikut, SDK contoh memiliki metode launchActivity(AppCallback)
yang mengharapkan
callback (ditetapkan sebagai bagian dari API SDK). Callback ini digunakan oleh
SDK untuk membagikan Pengendali Aktivitas (SdkSandboxActivityHandler
)
dengan aplikasi klien.
Visibilitas
Dalam Runtime SDK, iklan yang terintegrasi ke dalam hierarki tampilan aplikasi klien menggunakan sisi channel untuk merender tampilan SDK dari proses SDK ke proses aplikasi klien.
SDK tidak dapat menggunakan View API yang sama seperti yang digunakan di luar runtime SDK untuk menentukan apakah iklan terlihat oleh pengguna, karena tampilan iklan tidak yang dilampirkan ke jendela aplikasi (Visibilitas).
Sebaliknya, aktivitas yang disediakan platform berjalan secara native dalam proses Runtime SDK, sehingga menghilangkan kebutuhan akan saluran samping dan memungkinkan SDK menggunakan API Activity
dan View
Android standar.
Karena penerapan yang berbeda tersebut, upaya berkelanjutan bertujuan untuk menyatukan antarmuka untuk mengambil sinyal visibilitas terlepas dari konteks pemuatan iklan.
Lifecycle
Tujuan
ActivityHolder
diteruskan ke SDK melalui
SdkSandboxActivityHandlerCompat.onActivityCreated(ActivityHolder)
implements
LifecycleOwner
dan dapat digunakan untuk mengetahui tentang
Lifecycle.Event
.
Navigasi kembali
Metode
ActivityHolder.getOnBackPressedDispatcher()
mengembalikan
OnBackPressedDispatcher
yang dapat digunakan untuk mendaftar
OnBackPressedCallback
untuk menangani navigasi kembali.