Hỗ trợ hoạt động cho quảng cáo toàn màn hình

Thời gian chạy SDK áp đặt các quy tắc hạn chế về cách SDK có thể chạy các hoạt động mới. Điều này gây ra một thách thức cho các định dạng quảng cáo toàn màn hình thường dựa vào việc bắt đầu một hoạt động riêng biệt để tăng cường khả năng kiểm soát và trải nghiệm người dùng. Để giải quyết vấn đề này, Thời gian chạy SDK giới thiệu một cơ chế mới cho các hoạt động trong hộp cát.

Các SDK được tải trong môi trường Thời gian chạy SDK không thể trực tiếp xác định thẻ <activity> trong tệp kê khai hoặc khởi tạo các hoạt động của riêng chúng. Thay vào đó, một thao tác theo ý định mới, START_SANDBOXED_ACTIVITY, sẽ được ra mắt.

Mặc dù các SDK cũng bị hạn chế khởi chạy các ý định bằng thao tác này, nhưng các SDK có thể yêu cầu ứng dụng khách bắt đầu ý định này. Sau đó, hệ thống sẽ tạo một hoạt động do nền tảng xác định và truyền hoạt động đó đến SDK. Hoạt động này sẽ chạy trong cùng một quy trình với SDK.

Sau đó, SDK có thể dùng hoạt động này để triển khai và quản lý trải nghiệm quảng cáo toàn màn hình.

Hoạt động do nền tảng cung cấp là một android.app.Activity tiêu chuẩn, được khởi chạy như một phần trong tác vụ của ứng dụng khách.

Tạo hoạt động trên Thời gian chạy SDK

Bạn có 2 phương thức chính để tạo hoạt động: sử dụng thư viện Hoạt động Jetpack được tinh giản hoặc tương tác trực tiếp với API Nền tảng.

Bạn nên sử dụng các thư viện Hoạt động vì chúng đơn giản hoá việc tạo hoạt động bằng cách trừu tượng hoá sự phức tạp cơ bản.

Thư viện hoạt động

Thư viện hoạt động mang lại một số lợi ích:

  • Tóm tắt thông tin chi tiết nội bộ về việc đăng ký trình xử lý hoạt động và chia sẻ các giá trị nhận dạng của trình xử lý đó với các ứng dụng khách.
  • Giúp nhà phát triển ứng dụng có nhiều quyền kiểm soát hơn đối với cách SDK tạo Hoạt động trong ứng dụng của họ bằng cách cho phép họ đặt các điều kiện (vị từ) cần đáp ứng.
  • Tạo một cách thức hợp nhất để các SDK xác định những API khởi chạy các hoạt động.

Có 3 thư viện hoạt động: lõi, ứng dụng và nhà cung cấp.

  • Thư viện core cung cấp các giao diện mà ứng dụng và thư viện nhà cung cấp sử dụng.
  • Thư viện provider cung cấp các API để SDK khởi chạy các hoạt động.
  • Thư viện ứng dụng cung cấp các API để ứng dụng tạo một trình chạy hoạt động. Các SDK có thể dùng trình chạy này để yêu cầu ứng dụng chạy các hoạt động.

Các thư viện này giới thiệu những API sau:

Quy trình khởi chạy các hoạt động bằng thư viện hoạt động như sau:

  1. SDK sẽ thêm một tham số thuộc loại SdkActivityLauncher vào mọi API sẽ bắt đầu các hoạt động.
  2. Ứng dụng khách gọi createSdkActivityLauncher trên một trong các hoạt động của ứng dụng để tạo một trình chạy có thể được truyền đến SDK trong các lệnh gọi API.
  3. SDK gọi SdkSandboxControllerCompat.registerSdkSandboxActivityHandler(SdkSandboxActivityHandlerCompat) và truy xuất mã thông báo giá trị nhận dạng.
  4. SDK gọi launchSdkActivity để chạy hoạt động.

Sơ đồ sau đây cho thấy quy trình trong trường hợp sử dụng thư viện hoạt động.

