ทำตามวิธีการด้านล่างเพื่อประกาศสิทธิ์เฉพาะ API และกำหนดค่าสิทธิ์เข้าถึง SDK สำหรับทรัพยากรที่จัดการโดย API เป้าหมาย
ประกาศสิทธิ์เฉพาะ AdServices API
การเข้าถึง PPAPI แต่ละรายการต้องมีสิทธิ์ normal
สำหรับบริการโฆษณา ในไฟล์ Manifest ให้ประกาศสิทธิ์การเข้าถึงที่เหมาะสมซึ่งสอดคล้องกับ API ที่จำเป็นในแอปหรือ SDK ของคุณ
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" />
หากโปรเจ็กต์มีทรัพยากร Dependency ในโมดูลหรือ SDK โปรเจ็กต์ดังกล่าวอาจประกาศสิทธิ์บริการโฆษณาที่จำเป็นในไฟล์ Manifest แล้ว โดยค่าเริ่มต้น บิลด์ Gradle จะรวมไฟล์ Manifest ทั้งหมดเข้าด้วยกันเป็นไฟล์ Manifest เดียว ที่มีการจัดแพ็กเกจลงในแอปของคุณ ใช้มุมมองไฟล์ Manifest ที่ผสานรวมเพื่อยืนยันว่ามีการใช้สิทธิ์ที่ถูกต้อง
หากต้องการป้องกันไม่ให้สิทธิ์ใดๆ ผสานรวมเข้ากับแอปผ่านทรัพยากร Dependency เช่น SDK ให้ใส่เครื่องหมายโหนด remove
สำหรับสิทธิ์นั้นๆ ตัวอย่างต่อไปนี้แสดงวิธีป้องกันการรวมสิทธิ์ Topics
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS"
tools:node="remove" />
กำหนดค่าบริการโฆษณาเฉพาะ API
API แต่ละรายการจะมีรายการที่เกี่ยวข้องในการกำหนดค่าบริการโฆษณา เช่นเดียวกับสิทธิ์การเข้าถึง PPAPI การกำหนดค่านี้ช่วยให้คุณควบคุมการเข้าถึงทรัพยากรที่จัดการโดย API ในแอปหรือ SDK ที่ฝังได้อย่างละเอียด
ในไฟล์ Manifest ให้ระบุพร็อพเพอร์ตี้ adservicesConfig
ตามที่แสดงในตัวอย่างต่อไปนี้
<application ...>
...
<property android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/ad_services_config" />
...
</application>
ระบุทรัพยากร XML ของบริการโฆษณาที่อ้างอิงในไฟล์ Manifest เช่น
res/xml/ad_services_config.xml
สำหรับ API การรักษาความเป็นส่วนตัวแต่ละรายการที่เกี่ยวข้องกับแอป (หรือ SDK แบบฝัง) ให้ตั้งค่าแอตทริบิวต์ allowAllToAccess
เป็น true
เพื่อให้สิทธิ์เข้าถึงแก่ผู้โทร
หรือจะใช้แอตทริบิวต์ allowAdPartnersToAccess
เพื่อให้สิทธิ์เข้าถึง API แบบละเอียดสำหรับเทคโนโลยีโฆษณาแต่ละรายการก็ได้ คุณจะต้องระบุรายการรหัสบัญชีการลงทะเบียนนักพัฒนาแอปที่ได้รับจากการลงทะเบียน หากตั้งค่าแอตทริบิวต์ allowAllToAccess
เป็น true
แอตทริบิวต์นี้จะมีลำดับความสำคัญเหนือกว่ารหัสบัญชีการลงทะเบียนที่ระบุในแอตทริบิวต์ allowAdPartnersToAccess
แพลตฟอร์มเทคโนโลยีโฆษณาควรตรวจสอบด้วยว่าไคลเอ็นต์แอปของตนให้สิทธิ์เข้าถึง API การรักษาความเป็นส่วนตัวที่จำเป็นในการกำหนดค่าบริการโฆษณาอย่างเหมาะสม
ตัวอย่างต่อไปนี้แสดงวิธีระบุการเข้าถึงแบบกว้างเพื่ออนุญาตให้รหัสบัญชีการลงทะเบียนเข้าถึง 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>
ตัวอย่างต่อไปนี้แสดงวิธีระบุสิทธิ์เข้าถึงแบบละเอียดสำหรับ 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>
ประกาศทรัพยากร Dependency ของไลบรารี Jetpack
ใช้ไลบรารี Jetpack เวอร์ชัน 1.0.0-beta01 ขึ้นไป ads-adservices เพื่อผสานรวมกับ API การรักษาความเป็นส่วนตัวของ Privacy Sandbox คุณสามารถใช้ไลบรารีนี้เพื่อ ย่อแอปจากรายละเอียดระดับแพลตฟอร์ม และลดความซับซ้อนในการผสานรวมกับ API การรักษาความเป็นส่วนตัว
- เพิ่มที่เก็บ Maven ลงในโปรเจ็กต์
- ประกาศทรัพยากร Dependency ของไลบรารี Jetpack ของ ads-adservices ในไฟล์
build.gradle
สําหรับแอปหรือโมดูล - ใช้ API จากแพ็กเกจ
androidx.privacysandbox.ads.adservices.*
- ไลบรารี ads-adservices Jetpack รองรับโครูทีน Kotlin ในตัว คุณอาจต้องรวมทรัพยากร Dependency ตามวงจรที่เหมาะสมสำหรับโปรเจ็กต์ของคุณเพื่อจัดการขอบเขตโครูทีน
ตรวจสอบความพร้อมใช้งานของเวอร์ชันส่วนขยายบริการโฆษณา
หากคุณใช้ไลบรารี Jetpack สำหรับบริการโฆษณาเพื่อผสานรวมกับ API ที่รักษาความเป็นส่วนตัว ไลบรารีดังกล่าวจะตรวจหาความพร้อมใช้งานของ API ที่ขอในฟังก์ชัน obtain()
ฟังก์ชันจะแสดงผลค่า Null หาก API ที่ขอไม่พร้อมใช้งานในอุปกรณ์ ตัวอย่างต่อไปนี้แสดงวิธีเริ่มต้น TopicsManager
สําหรับ Topics API โดยทำงานคล้ายกับการเข้าถึง 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);
หากคุณใช้ AdServices API ใน SDK ส่วนขยายโดยตรง ให้ตรวจสอบเวอร์ชันของส่วนขยาย AdServices ที่มี AdServices API ที่คุณต้องการใช้
ในข้อมูลอ้างอิง API คุณสามารถระบุเวอร์ชันที่มีการนำ AdServices API นั้นๆ มาใช้ได้ ตัวอย่างเช่น การอ้างอิง API สำหรับคลาส TopicsManager
ระบุว่ามี "เพิ่มในส่วนขยายบริการโฆษณา 4" ใช้การตรวจสอบแบบมีเงื่อนไขต่อไปนี้เพื่อตรวจสอบส่วนขยาย SDK ที่มี AdServices API
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
เท่านั้น