請按照以下操作說明宣告 API 專屬權限,並設定 SDK 對於目標 API 所管理資源的存取權。
宣告 AdServices API 專屬權限
您必須具備廣告服務 normal 權限,才能存取每個 PPAPI。在資訊清單中,請宣告應用程式或 SDK 所需 API 相應的適當存取權限。
Attribution Reporting API:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION" />
Attribution Reporting API (含偵錯報表):
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION" />
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />
Protected Audience/Custom Audience API:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_CUSTOM_AUDIENCE" />
Topics API:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS" />
視需要透過 Attribution Reporting 接收偵錯報表 API,請納入 AD_ID 權限:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />
如果專案具有模組或 SDK 的依附元件,可能已在資訊清單檔案中宣告必要的廣告服務權限。根據預設,Gradle 建構作業會將所有資訊清單檔案合併為單一檔案,封裝到應用程式中。請透過「Merged Manifest」檢視畫面確認已使用正確權限。
如果您需要避免透過 SDK 等依附元件將任何權限合併到應用程式,請為特定權限加入 remove 節點標記。以下範例說明如何避免合併 Topics 權限。
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS"
tools:node="remove" />
設定 API 專屬廣告服務
與 PPAPI 存取權限類似,每個 API 在廣告服務設定中都有對應項目。這項設定可讓您 精確控管應用程式中由 API 管理的資源存取權,或 嵌入的 SDK
在資訊清單中指定 adservicesConfig 屬性,如下所示:
在下列
範例:
<application ...>
...
<property android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/ad_services_config" />
...
</application>
指定資訊清單所參照的廣告服務 XML 資源,例如 res/xml/ad_services_config.xml。針對每個適用於
應用程式 (或內嵌的 SDK) 中,請將 allowAllToAccess 屬性設為 true
授予任何呼叫者存取權。
或者,您可以使用 allowAdPartnersToAccess 屬性,針對每項廣告技術授予精細的 API 存取權。這時,您需要提供開發人員透過註冊取得的註冊帳戶 ID 清單。如果 allowAllToAccess 屬性設定為 true,則此屬性的優先順序會高於 allowAdPartnersToAccess 屬性中指定的任何註冊帳戶 ID。
廣告技術平台也應確保應用程式用戶端正確授予授權 存取廣告服務設定中必要的隱私權保護 API。
以下範例說明如何指定廣泛存取權,以允許所有註冊 帳戶 ID 存取所有隱私權保護 API:
<ad-services-config>
<!-- Attribution API -->
<attribution allowAllToAccess="true" />
<!-- Topics API -->
<topics allowAllToAccess="true" />
<!-- Protected Audience on Android API -->
<custom-audiences allowAllToAccess="true" />
</ad-services-config>
以下範例說明如何針對特定註冊帳戶 ID,為每個隱私權保護 API 指定精細存取權:
<ad-services-config>
<!-- Attribution API -->
<attribution allowAdPartnersToAccess="ENROLLMENT-ID" allowAllToAccess="false" />
<!-- Topics API -->
<includes-sdk-library name="ENROLLMENT-ID" />
<topics allowAdPartnersToAccess="ENROLLMENT-ID" allowAllToAccess="false" />
<!-- Protected Audience on Android API -->
<custom-audiences allowAdPartnersToAccess="ENROLLMENT-ID" allowAllToAccess="false" />
</ad-services-config>
宣告 Jetpack 程式庫依附元件
使用 ads-adservices Jetpack 程式庫 1.0.0-beta01 以上版本,以整合 Privacy Sandbox 的隱私權保護 API。您可以使用這個程式庫 從平台層級詳細資料中提取您的應用程式,並簡化與 隱私權保護 API
- 將 Maven 存放區新增至您的專案。
- 在應用程式或模組的
build.gradle檔案中,宣告 ads-adservices Jetpack 程式庫依附元件。 - 使用來自
androidx.privacysandbox.ads.adservices.*套件的 API。 - ads-adservices Jetpack 程式庫內建 Kotlin 協同程式支援機制。您可能需要在專案中整合適當的生命週期感知依附元件,管理協同程式範圍。
檢查 Ad Services Extensions 版本的可用性
如果您使用 ads-services Jetpack 程式庫來整合
隱私權保護 API,程式庫會檢查
在 obtain() 函式中提出要求的 API。如果無法在裝置上取得要求的 API,此函式會傳回空值。以下範例說明如何初始化 Topics API 的 TopicsManager。運作方式類似存取其他隱私權保護 API。
Kotlin
import androidx.privacysandbox.ads.adservices.topics.TopicsManager
// The initialization function will return null if the requested
// functionality is not available on the device.
val topicsManager = TopicsManager.obtain(context)
Java
import androidx.privacysandbox.ads.adservices.topics.TopicsManager;
// The initialization function will return null if the requested
// functionality is not available on the device.
TopicsManager topicsManager = TopicsManager.obtain(context);
如果您在 Extension SDK 中直接使用 AdServices API,請查看包含所需 AdServices API 的 AdServices Extensions 版本。您可以在 API 參考資料中,找到特定 AdServices 服務的版本
API 已導入舉例來說,TopicsManager 類別的 API 參考資料會註明「Ad Services Extensions 4 的新功能」。請運用下列條件式檢查作業,驗證包含 AdServices API 的 SDK 擴充功能。
Kotlin
import android.os.ext.SdkExtensions
if (SDK_INT >= Build.VERSION_CODES.R && // The extensions API is available since R.
SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4) {
// AdServices API is available.
...
}
Java
import android.os.ext.SdkExtensions;
if (SDK_INT >= Build.VERSION_CODES.R && // The extensions API is available since R.
SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4) {
// AdServices API is available.
...
}
前景存取權限制
為提供資訊公開透明,請提供 SDK 執行階段和隱私權保護 API
僅限於具有可見活動的應用程式,或
第 RunningAppProcessInfo 個,共 IMPORTANCE_FOREGROUND 個。