Tổng quan về Topics API for Mobile

Gửi ý kiến phản hồi

Giới thiệu về Topics API

Đối với quảng cáo trên thiết bị di động, nhà quảng cáo muốn phân phát những quảng cáo phù hợp với mối quan tâm của người dùng. Ví dụ: nếu người dùng quan tâm đến thông tin về nấu ăn, có thể họ sẽ thấy quảng cáo về nấu ăn phù hợp hơn là quảng cáo không liên quan đến mối quan tâm của họ.

Quảng cáo theo ngữ cảnh chỉ dựa trên sở thích bắt nguồn từ nội dung hiện tại đang được xem (và quảng cáo trên). Một trong những lợi ích của việc API Chủ đề cho phép các ứng dụng hữu ích cho người dùng nhưng có thể không dễ kiếm tiền thông qua quảng cáo theo ngữ cảnh, để hiển thị quảng cáo có liên quan hơn cho người dùng nhiều hơn những gì họ có thể, giúp mang lại nguồn kinh phí cho các ứng dụng mà người dùng sử dụng.

Topics API dự đoán các tín hiệu thô về mối quan tâm trên thiết bị dựa trên hoạt động dùng ứng dụng của người dùng. Các tín hiệu này (được gọi là chủ đề) sẽ được chia sẻ với nhà quảng cáo, hỗ trợ tín hiệu liên tục và tín hiệu khác của bên thứ nhất mà không yêu cầu theo dõi người dùng cá nhân trên các ứng dụng.

Topics API được thiết kế để hỗ trợ các SDK quảng cáo của bên thứ ba thường hoạt động trên nhiều ứng dụng. Sự hỗ trợ này được thể hiện dưới dạng hiển thị một số mối quan tâm trên nhiều ứng dụng mà các SDK đó thường có quan sát. Các nhà phát triển ứng dụng riêng lẻ không nên tìm hiểu thêm về người dùng của họ.

Khái niệm chính

  • Chủ đề (topic) là chủ đề mà người dùng này quan tâm (mọi người đều có thể đọc được), đồng thời chủ đề này cũng nằm trong cách phân loại chủ đề.
  • Chủ đề sẽ được quan sát qua một phương thức gọi (tức là ứng dụng hoặc SDK bên thứ ba dùng trong ứng dụng) nếu phương thức gọi đó yêu cầu Topics API từ một ứng dụng liên kết với chủ đề này trong suốt 3 khoảng thời gian bắt đầu vừa qua của hệ thống.
  • Thời gian bắt đầu của hệ thống là khoảng thời gian tính toán của chủ đề, chẳng hạn như một tuần.

Cách thức hoạt động

Với đề xuất này, Topics API dự định cung cấp cho phương thức gọi các chủ đề quảng cáo được quan tâm ở dạng thô dựa trên hoạt động dùng ứng dụng của người dùng. Bạn có thể dùng những chủ đề này để bổ sung cho mọi thông tin ngữ cảnh liên quan đến ứng dụng muốn hiển thị quảng cáo và có thể kết hợp chúng để giúp tìm ra quảng cáo phù hợp cho người dùng.

Hãy tham khảo Hướng dẫn dành cho nhà phát triển Topics API để xem các ví dụ về mã minh hoạ cách thiết lập khả năng tìm nạp các chủ đề cho quảng cáo dựa trên mối quan tâm. Lưu ý: API chưa được hoàn tất.

Các chủ đề này được chọn từ một hệ thống phân loại nguồn mở được xác định trước.

Nền tảng này sử dụng mô hình thuật toán phân loại để đưa ra các chủ đề. Việc triển khai Topics API và việc API này sử dụng thuật toán phân loại sẽ là một phần của Dự án nguồn mở Android và được cải thiện theo thời gian.

Để minh hoạ, mã mẫu sau đây sẽ cho thấy cách sử dụng các chủ đề để tìm nạp quảng cáo dựa trên mối quan tâm. Các API được sử dụng ở đây chưa phải là API chính thức.

// Initialize the Topics API.
…
topicsFuture = AdvertisingTopicsClient.getTopics();

// Retrieve Topics and use them in Ad request.
Futures.addCallback(
    topicsFuture,
    new FutureCallback<AdvertisingTopicsInfo>() {
        @Override
        public void onSuccess(@Nullable AdvertisingTopicsInfo topicsInfo) {
            // Sanitize Topics result.
            ...
            // Initialize ad request with Topics obtained.
            AdRequest adRequest = AdRequest.initialize(topicsInfo);
        }

        @Override
        public void onFailure(Throwable t) {
            // Handle error.
            ...
        }
});

Để hiểu rõ hơn cách hoạt động của mô hình thuật toán phân loại, bạn có thể kiểm thử cách các dữ liệu ứng dụng phản ứng trong hệ thống bằng Công cụ phân loại chủ đề của Android.

