全螢幕廣告的活動支援功能

提供意見回饋

SDK 執行階段對 SDK 啟動新活動的方式施加限制。這對全螢幕廣告格式來說是一大挑戰,一般必須分別啟動一個活動,才能進一步控管及改善使用者體驗。為解決這個問題,SDK 執行階段為沙箱活動推出了全新機制,

在 SDK 執行階段環境中載入的 SDK 無法直接在資訊清單中定義 <activity> 標記或啟動自己的活動。 而是改為導入新的意圖動作 START_SANDBOXED_ACTIVITY

雖然 SDK 也不能使用此動作啟動意圖,但 SDK 可以 要求用戶端應用程式啟動此意圖接著,系統會建立平台定義的活動,並傳遞至 SDK。這項活動會在以下時間執行: 程序與 SDK 相同

這樣 SDK 就能使用這個活動,導入及管理全螢幕廣告 無須專人管理

平台提供的活動是標準的 android.app.Activity。 會在用戶端應用程式的工作中啟動。

在 SDK 執行階段上建立活動

建立活動的主要方法有兩種:使用簡化的 Jetpack Activity Library,或直接與 Platform API 互動。

建議您使用 Activity 程式庫,因為將基本概念抽象化,簡化活動建立程序。

活動程式庫

活動 程式庫 優點:

  • 抽象化註冊活動處理常式的內部詳細資料,並與用戶端應用程式分享其 ID。
  • 可讓應用程式開發人員設定符合的條件 (述詞),讓 SDK 能夠進一步控管 SDK 在應用程式內建立活動的方式。
  • 為 SDK 定義用於定義啟動活動的 API。

活動程式庫有三種:核心、用戶端和提供者。

  • core 程式庫提供用戶端應用程式使用的介面,以及 程式庫
  • provider 程式庫提供可讓 SDK 啟動活動的 API。
  • client 程式庫提供 API,讓用戶端應用程式建立活動啟動器,SDK 可用於要求應用程式啟動活動。

這些程式庫引入下列 API:

使用活動程式庫啟動活動的流程如下:

  1. SDK 會新增 將 SdkActivityLauncher 新增至任何要啟動活動的 API。
  2. 用戶端應用程式呼叫 對其中一個活動使用 createSdkActivityLauncher 建立啟動器,可在 API 呼叫上傳遞至 SDK。
  3. SDK 呼叫 SdkSandboxControllerCompat.registerSdkSandboxActivityHandler(SdkSandboxActivityHandlerCompat)敬上 並擷取 ID 符記
  4. SDK 呼叫 launchSdkActivity敬上 來啟動活動。
,瞭解如何調查及移除這項存取權。

下圖顯示使用活動程式庫時的流程。

活動程式庫序列圖表
顯示使用活動啟動活動的流程圖 程式庫

平台 API

平台推出下列 API 來協助建立 在 SDK 執行階段中管理沙箱活動:

如要使用 Platform API 啟動活動,SDK 必須按照下列流程操作:

  1. SDK 使用提供的 API 註冊活動處理常式,並取得 ID。
  2. SDK 會與用戶端應用程式共用這個 ID。
  3. 用戶端應用程式會呼叫這個方法,使用平台 API startSdkSandboxActivity(Activity, IBinder) 在 SDK 執行階段中啟動活動,並以參數為這個新活動選擇的啟動活動,以及活動處理常式的 ID。
  4. 平台會啟動 Activity,並透過 Activity Handler (SdkSandboxActivityHandler.onActivityCreated(Activity)) 中的回呼通知 SDK。
  5. SDK 會使用活動填入廣告。
,瞭解如何調查及移除這項存取權。

使用 Platform API 可讓 SDK 負責 SdkSandboxActivityHandler 的 用戶端應用程式在適當時機透過 API 傳回用戶端應用程式 ID,以及 引導客戶應用程式使用

在以下流程圖中,範例 SDK 中的 launchActivity(AppCallback) 方法會預期 回呼 (在 SDK 的 API 中定義)。這個回呼是由 用來共用活動處理常式 (SdkSandboxActivityHandler) 的 SDK ID 轉傳給用戶端應用程式。

平台 API 序列圖表
顯示使用平台 API 啟動活動流程的流程圖。

可視度

在 SDK 執行階段中,整合到用戶端應用程式檢視區塊階層的廣告會使用 側邊 管道 ,將 SDK 程序從 SDK 程序轉譯至用戶端應用程式的處理程序。

SDK 無法在 SDK 執行階段外使用相同的 View API, 判斷使用者是否看到廣告,因為使用者不會看到廣告 附加至應用程式視窗 (可視度)。

相反地,平台提供的活動會在 SDK 執行階段程序中原生執行,無需使用側邊管道,並允許 SDK 使用標準 Android ActivityView API。

由於導入方式不同,持續致力統合 介面,可擷取可視度信號,而不受廣告載入環境的影響。

生命週期

ActivityHolder敬上 經由 SdkSandboxActivityHandlerCompat.onActivityCreated(ActivityHolder) implements LifecycleOwner 可用來瞭解 Lifecycle.Event

返回瀏覽

方法 ActivityHolder.getOnBackPressedDispatcher()敬上 return OnBackPressedDispatcher 可以用來 OnBackPressedCallback 執行個體來處理返回導覽。