AdSelectionManager

public class AdSelectionManager
extends Object

java.lang.Object
   ↳ android.adservices.adselection.AdSelectionManager


AdSelection Manager cung cấp các API cho ứng dụng và SDK quảng cáo để chạy quy trình lựa chọn quảng cáo cũng như báo cáo số lần hiển thị.

Tóm tắt

Phương thức công khai

static AdSelectionManager get(Context context)

Phương thức ban đầu để tạo một thực thể của AdSelectionManager.

void getAdSelectionData(GetAdSelectionDataRequest request, Executor executor, OutcomeReceiver<GetAdSelectionDataOutcomeException> receiver)

Thu thập dữ liệu đối tượng tuỳ chỉnh từ thiết bị.

TestAdSelectionManager getTestAdSelectionManager()
void persistAdSelectionResult(PersistAdSelectionResultRequest request, Executor executor, OutcomeReceiver<AdSelectionOutcomeException> receiver)

Duy trì kết quả lựa chọn quảng cáo từ phía máy chủ.

void reportEvent(ReportEventRequest request, Executor executor, OutcomeReceiver<ObjectException> receiver)

Thông báo cho dịch vụ rằng có một sự kiện quảng cáo mới cần báo cáo cho quảng cáo do ad-selection chạy do adSelectionId xác định.

void reportImpression(ReportImpressionRequest request, Executor executor, OutcomeReceiver<ObjectException> receiver)

Thông báo cho dịch vụ rằng có một lượt hiển thị mới cần báo cáo cho quảng cáo do ad-selection chạy do adSelectionId xác định.

void selectAds(AdSelectionFromOutcomesConfig adSelectionFromOutcomesConfig, Executor executor, OutcomeReceiver<AdSelectionOutcomeException> receiver)

Chọn một quảng cáo từ kết quả của các lựa chọn quảng cáo đã chạy trước đây.

void selectAds(AdSelectionConfig adSelectionConfig, Executor executor, OutcomeReceiver<AdSelectionOutcomeException> receiver)

Chạy quy trình lựa chọn quảng cáo trên thiết bị để chọn quảng cáo tái tiếp thị cho phương thức gọi .

void updateAdCounterHistogram(UpdateAdCounterHistogramRequest updateAdCounterHistogramRequest, Executor executor, OutcomeReceiver<ObjectException> outcomeReceiver)

Cập nhật biểu đồ bộ đếm cho một quảng cáo đã được chọn trước đó bằng lệnh gọi đến selectAds(android.adservices.adselection.AdSelectionConfig, java.util.concurrent.Executor, android.os.OutcomeReceiver).

Các phương thức kế thừa

Phương thức công khai

get

Đã thêm vào API cấp 34
Cũng có trong Tiện ích Dịch vụ quảng cáo 6
public static AdSelectionManager get (Context context)

Phương thức ban đầu để tạo một thực thể của AdSelectionManager.

Tham số
context Context: Context để sử dụng Giá trị này không được là null.

Giá trị trả về
AdSelectionManager Một thực thể AdSelectionManager Giá trị này không được là null.

getAdSelectionData

public void getAdSelectionData (GetAdSelectionDataRequest request, 
                Executor executor, 
                OutcomeReceiver<GetAdSelectionDataOutcomeException> receiver)

Thu thập dữ liệu đối tượng tuỳ chỉnh từ thiết bị. Trả về blob đã nén và mã hóa để gửi đến máy chủ đấu giá để lựa chọn quảng cáo. Để biết thêm chi tiết, vui lòng truy cập vào phần Đặt giá thầu và Công cụ giải thích về dịch vụ đấu giá.

Quảng cáo đối tượng tuỳ chỉnh phải có ad_render_id để đủ điều kiện được thu thập.

Vui lòng xem AdSelectionManager#persistAdSelectionResult để biết cách xử lý kết quả của lựa chọn quảng cáo chạy ở phía máy chủ với blob do API này tạo.

Đầu ra được truyền bởi trình thu nhận, sẽ trả về GetAdSelectionDataOutcome để chạy thành công hoặc Exception bao gồm loại trường hợp ngoại lệ được gửi và thông báo lỗi tương ứng.

Nếu IllegalArgumentException được gửi, thì đó là do đối số đầu vào không hợp lệ API nhận được để chạy lựa chọn quảng cáo.