Truy cập vào Topics API

Các nền tảng công nghệ quảng cáo cần đăng ký để truy cập vào Topics API. Hãy xem bài viết Đăng ký tài khoản Hộp cát về quyền riêng tư để biết thêm thông tin.

Thông tin chi tiết

  • Sau mỗi khoảng thời gian bắt đầu của hệ thống (chẳng hạn như một lần mỗi tuần), 5 chủ đề hàng đầu của người dùng sẽ được tính toán dựa theo thông tin trên thiết bị.

    • Khi Topics API được gọi, nền tảng sẽ kiểm tra xem một chủ đề có được chỉ định cho ứng dụng gọi ra API hay không. Nếu không có chủ đề nào được chỉ định, một chủ đề sẽ được chọn làm chủ đề tiếp theo và chủ đề được chọn đó sẽ được chỉ định cho ứng dụng này trong thời gian bắt đầu còn lại của hệ thống.
      • Với xác suất 95%, một chủ đề sẽ được chọn ngẫu nhiên trong danh sách 5 chủ đề hàng đầu được tính toán cho thời gian bắt đầu của hệ thống.
      • Với xác suất 5%, một chủ đề sẽ được chọn ngẫu nhiên từ cách phân loại.
      • Phương thức gọi có thể chỉ định rằng chúng muốn truy xuất các chủ đề mà không cần sửa đổi trạng thái bằng cách gọi getTopics qua tham số shouldRecordObservation = false. Tức là các chủ đề có thể được trả về, nhưng lệnh gọi sẽ không được đưa vào phép tính toán thời gian bắt đầu của hệ thống hằng tuần, cũng như không cập nhật danh sách các chủ đề được ghi nhận cho phương thức gọi.
    • Lý do mà mỗi ứng dụng nhận được một trong số vài chủ đề là để đảm bảo rằng mỗi ứng dụng sẽ nhận được các chủ đề riêng, khiến ứng dụng khó liên kết chéo đến cùng một người dùng.
      • Ví dụ: có thể ứng dụng A cho người dùng thấy chủ đề T1, nhưng ứng dụng B cho người dùng thấy chủ đề T2. Điều này khiến 2 ứng dụng càng khó xác định rằng thông tin này liên kết với cùng một người dùng.
  • Topics API trả về danh sách gồm tối đa 3 chủ đề, cụ thể là 1 chủ đề cho từng khoảng thời gian trong số 3 khoảng thời gian bắt đầu vừa qua của hệ thống.

    • Bằng cách cung cấp tối đa 3 chủ đề, những ứng dụng ít dùng sẽ có đủ các chủ đề để tìm quảng cáo phù hợp, còn những ứng dụng thường xuyên dùng sẽ nhận được tối đa 1 chủ đề mới mỗi tuần.
    • Thông tin về chủ đề được trả về bao gồm mã nhận dạng chủ đề (int) tương ứng với một mục nhập trong dữ liệu phân loại, một phiên bản phân loại và một phiên bản mô hình thuật toán phân loại.
    • Chỉ những phương thức gọi quan sát thấy người dùng sử dụng một ứng dụng liên kết với chủ đề được đề cập trong 3 khoảng thời gian bắt đầu vừa qua của hệ thống mới có thể nhận được chủ đề này.
    • Mọi chủ đề được trả về cho biết mối quan tâm của người dùng và bạn có thể chọn bất kỳ hoặc mọi chủ đề này để cá nhân hoá quảng cáo trong yêu cầu quảng cáo của mình.
  • Sau khi một chủ đề được chỉ định cho ứng dụng gọi ra Topics API, nền tảng sẽ xác định xem phương thức gọi có thể nhận được chủ đề này hay không.

    • Chỉ những phương thức gọi quan sát thấy người dùng tương tác với một ứng dụng liên kết với chủ đề được đề cập trong vòng 3 khoảng thời gian bắt đầu vừa qua của hệ thống mới có thể nhận được chủ đề này.
    • Nếu trước đây, phương thức gọi không gọi API cho người dùng đó trên ứng dụng về chủ đề đó, thì chủ đề sẽ không có trong danh sách do API trả về.
    • Nếu phương thức gọi không nhận được bất kỳ chủ đề nào trong 3 khoảng thời gian bắt đầu vừa qua của hệ thống, thì Topics API sẽ trả về một danh sách trống.

    Ví dụ: giả sử người dùng đã cài đặt 7 ứng dụng trên thiết bị: A, B, C, D, E, F và G. Giả sử rằng việc phân loại chủ đề cho ứng dụng và quảng cáo SDK công nghệ trong các ứng dụng này như sau:

    Ứng dụng Phân loại chủ đề SDK công nghệ quảng cáo
    A T1, T5 ad-sdk1, ad-sdk2
    B T2 ad-sdk2
    C T3, T6 ad-sdk3, ad-sdk4
    D T1, T4 ad-sdk1
    E T5 ad-sdk4, ad-sdk5
    F T6 ad-sdk2, ad-sdk3, ad-sdk4
    G T7 ad-sdk2
    • Kết thúc tuần 1: Topics API tạo ra 5 chủ đề hàng đầu dành cho người dùng trong khoảng thời gian bắt đầu của hệ thống này.
    Chủ đề hàng đầu Những phương thức gọi có thể tìm hiểu về chủ đề này
    T1 ad-sdk1, ad-sdk2
    T2 ad-sdk2
    T3 ad-sdk3, ad-sdk4
    T4 ad-sdk1
    T5 ad-sdk1, ad-sdk2, ad-sdk4, ad-sdk5
    • Trong tuần 2, nếu một phương thức gọi trong bất kỳ ứng dụng nào gọi API, thì danh sách chủ đề trả về sẽ chỉ bao gồm các chủ đề cho những phương thức gọi có ở cột "Những phương thức gọi có thể tìm hiểu về chủ đề này" cho chủ đề đó đối với ứng dụng đó trong khoảng thời gian bắt đầu đó của hệ thống.
    • Khoảng thời gian nhật ký được dùng khi tính toán chủ đề có sẵn cho từng phương thức gọi là 3 khoảng thời gian bắt đầu của hệ thống (hoặc 3 tuần).
    • Chỉ những chủ đề liên kết với những ứng dụng gọi ra Topics API thông qua quảng cáo SDK được sử dụng. Tức là nếu một ứng dụng không bao gồm bất kỳ SDK quảng cáo nào có gọi Topics API, thì những chủ đề liên kết với ứng dụng đó sẽ không đóng góp vào nhóm chủ đề mà SDK quảng cáo có thể tiếp cận.
    • Ứng dụng cũng có thể tuyên bố không chọn Topics API thông qua các tệp kê khai và thành phần XML mới, để không cho phép SDK quảng cáo dùng API cho ứng dụng đó. Các chủ đề liên kết với ứng dụng không được chọn sẽ không đóng góp vào việc tính toán chủ đề hằng tuần. Tài liệu này sẽ được cập nhật để bổ sung thông tin chi tiết về hoạt động triển khai có liên quan.
  • Nếu không có đủ mức dùng ứng dụng cho nền tảng để dự đoán 5 chủ đề, nền tảng có thể cân nhắc các lựa chọn, chẳng hạn như tạo ngẫu nhiên các chủ đề còn lại.

