Android 原生廣告

原生廣告格式可讓發布商自訂要向使用者顯示的廣告。從 SDK 擷取廣告後,發布商就能變更廣告的版面配置和樣式,例如新增色彩篩選器、變更字體排版及新增自訂疊加層等,讓廣告看起來與應用程式的使用者介面更顯一致。為了將原生廣告最佳化,或帶給使用者最佳體驗,發布商通常會設定顯示限制,或將影片播放作業卸載至 SDK。最後,發布商可以自訂廣告點擊事件監聽器,用於監控向上滑動等其他事件。

相較於放送其他廣告格式,原生廣告格式對發布商的依賴程度須更高。SDK 通常會想偵測違反政策的情形,並驗證交給發布商的廣告內容是否已向使用者顯示。

系統會透過 SurfaceControlViewHost API 完成 SDK 執行階段中的橫幅廣告支援。這可讓 SDK 顯示來自 SDK 執行階段程序的使用者介面元素,而不會遭到用戶端應用程式竄改。建議您使用 SurfaceView 的 Z above 或 Z below 模式,判斷算繪 SDK UI 的途徑位於用戶端應用程式視窗上方還是下方。當廣告以 Z above 模式算繪時,SDK 會收到來自使用者互動的 MotionEvents,但用戶端應用程式檢視畫面不會在廣告中顯示。如果廣告是在 Z below 模式下算繪,應用程式會在廣告頂端顯示自己的檢視畫面,但廣告上使用者互動的 MotionEvents 會導向應用程式,而不是 SDK。

SDK 和發布商可使用 privacysandbox.ui Jetpack 程式庫建立及維護 UI 工作階段。

應用程式自有的廣告容器

我們設計的原型可讓 SDK 擁有包含原生廣告 (包括應用程式的疊加層) 的所有檢視畫面,但這個方式雖然可行,卻會對 UI 造成一些限制,增加與 SDK 整合的複雜度。更務實的做法是讓應用程式擁有大多數檢視畫面。SDK 仍可使用 privacysandbox.ui 中的 SandboxedSdkView 自行選擇顯示部分 UI,例如廣告檢視畫面。不論是現在還是未來,當您考量如何使用此廣告格式時,上述做法可提供最多彈性:透過這種做法,應用程式開發人員可視需要移動廣告元件並調整樣式,而 SDK 會保留影片播放器的擁有權 (視您的偏好而定),並保有對媒體控制項的存取權。

這張圖表顯示資料在發布商和 SDK 間的流通方式。
建議的原生廣告控制流程。

廣告狀態通知

不同的 SDK 會查看廣告檢視畫面的不同屬性,偵測詐欺行為和違規情形。我們的理想是支援此功能,但不希望規定要使用哪些屬性,或在 SDK 變更查詢的屬性集時造成瓶頸。因此,建議使用 NativeAdContainerInfo 建立廣告容器及其子項檢視畫面的表示法。這會是一個 Parcelable 物件,其中的各式 getter 會公開僅限於廣告容器及其內容的資訊,這類資訊用於隱私權保護技術,運算成本不高。SDK 將可選擇加入 NativeAdContainerInfo 包含的信號類別。每當廣告狀態變動,且方式與 SDK 相關時 (例如發生廣告曝光和使用者點擊這類可計費的事件),SDK 就會收到此物件。

此外,發布商還可以在新增到 NativeAdContainer 的每個子項中,新增特定檢視畫面的標記 (字串),用於讓 SDK 瞭解每個子項對應的廣告素材資源。

使用者點選 SDK 擁有的檢視畫面時,UI 程式庫會將 MotionEvent (具有平移至 SDK 座標空間的屬性) 連同原始的 MotionEvent 一起轉寄給 SDK。在日後的 Android 版本中,我們將研究新方法,讓用戶端應用程式針對 SDK 自有部分 (位於 SDK 所處理的這個原生廣告內) 的所有使用者手勢轉移輕觸焦點。

確認聲明

SDK 將可提供以下認證,以更有力的方式保證廣告顯示效果:

  1. 裝置完整性認證:使用金鑰認證等平台 API 判斷裝置完整性。
  2. APK 身分:使用 SdkSandboxController.getClientPackageName 這類 SdkSandbox API 和 requestChecksum 這類 PackageManager API 驗證 APK 身分。
  3. VerifiedMotionEvents:在日後的 Android 版本中,我們將研究新方法,讓用戶端應用程式針對 SDK 自有部分 (位於 SDK 所處理的這個原生廣告內) 的所有使用者手勢轉移輕觸焦點。您可以使用系統 API 將 MotionEvents 轉換為 VerifiedMotionEvents。SDK 則可選擇是否顯示自有的 UI,以回應使用者互動。

開放式問題

歡迎大家就以下幾點提供意見回饋

  1. 您偏好由 SDK 自行產生 VerifiedMotionEvents,還是讓供應商 UI 程式庫代替 SDK 執行此作業?
  2. 您偏好讓 SDK 允許發布商擁有含有影片的檢視畫面,還是讓 SDK 本身擁有這些檢視畫面?
  3. 您希望 AppOwnedAdContainerInfo 物件中可加入哪些屬性?
  4. 您希望螢幕畫面同時顯示幾個 SDK 自有的廣告或廣告元件?