Nếu IllegalStateException nhận được thông báo lỗi "Không thành công của AdSelection dịch vụ.", vấn đề này là do lỗi nội bộ của dịch vụ lựa chọn quảng cáo.

Nếu TimeoutException được gửi, thì lỗi này sẽ xảy ra khi hết thời gian chờ trong quá trình đặt giá thầu, tính điểm hoặc lựa chọn tổng thể để tìm Quảng cáo giành chiến thắng.

Nếu LimitExceededException được gửi, thì lỗi này sẽ xảy ra khi gói gọi vượt quá giới hạn tốc độ cho phép và được điều tiết.

Nếu SecurityException được gửi, thì lỗi này sẽ xảy ra khi phương thức gọi không được uỷ quyền hoặc chưa yêu cầu quyền.
Cần có AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE

Tham số
request GetAdSelectionDataRequest: Giá trị này không được là null.

executor Executor: Giá trị này không được là null. Các sự kiện gọi lại và trình nghe được gửi thông qua Executor, giúp bạn dễ dàng kiểm soát luồng nào đã sử dụng. Để gửi sự kiện thông qua chuỗi chính của ứng dụng, bạn có thể sử dụng Context.getMainExecutor(). Nếu không, hãy cung cấp Executor để gửi đến một luồng phù hợp.

receiver OutcomeReceiver: Giá trị này không được là null.

getTestAdSelectionManager

Đã thêm vào API cấp 34
Cũng có trong Tiện ích Dịch vụ quảng cáo 4
public TestAdSelectionManager getTestAdSelectionManager ()

Giá trị trả về
TestAdSelectionManager Giá trị này không được là null.

kiên trìAdSelectionResult

public void persistAdSelectionResult (PersistAdSelectionResultRequest request, 
                Executor executor, 
                OutcomeReceiver<AdSelectionOutcomeException> receiver)

Duy trì kết quả lựa chọn quảng cáo từ phía máy chủ. Để biết thêm chi tiết, vui lòng truy cập vào phần Đặt giá thầu và Công cụ giải thích về dịch vụ đấu giá

Vui lòng xem AdSelectionManager#getAdSelectionData để biết cách tạo blob đã mã hoá để chạy lựa chọn quảng cáo ở phía máy chủ.

Đầu ra được truyền bởi trình nhận và sẽ trả về một AdSelectionOutcome để chạy thành công hoặc một Exception bao gồm loại ngoại lệ được gửi và thông báo lỗi tương ứng.

Nếu IllegalArgumentException được gửi, thì đó là do đối số đầu vào không hợp lệ API nhận được để chạy lựa chọn quảng cáo.

Nếu IllegalStateException nhận được thông báo lỗi "Không thành công của AdSelection dịch vụ.", vấn đề này là do lỗi nội bộ của dịch vụ lựa chọn quảng cáo.

Nếu TimeoutException được gửi, thì lỗi này sẽ xảy ra khi hết thời gian chờ trong quá trình đặt giá thầu, tính điểm hoặc lựa chọn tổng thể để tìm Quảng cáo giành chiến thắng.

Nếu LimitExceededException được gửi, thì lỗi này sẽ xảy ra khi gói gọi vượt quá giới hạn tốc độ cho phép và được điều tiết.

Nếu SecurityException được gửi, thì lỗi này sẽ xảy ra khi phương thức gọi không được uỷ quyền hoặc chưa yêu cầu quyền.
Cần có AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE

Tham số
request PersistAdSelectionResultRequest: Giá trị này không được là null.

executor Executor: Giá trị này không được là null. Các sự kiện gọi lại và trình nghe được gửi thông qua Executor, giúp bạn dễ dàng kiểm soát luồng nào đã sử dụng. Để gửi sự kiện thông qua chuỗi chính của ứng dụng, bạn có thể sử dụng Context.getMainExecutor(). Nếu không, hãy cung cấp Executor để gửi đến một luồng phù hợp.

receiver OutcomeReceiver: Giá trị này không được là null.

reportEvent

public void reportEvent (ReportEventRequest request, 
                Executor executor, 
                OutcomeReceiver<ObjectException> receiver)

Thông báo cho dịch vụ rằng có một sự kiện quảng cáo mới cần báo cáo cho quảng cáo do ad-selection chạy do adSelectionId xác định. Sự kiện quảng cáo là bất kỳ lần xuất hiện nào xảy ra với quảng cáo liên kết với adSelectionId đã cho. Google không đảm bảo về thời điểm sự kiện quảng cáo được báo cáo. Quá trình báo cáo sự kiện có thể bị chậm trễ và quá trình báo cáo có thể theo lô.

