Nhận mã nhận dạng cho quảng cáo mà người dùng có thể đặt lại Một phần của Android Jetpack.
Để bảo vệ quyền riêng tư của người dùng, phương pháp hay nhất là áp dụng cho mọi ứng dụng Android giá trị nhận dạng mà người dùng có thể đặt lại. Một trong những giá trị nhận dạng đó là mã nhận dạng cho quảng cáo, xác định duy nhất một người dùng cụ thể cho các trường hợp sử dụng quảng cáo, chẳng hạn như quảng cáo cá nhân hoá.
Để hỗ trợ giải pháp theo dõi quảng cáo được chuẩn hoá trên các thiết bị chạy ứng dụng, bạn có thể sử dụng Thư viện mã nhận dạng cho quảng cáo. Thư viện này, được cung cấp trên các thiết bị chạy Android 4.0 (API cấp 14) hoặc cao hơn, xác định giao diện để tương tác với các nhà cung cấp quảng cáo cấp hệ thống. Giao diện này cho phép ứng dụng của bạn nhận được các giá trị mã nhận dạng cho quảng cáo nhất quán.
Nhà cung cấp quảng cáo đi kèm với thư viện Mã nhận dạng cho quảng cáo cũng xác định ý định chuẩn để mở màn hình cài đặt mà nhà cung cấp quảng cáo triển khai. Màn hình cài đặt này cho phép người dùng đặt lại mã nhận dạng cho quảng cáo và chọn không sử dụng về cá nhân hoá quảng cáo.
Hướng dẫn này giải thích cách sử dụng mô-đun ứng dụng khách của thư viện mã nhận dạng cho quảng cáo để có được mã nhận dạng cho quảng cáo nhất quán trên cơ sở từng người dùng thiết bị. Hướng dẫn này sau đó trình bày thông tin tổng quan về cấu trúc của thư viện.
Định cấu hình ứng dụng
Bằng cách tương tác với mô-đun ứng dụng của thư viện Mã nhận dạng cho quảng cáo, ứng dụng của bạn có thể truy xuất một mã nhận dạng cho quảng cáo nhất quán đại diện cho người dùng đang tương tác với ứng dụng.
Mã nhận dạng cho quảng cáo được biểu thị bằng phiên bản 3 của mã nhận dạng duy nhất trên toàn cầu mã nhận dạng (UUID) hoặc một định dạng 128 bit tương đương:
38400000-8cf0-11bd-b23e-10b96e40000d
Thư viện mã nhận dạng cho quảng cáo sẽ chuẩn hoá giá trị trả về (nếu cần) để cung cấp Mã nhận dạng bằng định dạng này.
Để truy xuất mã nhận dạng cho quảng cáo mà người dùng có thể đặt lại cho ứng dụng, hãy hoàn tất các bước sau:
Kiểm tra xem có nhà cung cấp quảng cáo nào không bằng cách gọi
AdvertisingIdClient.isAdvertisingIdProviderAvailable()
. Nếu phương thức này trả vềfalse
thân mến, ứng dụng của bạn nên sử dụng một phương thức khác để thực hiện mọi hoạt động theo dõi quảng cáo bắt buộc các trường hợp sử dụng.Lấy thông tin chi tiết về mã nhận dạng quảng cáo, bao gồm cả mã nhận dạng cho quảng cáo, bằng cách gọi
AdvertisingIdClient.getAdvertisingIdInfo()
. Thư viện Mã nhận dạng cho quảng cáo thực thi phương thức này trên luồng worker và sử dụng thời gian chờ kết nối là 10 giây.
Đoạn mã sau đây minh hoạ cách truy xuất mã nhận dạng cho quảng cáo cùng với các thông tin khác từ nhà cung cấp quảng cáo:
app/build.gradle
Groovy
dependencies { implementation 'androidx.ads:ads-identifier:1.0.0-alpha01' // Used for the calls to addCallback() in the snippets on this page. implementation 'com.google.guava:guava:28.0-android' }
Kotlin
dependencies { implementation("androidx.ads:ads-identifier:1.0.0-alpha01") // Used for the calls to addCallback() in the snippets on this page. implementation("com.google.guava:guava:28.0-android") }
MyAdIdClient
Kotlin
// Used for the call to addCallback() within this snippet. import com.google.common.util.concurrent.Futures.addCallback private fun determineAdvertisingInfo() { if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) { val advertisingIdInfoListenableFuture = AdvertisingIdClient.getAdvertisingIdInfo(applicationContext) addCallback(advertisingIdInfoListenableFuture, object : FutureCallback<AdvertisingIdInfo> { override fun onSuccess(adInfo: AdvertisingIdInfo?) { val id: String = adInfo?.id val providerPackageName: String = adInfo?.providerPackageName val isLimitTrackingEnabled: Boolean = adInfo?.isLimitTrackingEnabled } // Any exceptions thrown by getAdvertisingIdInfo() // cause this method to be called. override fun onFailure(t: Throwable) { Log.e("MY_APP_TAG", "Failed to connect to Advertising ID provider.") // Try to connect to the Advertising ID provider again or fall // back to an ad solution that doesn't require using the // Advertising ID library. } }, Executors.newSingleThreadExecutor()) } else { // The Advertising ID client library is unavailable. Use a different // library to perform any required ad use cases. } }
Java
// Used for the call to addCallback() within this snippet. import com.google.common.util.concurrent.Futures; private void determineAdvertisingInfo() { if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) { ListenableFuture<AdvertisingIdInfo> advertisingIdInfoListenableFuture = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext()); Futures.addCallback(advertisingIdInfoListenableFuture, new FutureCallback<AdvertisingIdInfo>() { @Override public void onSuccess(AdvertisingIdInfo adInfo) { String id = adInfo.getId(); String providerPackageName = adInfo.getProviderPackageName(); boolean isLimitTrackingEnabled = adInfo.isLimitTrackingEnabled(); // Any exceptions thrown by getAdvertisingIdInfo() // cause this method to be called. @Override public void onFailure(Throwable throwable) { Log.e("MY_APP_TAG", "Failed to connect to Advertising ID provider."); // Try to connect to the Advertising ID provider again // or fall back to an ad solution that doesn't require // using the Advertising ID library. } }); } else { // The Advertising ID client library is unavailable. Use a different // library to perform any required ad use cases. } }
Cấu trúc thư viện mã nhận dạng cho quảng cáo
Hình 1 mô tả cấu trúc của thư viện Mã nhận dạng cho quảng cáo. Thư viện này bao gồm các mô-đun sau:
- Mô-đun ứng dụng, là một lớp mỏng có trong các ứng dụng.
- Mô-đun nhà cung cấp mà nhà sản xuất thiết bị cung cấp. Việc triển khai mô-đun này phải xác định giao diện người dùng cài đặt để cho phép người dùng đặt lại mã nhận dạng cho quảng cáo và bật/tắt lựa chọn ưu tiên về việc theo dõi quảng cáo.
Mô-đun máy khách giao tiếp với mô-đun nhà cung cấp để truy xuất quảng cáo Mã nhận dạng và lựa chọn ưu tiên của người dùng liên quan đến việc theo dõi quảng cáo.
Cách thư viện xử lý nhiều trình cung cấp
Một thiết bị có thể hỗ trợ nhiều nhà cung cấp quảng cáo cấp hệ thống tại . Nếu phát hiện trường hợp này, thư viện Mã nhận dạng cho quảng cáo sẽ đảm bảo rằng ứng dụng của bạn luôn truy xuất thông tin từ cùng một nhà cung cấp, giả sử nhà cung cấp đó vẫn hoạt động. Quá trình này giúp mã nhận dạng cho quảng cáo luôn nhất quán.
Nếu nhóm nhà cung cấp quảng cáo có sẵn thay đổi theo thời gian và ứng dụng của bạn tương tác với một nhà cung cấp giá trị nhận dạng quảng cáo khác, thì tất cả các ứng dụng khách khác đều bắt đầu thông qua nhà cung cấp mới đó. Ứng dụng của bạn thể hiện cùng một hành vi sẽ xảy ra nếu người dùng yêu cầu đặt lại mã nhận dạng cho quảng cáo của họ.
Thư viện nhà cung cấp mã nhận dạng cho quảng cáo sử dụng thứ tự xác định sau đây để xếp hạng các nhà cung cấp:
- Các nhà cung cấp đã yêu cầu quyền
androidx.ads.identifier.provider.HIGH_PRIORITY
. - Các trình cung cấp đã được cài đặt trên thiết bị trong thời gian dài nhất.
- Nhà cung cấp xuất hiện đầu tiên theo thứ tự bảng chữ cái.