Cách phân loại

  • Trong đề xuất hiện tại, cách phân loại ban đầu sẽ bao gồm số lượng chủ đề từ vài trăm đến vài nghìn. Đề xuất về cách phân loại ban đầu sẽ được chia sẻ ở nội dung cập nhật trong tương lai của tài liệu này.
  • Cách phân loại này sẽ do con người chọn lọc, do đó, các chủ đề nhạy cảm sẽ không được đưa vào cách phân loại này.
  • Cách phân loại này sẽ được điều chỉnh theo danh mục các quảng cáo có thể hiển thị trên ứng dụng dành cho thiết bị di động trên Android.
  • Hệ thống phân loại được cung cấp công khai và có thể thay đổi. Bạn có thể gửi đề xuất bằng cách sử dụng nút phản hồi ở đầu trang này.

Thuật toán phân loại chủ đề

Các chủ đề được quan tâm bắt nguồn từ mô hình thuật toán phân loại được đào tạo về thông tin được cung cấp công khai về ứng dụng (chẳng hạn như tên ứng dụng, thông tin mô tả và tên gói).

  • Khi mô hình thuật toán phân loại được dùng để tham khảo nhằm tính toán chủ đề trong một khoảng thời gian bắt đầu nhất định của hệ thống, thì tập hợp tín hiệu được sử dụng sẽ giữ nguyên trên thiết bị. Tập hợp các tín hiệu này có thể bao gồm ứng dụng được cài đặt hoặc sử dụng gần đây, sau này có thể được mở rộng để bao gồm các tín hiệu khác.
  • Các mô hình ban đầu sẽ được Google đào tạo, trong đó dữ liệu đào tạo bao gồm cả nhãn do con người chọn lọc cho thông tin cung cấp công khai về ứng dụng. Mô hình này sẽ được cung cấp miễn phí cho các ứng dụng để xem ứng dụng của họ được phân loại vào chủ đề nào.
  • Các mô hình ban đầu sẽ được huấn luyện về thông tin công khai liên quan đến ứng dụng từ một tập hợp giới hạn các cửa hàng ứng dụng, chẳng hạn như Cửa hàng Google Play.
  • Có thể xảy ra trường hợp một ứng dụng ánh xạ đến nhiều chủ đề, không ánh xạ đến chủ đề nào hoặc không được thêm vào nhật ký chủ đề dành cho người dùng. Nếu một ứng dụng ánh xạ đến nhiều chủ đề trong cách phân loại, thì số lượng chủ đề được chọn cho ứng dụng này sẽ giới hạn ở 3 chủ đề hàng đầu.