Khi sử dụng ReportEventRequest#getKey(), dịch vụ sẽ tìm nạp reportingUri đã được đăng ký tại registerAdBeacon. Xem tài liệu của reportImpression(ReportImpressionRequest, Executor, OutcomeReceiver) để biết thêm thông tin về registerAdBeacon. Sau đó, dịch vụ sẽ đính kèm ReportEventRequest#getData() vào nội dung yêu cầu của yêu cầu POST và gửi yêu cầu. Phần nội dung của yêu cầu POST sẽ có content-typetext/plain và dữ liệu sẽ được truyền trong charset=UTF-8.

Đầu ra được truyền bởi trình nhận, sẽ trả về một Object trống cho một chạy thành công hoặc một Exception bao gồm loại ngoại lệ được gửi và loại thông báo lỗi tương ứng.

Nếu IllegalArgumentException được gửi, thì đó là do đối số đầu vào không hợp lệ API nhận được để báo cáo sự kiện quảng cáo.

Nếu IllegalStateException nhận được thông báo lỗi "Không thành công của AdSelection dịch vụ.", vấn đề này là do lỗi nội bộ của dịch vụ lựa chọn quảng cáo.

Nếu LimitExceededException được gửi, thì lỗi này sẽ xảy ra khi gói gọi vượt quá giới hạn tốc độ cho phép và được điều tiết.

Nếu SecurityException được gửi, thì lỗi này sẽ xảy ra khi phương thức gọi không được uỷ quyền hoặc chưa yêu cầu quyền.

Hệ thống sẽ báo cáo sự kiện tối đa một lần là nỗ lực tối đa.
Cần có AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE

Tham số
request ReportEventRequest: Giá trị này không được là null.

executor Executor: Giá trị này không được là null.

receiver OutcomeReceiver: Giá trị này không được là null.

lượt hiển thị báo cáo

Đã thêm vào API cấp 34
Cũng có trong Tiện ích Dịch vụ quảng cáo 4
public void reportImpression (ReportImpressionRequest request, 
                Executor executor, 
                OutcomeReceiver<ObjectException> receiver)

Thông báo cho dịch vụ rằng có một lượt hiển thị mới cần báo cáo cho quảng cáo do ad-selection chạy do adSelectionId xác định. Không thể đảm bảo về thời điểm sẽ được báo cáo. Việc báo cáo lượt hiển thị có thể bị chậm trễ và quá trình báo cáo có thể theo lô.

Để tính URL báo cáo của người bán giành chiến thắng, dịch vụ sẽ tìm nạp JavaScript của người bán logic từ AdSelectionConfig#getDecisionLogicUri() được tìm thấy tại ReportImpressionRequest.getAdSelectionConfig(). Sau đó, dịch vụ thực thi một trong những các hàm được tìm thấy trong JS của người bán có tên là reportResult. Các hàm này cung cấp các tín hiệu trên thiết bị như cũng như ReportImpressionRequest#getAdSelectionConfig() làm tham số đầu vào.

Định nghĩa hàm của reportResult là:

function reportResult(ad_selection_config, render_url, bid, contextual_signals) { return { 'status': status, 'results': {'signals_for_buyer': signals_for_buyer, 'reporting_url': reporting_url } }; }

Để tính toán URL báo cáo của người mua giành chiến thắng, dịch vụ này tìm nạp URL của người mua giành chiến thắng Logic JavaScript được tìm nạp qua CustomAudience.getBiddingLogicUri() của người mua. Sau đó, dịch vụ thực thi một trong các hàm có trong JS của người mua có tên là reportWin, cung cấp tín hiệu trên thiết bị, signals_for_buyer do reportResult tính toán và chỉ số cụ thể từ ReportImpressionRequest#getAdSelectionConfig() làm tham số đầu vào.

Định nghĩa hàm của reportWin là:

function reportWin(ad_selection_signals, per_buyer_signals, signals_for_buyer, contextual_signals, custom_audience_reporting_signals) { return {'status': 0, 'results': {'reporting_url': reporting_url } }; }