Sơ đồ trình tự thư viện hoạt động
Sơ đồ trình tự cho thấy quy trình bắt đầu một hoạt động bằng cách sử dụng các thư viện hoạt động.

Platform API

Nền tảng này giới thiệu các API sau đây để tạo điều kiện thuận lợi cho việc tạo và quản lý các hoạt động trong hộp cát trong Thời gian chạy SDK:

Để bắt đầu một hoạt động bằng cách sử dụng Platform API, các SDK phải tuân theo quy trình sau:

  1. SDK đăng ký một trình xử lý hoạt động bằng cách sử dụng các API được cung cấp và nhận được một giá trị nhận dạng.
  2. SDK chia sẻ giá trị nhận dạng này với ứng dụng khách của nó.
  3. Ứng dụng gọi phương thức để bắt đầu một hoạt động trong Thời gian chạy SDK bằng API nền tảng startSdkSandboxActivity(Activity, IBinder), truyền làm tham số Hoạt động bắt đầu đã chọn cho Hoạt động mới này và giá trị nhận dạng của Trình xử lý hoạt động.
  4. Nền tảng này sẽ bắt đầu một Hoạt động và thông báo cho SDK thông qua một lệnh gọi lại trong Trình xử lý hoạt động (SdkSandboxActivityHandler.onActivityCreated(Activity)).
  5. SDK sử dụng hoạt động này để điền quảng cáo vào.

Việc sử dụng API Nền tảng khiến SDK chịu trách nhiệm chia sẻ giá trị nhận dạng SdkSandboxActivityHandler với ứng dụng khách thông qua các API của ứng dụng đó vào thời điểm thích hợp và hướng dẫn các ứng dụng khách về cách sử dụng giá trị nhận dạng này.

Trong sơ đồ quy trình sau đây, SDK mẫu có một phương thức launchActivity(AppCallback) dự kiến sẽ có một lệnh gọi lại (được xác định là một phần của API của SDK). SDK dùng lệnh gọi lại này để chia sẻ giá trị nhận dạng của Trình xử lý hoạt động (SdkSandboxActivityHandler) với ứng dụng khách.

Sơ đồ trình tự API nền tảng
Sơ đồ trình tự cho thấy quy trình bắt đầu một hoạt động bằng cách sử dụng các API nền tảng.

Khả năng xem

Trong Thời gian chạy SDK, những quảng cáo được tích hợp vào hệ phân cấp khung hiển thị của ứng dụng khách sẽ sử dụng các kênh phụ để kết xuất khung hiển thị SDK từ quy trình SDK sang quy trình của ứng dụng khách.

SDK không thể dùng cùng một View API (API Khung hiển thị) như chúng sử dụng bên ngoài Thời gian chạy SDK để xác định xem quảng cáo có hiển thị cho người dùng hay không, vì khung hiển thị quảng cáo không được đính kèm vào cửa sổ của ứng dụng (Khả năng hiển thị).

Ngược lại, hoạt động do nền tảng cung cấp sẽ chạy nguyên bản trong quy trình Thời gian chạy SDK, giúp loại bỏ nhu cầu về các kênh phụ và cho phép SDK sử dụng các API ActivityView tiêu chuẩn của Android.

Do những cách triển khai khác nhau này, các nỗ lực đang diễn ra nhằm mục đích hợp nhất các giao diện để truy xuất tín hiệu về khả năng xem bất kể bối cảnh tải quảng cáo.

Vòng đời

ActivityHolder được truyền đến SDK thông qua SdkSandboxActivityHandlerCompat.onActivityCreated(ActivityHolder) triển khai LifecycleOwner và có thể dùng để biết về Lifecycle.Event.

Tính năng điều hướng quay lại

Phương thức ActivityHolder.getOnBackPressedDispatcher() trả về OnBackPressedDispatcher. Bạn có thể dùng phương thức này để đăng ký các thực thể OnBackPressedCallback nhằm xử lý thao tác điều hướng quay lại.