Quyền kiểm soát của người dùng

  • Thiết kế này nhằm mang lại cho người dùng khả năng xem và xoá các chủ đề liên quan đến hoạt động dùng ứng dụng của họ. Việc triển khai khả năng kiểm soát của người dùng đang diễn ra và sẽ được đưa vào nội dung cập nhật trong tương lai.
  • Nếu người dùng gỡ cài đặt một ứng dụng góp phần vào việc lựa chọn chủ đề được đưa ra trong 3 khoảng thời gian bắt đầu vừa qua của hệ thống, thì chủ đề đó sẽ không bị xoá khỏi danh sách các chủ đề được trả về trong 3 khoảng thời gian bắt đầu vừa qua của hệ thống, nhằm tránh làm lộ thông tin về việc gỡ cài đặt.

Để tạo điều kiện cho quá trình kiểm thử về trải nghiệm người dùng cuối, bạn cũng có thể chạy một ý định trong ứng dụng để xem giao diện người dùng cài đặt cho các Chủ đề tương tự như cách người dùng cuối sẽ nhìn thấy. Bạn có thể xem ví dụ về lệnh gọi bên dưới:

//Button that launches settings UI
private Button mSettingsAppButton;
private static final String RB_SETTING_APP_INTENT = "android.adservices.ui.SETTINGS";


//Does setup for button on screen that will launch settings UI to observe Topics
private void registerLaunchSettingsAppButton() {
    mSettingsAppButton.setOnClickListener(
        new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Context context = getApplicationContext();
                Intent activity2Intent = new Intent(RB_SETTING_APP_INTENT);
                activity2Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(activity2Intent);
            }
        });
}

Đăng ký nền tảng công nghệ quảng cáo

Để truy cập vào Topics API, tất cả các nền tảng công nghệ quảng cáo (bao gồm cả nền tảng của Google) cần phải hoàn tất quy trình đăng ký.

Nhà phát triển ứng dụng có thể quản lý xem nhà phát triển công nghệ quảng cáo nào có thể truy cập vào Topics API bằng cách bao gồm cả mã đăng ký của nhà phát triển công nghệ quảng cáo bên trong tệp kê khai ứng dụng.

Mã hoá các chủ đề được trả về

Các nền tảng công nghệ quảng cáo đã đăng ký gọi đến Topics API cũng phải cung cấp các khoá mã hoá để đảm bảo rằng chỉ có thể đọc các chủ đề được trả về đối với người gọi.

Hộp cát về quyền riêng tư sẽ tìm nạp các khoá này từ điểm cuối do công nghệ quảng cáo cung cấp. T4 tốt nhất là bạn nên cập nhật các khoá thường xuyên, nhưng không được cập nhật muộn hơn hơn 6 tháng một lần.

Hộp cát về quyền riêng tư sẽ yêu cầu công nghệ quảng cáo xác nhận khả năng sử dụng điểm cuối do công nghệ quảng cáo cung cấp trong quá trình đăng ký. Để biết thêm chi tiết về hành động mà các công nghệ quảng cáo hiện tại và mới đăng ký cần thực hiện, hãy xem phần Đăng ký Hướng dẫn cho nhà phát triển.

Thông tin chi tiết về quá trình mã hoá

Với sự giới thiệu của mã hoá, lệnh gọi đến 'GetTopics()' giờ đây sẽ tạo một phản hồi chứa danh sách "Encrypted hoá" (Chủ đề được mã hoá) . Khi giải mã những kết quả này, dẫn đến một đối tượng có cùng định dạng JSON của đối tượng Topics trước đó.

Topics API hỗ trợ triển khai một lần của HPKE (Khoá công khai kết hợp) Mã hoá). Chúng tôi dự kiến phương thức gọi đã đăng ký lưu trữ khoá công khai 32 bit trên điểm cuối URL mã hoá công khai được cung cấp trong quá trình đăng ký. Những khoá này là phải được mã hoá Base64.

Đối tượng EncryptedTopic có 3 trường. Danh sách các chủ đề được trả về có thể là có được bằng cách sử dụng khoá riêng tư tương ứng cho khoá công khai.

Đối với mục đích phát triển, bạn có thể kiểm thử việc mã hoá Topics API bằng cách tắt việc kiểm tra đăng ký. Điều này sẽ buộc API sử dụng khoá công khai kiểm thử cho mã hoá phản hồi của bạn. Bạn có thể giải mã các chủ đề đã mã hoá bằng khoá riêng tư tương ứng.