Ngoài ra, người mua và người bán có tuỳ chọn đăng ký để nhận báo cáo về sự kiện quảng cáo. Để làm vậy, chúng có thể gọi hàm registerAdBeacon do nền tảng cung cấp bên trong reportWinreportResult cho người mua và người bán.

Định nghĩa hàm của registerBeacon là:

function registerAdBeacon(beacons), trong đó beacons là ký tự của chuỗi cặp chuỗi

Đối với mỗi sự kiện quảng cáo mà người mua/người bán quan tâm đến báo cáo, họ sẽ thêm cặp event_key: event_reporting_uri vào lệnh chính beacons, trong đó event_key là giá trị nhận dạng cho sự kiện cụ thể đó. event_key này phải khớp với ReportEventRequest#getKey() khi SDK gọi reportEvent(ReportEventRequest, Executor, OutcomeReceiver). Ngoài ra, mỗi event_reporting_uri phải được phân tích cú pháp chính xác thành Uri. Chiến dịch này sẽ là Uri được báo cáo khi SDK gọi reportEvent(ReportEventRequest, Executor, OutcomeReceiver).

Khi người mua/người bán đã thêm tất cả các cặp mà họ muốn nhận sự kiện, họ có thể gọi registerAdBeacon(beacons), trong đó beacons là tên của lệnh chính đã thêm cặp vào.

registerAdBeacon sẽ gửi TypeError trong các trường hợp sau:

  1. registerAdBeacon được gọi nhiều lần. Nếu lỗi này được phát hiện trong reportWin/reportResult, thì tập hợp ghép nối ban đầu sẽ được đăng ký
  2. registerAdBeacon không có đúng 1 đối số chính tả.
  3. Nội dung của đối số chính tả 1 không phải là toàn bộ các cặp String: String.

Đầu ra được receiver truyền vào và trả về một Object trống để chạy thành công hoặc Exception bao gồm loại ngoại lệ được gửi và thông báo lỗi tương ứng.

Nếu IllegalArgumentException được gửi, thì đó là do đối số đầu vào không hợp lệ API nhận được để báo cáo lượt hiển thị.

Nếu IllegalStateException nhận được thông báo lỗi "Không thành công của AdSelection dịch vụ.", vấn đề này là do lỗi nội bộ của dịch vụ lựa chọn quảng cáo.

Nếu LimitExceededException được gửi, thì lỗi này sẽ xảy ra khi gói gọi vượt quá giới hạn tốc độ cho phép và được điều tiết.

Nếu SecurityException được gửi, thì lỗi này sẽ xảy ra khi phương thức gọi không được uỷ quyền hoặc chưa yêu cầu quyền.

Lượt hiển thị sẽ được báo cáo tối đa một lần là nỗ lực tối đa.
Cần có AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE

Tham số
request ReportImpressionRequest: Giá trị này không được là null.

executor Executor: Giá trị này không được là null.

receiver OutcomeReceiver: Giá trị này không được là null.

ChọnQuảng cáo

public void selectAds (AdSelectionFromOutcomesConfig adSelectionFromOutcomesConfig, 
                Executor executor, 
                OutcomeReceiver<AdSelectionOutcomeException> receiver)

Chọn một quảng cáo từ kết quả của các lựa chọn quảng cáo đã chạy trước đây.

Dữ liệu đầu vào adSelectionFromOutcomesConfig do SDK quảng cáo cung cấp và đối tượng AdSelectionFromOutcomesConfig được chuyển thông qua lệnh gọi Binder. Vì lý do này, tổng kích thước của các đối tượng này bị ràng buộc với các giới hạn IPC của Android. Không thể chuyển AdSelectionFromOutcomesConfig sẽ gửi một TransactionTooLargeException.

Đầu ra được truyền bởi trình nhận và sẽ trả về một AdSelectionOutcome để chạy thành công hoặc một Exception bao gồm loại ngoại lệ được gửi và thông báo lỗi tương ứng.

Dữ liệu đầu vào adSelectionFromOutcomesConfig chứa:

  • Seller phải là AdTechIdentifier đã đăng ký. Nếu không, IllegalStateException sẽ được gửi.
  • List of ad selection ids phải tồn tại và xuất phát từ các lệnh gọi selectAds(AdSelectionConfig, Executor, OutcomeReceiver) đến từ cùng một ứng dụng. Nếu không, IllegalArgumentException để xác thực dữ liệu đầu vào sẽ tăng trang thông tin vi phạm các mã lựa chọn.
  • Selection logic URI có thể tuân theo HTTPS hoặc Giao thức tạo sẵn Lựa chọn quảng cáo giản đồ.

    Nếu URI tuân theo giản đồ HTTPS, thì máy chủ lưu trữ phải khớp với seller. Nếu không, hệ thống sẽ gửi IllegalArgumentException.

    URI dựng sẵn là một cách thay thế logic dựng sẵn chung cho yêu cầu JavaScript cho selectOutcome. URI dựng sẵn cho điểm cuối này sẽ tuân theo;

    • ad-selection-prebuilt://ad-selection-from-outcomes/<name>?<script-generation-parameters>

    Nếu bạn truyền một URI dựng sẵn không được hỗ trợ hoặc tính năng URI dựng sẵn bị tắt thì IllegalArgumentException sẽ được gửi.

    Hãy xem AdSelectionFromOutcomesConfig.Builder#setSelectionLogicUri để biết các địa chỉ được hỗ trợ <name> và bắt buộc phải có <script-generation-parameters>.

Nếu IllegalArgumentException được gửi, thì đó là do đối số đầu vào không hợp lệ API nhận được để chạy lựa chọn quảng cáo.

Nếu IllegalStateException nhận được thông báo lỗi "Không thành công của AdSelection dịch vụ.", vấn đề này là do lỗi nội bộ của dịch vụ lựa chọn quảng cáo.

Nếu TimeoutException được gửi, thì lỗi này sẽ xảy ra khi hết thời gian chờ trong quá trình đặt giá thầu, tính điểm hoặc lựa chọn tổng thể để tìm Quảng cáo giành chiến thắng.

Nếu LimitExceededException được gửi, thì lỗi này sẽ xảy ra khi gói gọi vượt quá giới hạn tốc độ cho phép và được điều tiết.

Nếu SecurityException được gửi, thì lỗi này sẽ xảy ra khi phương thức gọi không được uỷ quyền hoặc chưa yêu cầu quyền.
Cần có AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE

Tham số
adSelectionFromOutcomesConfig AdSelectionFromOutcomesConfig: Giá trị này không được là null.

executor Executor: Giá trị này không được là null. Các sự kiện gọi lại và trình nghe được gửi thông qua Executor, giúp bạn dễ dàng kiểm soát luồng nào đã sử dụng. Để gửi sự kiện thông qua chuỗi chính của ứng dụng, bạn có thể sử dụng Context.getMainExecutor(). Nếu không, hãy cung cấp Executor để gửi đến một luồng phù hợp.

receiver OutcomeReceiver: Giá trị này không được là null.

ChọnQuảng cáo

Đã thêm vào API cấp 34
public void selectAds (AdSelectionConfig adSelectionConfig, 
                Executor executor, 
                OutcomeReceiver<AdSelectionOutcomeException> receiver)

Chạy quy trình lựa chọn quảng cáo trên thiết bị để chọn quảng cáo tái tiếp thị cho phương thức gọi .

Dữ liệu đầu vào adSelectionConfig do SDK quảng cáo cung cấp và đối tượng AdSelectionConfig được chuyển thông qua lệnh gọi Binder. Vì lý do này, tổng kích thước trong số các đối tượng này bị ràng buộc với các giới hạn IPC của Android. Nếu không chuyển được AdSelectionConfig, bạn sẽ gửi một TransactionTooLargeException.

Dữ liệu đầu vào adSelectionConfig chứa Decision Logic Uri có thể theo sau giản đồ HTTPS hoặc giản đồ Lựa chọn quảng cáo được tạo sẵn.

Nếu URI tuân theo giản đồ HTTPS, thì máy chủ lưu trữ phải khớp với seller. Nếu không, Hệ thống sẽ gửi IllegalArgumentException.

URI dựng sẵn là một cách thay thế logic dựng sẵn chung cho yêu cầu JavaScript cho scoreAds. URI dựng sẵn cho điểm cuối này sẽ tuân theo;

  • ad-selection-prebuilt://ad-selection/<name>?<script-generation-parameters>

Nếu bạn truyền một URI dựng sẵn không được hỗ trợ hoặc tính năng URI dựng sẵn bị tắt thì IllegalArgumentException sẽ được gửi.

Hãy xem AdSelectionConfig.Builder#setDecisionLogicUri để biết <name> được hỗ trợ và bắt buộc phải có <script-generation-parameters>.

Đầu ra được truyền bởi trình nhận và sẽ trả về một AdSelectionOutcome để chạy thành công hoặc một Exception bao gồm loại ngoại lệ được gửi và thông báo lỗi tương ứng.

Nếu IllegalArgumentException được gửi, thì đó là do đối số đầu vào không hợp lệ API nhận được để chạy lựa chọn quảng cáo.

Nếu IllegalStateException nhận được thông báo lỗi "Không thành công của AdSelection dịch vụ.", vấn đề này là do lỗi nội bộ của dịch vụ lựa chọn quảng cáo.

Nếu TimeoutException được gửi, thì lỗi này sẽ xảy ra khi hết thời gian chờ trong quá trình đặt giá thầu, tính điểm hoặc lựa chọn tổng thể để tìm Quảng cáo giành chiến thắng.

Nếu LimitExceededException được gửi, thì lỗi này sẽ xảy ra khi gói gọi vượt quá giới hạn tốc độ cho phép và được điều tiết.

Nếu SecurityException được gửi, thì lỗi này sẽ xảy ra khi phương thức gọi không được uỷ quyền hoặc chưa yêu cầu quyền.
Cần có AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE

Tham số
adSelectionConfig AdSelectionConfig: Giá trị này không được là null.

executor Executor: Giá trị này không được là null. Các sự kiện gọi lại và trình nghe được gửi thông qua Executor, giúp bạn dễ dàng kiểm soát luồng nào đã sử dụng. Để gửi sự kiện thông qua chuỗi chính của ứng dụng, bạn có thể sử dụng Context.getMainExecutor(). Nếu không, hãy cung cấp Executor để gửi đến một luồng phù hợp.

receiver OutcomeReceiver: Giá trị này không được là null.

updateAdCounterHistogram

public void updateAdCounterHistogram (UpdateAdCounterHistogramRequest updateAdCounterHistogramRequest, 
                Executor executor, 
                OutcomeReceiver<ObjectException> outcomeReceiver)

Cập nhật biểu đồ bộ đếm cho một quảng cáo đã được chọn trước đó bằng lệnh gọi đến selectAds(android.adservices.adselection.AdSelectionConfig, java.util.concurrent.Executor, android.os.OutcomeReceiver).

Biểu đồ bộ đếm được dùng trong quá trình lựa chọn quảng cáo để thông báo cho tính năng lọc giới hạn tần suất quảng cáo đề xuất, trong đó quảng cáo có giới hạn tần suất đáp ứng hoặc vượt quá sẽ bị xóa khỏi đặt giá thầu trong quá trình lựa chọn quảng cáo.

Bạn chỉ có thể cập nhật biểu đồ bộ đếm cho các quảng cáo được chỉ định bởi adSelectionId nhất định được trả về bằng một lệnh gọi lựa chọn quảng cáo FLEDGE gần đây từ cùng một ứng dụng gọi.

SecurityException được trả về qua outcomeReceiver nếu:

  1. ứng dụng chưa khai báo đúng quyền trong tệp kê khai, hoặc
  2. ứng dụng hoặc pháp nhân do callerAdTechIdentifier xác định là không được uỷ quyền để sử dụng API.
IllegalStateException được trả về qua outcomeReceiver nếu lệnh gọi có không đến từ một ứng dụng có hoạt động trên nền trước.

LimitExceededException được trả về qua outcomeReceiver nếu lệnh gọi vượt quá hạn chế điều tiết API của ứng dụng gọi.

Trong tất cả các trường hợp lỗi khác, outcomeReceiver sẽ trả về một Object trống. Xin lưu ý rằng để bảo vệ quyền riêng tư của người dùng, lỗi nội bộ sẽ không được gửi lại thông qua ngoại lệ.
Cần có AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE

Tham số
updateAdCounterHistogramRequest UpdateAdCounterHistogramRequest: Giá trị này không được là null.

executor Executor: Giá trị này không được là null. Các sự kiện gọi lại và trình nghe được gửi thông qua Executor, giúp bạn dễ dàng kiểm soát luồng nào đã sử dụng. Để gửi sự kiện thông qua chuỗi chính của ứng dụng, bạn có thể sử dụng Context.getMainExecutor(). Nếu không, hãy cung cấp Executor để gửi đến một luồng phù hợp.

outcomeReceiver OutcomeReceiver: Giá trị này không được là null.