Hỗ trợ phiên đấu giá cho nhiều người bán bằng chức năng Dàn xếp của Protected Audience

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

Các nền tảng quảng cáo bên bán thường đa dạng hoá nguồn nhu cầu quảng cáo để tối ưu hoá doanh thu từ quảng cáo. Với chức năng dàn xếp quảng cáo, một mạng quảng cáo hoặc dịch vụ sẽ gọi nhiều mạng quảng cáo để xác định quảng cáo phù hợp nhất cho một vùng quảng cáo nhất định. Đề xuất này giới thiệu cách mở rộng Protected Audience API trên Android để triển khai chức năng dàn xếp kiểu thác nước theo cách bảo đảm quyền riêng tư. Hiện nay, mạng quảng cáo cung cấp nhiều cách để nhà phát triển ứng dụng dàn xếp các phiên đấu giá quảng cáo từ nhiều người bán quảng cáo:

  1. Dàn xếp kiểu thác nước: Nhà phát triển ứng dụng xác định danh sách mạng quảng cáo theo thứ tự, thường xếp hạng theo chi phí hiệu quả trên mỗi nghìn lượt hiển thị (eCPM) trước đây cho mạng cụ thể. Danh sách này gọi là chuỗi dàn xếp. Nền tảng dàn xếp của nhà phát triển ứng dụng dùng danh sách này để gọi các mạng quảng cáo theo thứ tự trong danh sách, nhằm xác định các nguồn nhu cầu quảng cáo có liên quan.
  2. Dàn xếp có lập trình: Nhiều mạng quảng cáo được nhà phát triển ứng dụng định cấu hình để tham gia đặt giá thầu cho các cơ hội quảng cáo. Các mạng này được phép đặt giá thầu theo thời gian thực dựa trên cách họ đánh giá cơ hội.
  3. Dàn xếp kết hợp: Sự kết hợp của các kỹ thuật dàn xếp kiểu thác nước và có lập trình.

Dàn xếp kiểu thác nước

Trong quy trình dàn xếp kiểu thác nước, khi một cơ hội quảng cáo xuất hiện, SDK quảng cáo sẽ gửi yêu cầu đến máy chủ phụ trợ. Thay vì phản hồi yêu cầu bằng một mẫu quảng cáo chiến thắng, máy chủ phản hồi bằng một chuỗi dàn xếp chứa danh sách mạng quảng cáo được sắp xếp theo eCPM trước đây.

Biểu đồ mô hình dàn xếp kiểu thác nước
Hình 1. Mô hình dàn xếp kiểu thác nước.

Trong mô hình thác nước truyền thống, SDK quảng cáo gọi từng mạng quảng cáo (hoặc SDK đấu giá của riêng mạng quảng cáo đó) theo thứ tự do chuỗi dàn xếp xác định. Nếu một mạng quảng cáo có thể thực hiện yêu cầu quảng cáo, thì mạng quảng cáo đó sẽ hiển thị quảng cáo. Nếu không, yêu cầu sẽ được gửi đến mạng tiếp theo trong chuỗi. Quá trình này lặp lại cho đến khi yêu cầu được thực hiện hoặc hết chuỗi.

Quy trình dàn xếp kiểu thác nước thường được tối ưu hoá bằng cách thường xuyên sắp xếp lại chuỗi dàn xếp dựa trên kết quả đánh giá lại eCPM từ các nguồn nhu cầu quảng cáo của bên thứ nhất.

Dàn xếp có lập trình

Chức năng dàn xếp có lập trình (còn gọi là "đặt giá thầu dựa vào tiêu đề") là một giải pháp thay thế cho việc sử dụng eCPM trước đây để xác định mạng quảng cáo có cơ hội phân phát yêu cầu quảng cáo. Với chức năng dàn xếp có lập trình, nhà cung cấp sử dụng giá trị giá thầu trực tiếp để tìm quảng cáo chiến thắng.

Biểu đồ của mô hình dàn xếp có lập trình
Hình 2: Mô hình dàn xếp có lập trình

Dàn xếp kết hợp

Một số giải pháp dàn xếp có lập trình kết hợp các mạng quảng cáo ở chế độ kết hợp giữa thác nước với quy trình đặt giá thầu, nhằm cung cấp nhiều quyền kiểm soát quảng cáo hơn trong khi khai thác eCPM trực tiếp để tăng tối đa doanh thu của các mạng quảng cáo tham gia.

Trong mô hình dàn xếp kết hợp, mạng quảng cáo và nhà cung cấp giải pháp dàn xếp có thể giúp nhà phát triển ứng dụng linh hoạt hơn bằng cách kết hợp các phần tử của thác nước và quy trình đặt giá thầu theo thời gian thực. Với mô hình kết hợp, nhà phát triển ứng dụng có thể định cấu hình mạng quảng cáo dựa trên eCPM trước đây. Nhờ đó, họ có cơ hội hiển thị quảng cáo trước khi chạy quy trình đặt giá thầu theo thời gian thực với các mạng tham gia để đáp ứng cơ hội quảng cáo.

Dàn xếp kiểu thác nước của Protected Audience

Protected Audience API trên Android hỗ trợ chức năng dàn xếp kiểu thác nước nhờ có nhiều phiên đấu giá, mỗi phiên dành cho một nút riêng lẻ trong biểu đồ dàn xếp. Nếu không có quảng cáo chiến thắng trong phiên đấu giá, nút đấu giá của mạng tiếp theo sẽ được gọi cho đến khi hết chuỗi. Quy trình dàn xếp kiểu thác nước như sau:

  1. SDK dàn xếp tìm nạp chuỗi dàn xếp từ điểm cuối của máy chủ quảng cáo theo bối cảnh. Quá trình này có thể trả về quảng cáo theo bối cảnh hoặc chuỗi dàn xếp.
  2. Nếu điểm cuối của máy chủ quảng cáo trả về một chuỗi dàn xếp, thì SDK dàn xếp sẽ lặp lại qua từng mục trong chuỗi theo thứ tự, gọi SDK của mạng quảng cáo tham gia để chạy một lựa chọn quảng cáo theo bối cảnh và tái tiếp thị. Mỗi mục trong chuỗi biểu thị một yêu cầu mua không gian quảng cáo của một mạng quảng cáo với một mức giá cụ thể cho số lượt hiển thị, lượt nhấp hoặc thời gian quảng cáo cụ thể.
  3. Nếu không có mục hàng nào trong chuỗi chọn quảng cáo chiến thắng, thì SDK dàn xếp có thể chọn hiển thị một quảng cáo từ mạng quảng cáo riêng bằng cách chạy một lựa chọn quảng cáo Protected Audience sẽ xem xét cả quảng cáo tái tiếp thị và quảng cáo theo bối cảnh.

Biểu đồ quy trình dàn xếp kiểu thác nước của Protected Audience
Hình 3. Dàn xếp kiểu thác nước bằng Protected Audience API.

Biểu đồ trên cho thấy ví dụ về một thuật toán dàn xếp kiểu thác nước mà SDK dàn xếp có thể triển khai, khi mạng quảng cáo của bên thứ nhất không thể tối ưu hoá. Protected Audience API hỗ trợ tối ưu hoá mạng quảng cáo của bên thứ nhất bằng cách cho phép tạo chuỗi quy trình lựa chọn quảng cáo và báo cáo lượt hiển thị chiến thắng.

Kết quả AdSelection

Loại dữ liệu trả về của selectAds() là một đối tượng AdSelectionOutcome. AdSelectionOutcome chứa URI kết xuất của quảng cáo chiến thắng và AdSelectionId – một số nguyên không rõ ràng xác định mẫu quảng cáo chiến thắng của mục hàng.

AdSelectionOutcome {
  Uri renderUri;
  Long AdSelectionId;
}

AdSelectionId đóng vai trò là con trỏ đến AdSelectionOutcome. Hiện tại, AdSelectionId được truyền vào phương thức reportResult() dưới dạng thông số ReportImpressionInput để giúp xác định đúng quảng cáo mà các phương thức reportWin()reportResult() được gọi.

Đề xuất lựa chọn quảng cáo theo chuỗi

Chúng tôi đề xuất mở rộng selectAds() để xem xét kết quả của các lần chạy lựa chọn quảng cáo trước, từ đó chọn một quảng cáo chiến thắng thông qua đối tượng AdSelectionOutcome. Điều này cho phép mạng quảng cáo chạy quy trình dàn xếp xem xét quảng cáo theo bối cảnh và quảng cáo tái tiếp thị từ nhiều mạng quảng cáo.

ChainedAdSelections được thêm vào AdSelectionConfig. ChainedAdSelections dưới dạng thông số không bắt buộc, có thể chứa danh sách kết quả lựa chọn quảng cáo từ các lệnh gọi trước của phương thức selectAds() trong chuỗi dàn xếp. Dưới đây là ví dụ về một SDK chạy AdSelection bằng kết quả từ SDK A và SDK B trên thiết bị. SDK A và B đều chia sẻ AdSelectionOutcome rõ ràng từ các lệnh gọi selectAds() tương ứng đến SDK chạy lựa chọn quảng cáo theo chuỗi.

AdSelectionConfig myAdSelectionConfig = new AdSelectionConfig {
    Seller = "example-ssp1.com",
    DecisionLogicURL = Uri.parse("https://..."),
    CustomAudienceBuyerList = Arrays.asList("example-dsp1.com","example-dsp2.com"),
    AdSelectionSignals = "{"min_price": 10,"auction_attempts": 3}"
    SellerSignals = "{"seller_type": "news", "content_category": "sports","mature_ads_accepted" :"false"}"
    PerBuyerSignals = "{"example-dsp1.com": {"key1" : "value1"},
                        "example-dsp2.com": {"key1" : "value1", "key2" : "value2"}"
    ChainedAdSelections = {network_a_selection_outcome, network_b_selection_outcome}
};

// Invoke ad services API to initiate ad selection workflow.
AdSelectionOutcome winningAd = selectAds(myAdSelectionConfig);

Biều đồ tạo chuỗi lựa chọn quảng cáo
Hình 4. Tạo chuỗi lựa chọn quảng cáo bằng selectAds().

Lưu ý rằng giá trị trả về của lệnh gọi selectAds() này là một đối tượng AdSelectionOutcome khác.

  • Giá trị của null sẽ được trả về trong trường hợp không lựa chọn quảng cáo nào.
  • Hệ thống sẽ trả về đối tượng AdSelectionOutcome mới trong trường hợp có bất kỳ quảng cáo nào được ChainedAdSelections gọi đến không phải là quảng cáo chiến thắng.
  • Một trong những kết quả được truyền vào AdSelection sẽ được trả về trong trường hợp đó là quảng cáo đã chọn.

Báo cáo lượt hiển thị chiến thắng

Trong trường hợp không có quảng cáo chiến thắng trong lựa chọn quảng cáo theo chuỗi, thì lượt hiển thị chiến thắng sẽ không được báo cáo.

Nếu chọn một trong các đối tượng AdSelectionOutcome được truyền vào AdSelectionConfig, thì SDK đang chạy lựa chọn quảng cáo theo chuỗi sẽ giao tiếp với SDK quảng cáo chiến thắng về kết quả. Tiếp đến, SDK quảng cáo chiến thắng có thể gọi báo cáo lượt hiển thị chiến thắng giống như sau khi chạy AdSelection riêng. Điều này sẽ đảm bảo logic quyết định SDK là JavaScript của quảng cáo chiến thắng được sử dụng để báo cáo kết quả. Trong trường hợp này, SDK chạy lựa chọn quảng cáo theo chuỗi có thể báo cáo SDK quảng cáo nào có lượt hiển thị chiến thắng.

Nếu không có kết quả AdSelectionOutcome nào được chọn, thì SDK chạy lựa chọn quảng cáo theo chuỗi sẽ gọi báo cáo lượt hiển thị chiến thắng.

Chạy quy trình dàn xếp kiểu thác nước

Với khả năng tạo chuỗi các phiên bản của AdSelectionOutcome, như đã mô tả trên trang này, một SDK dàn xếp có thể chạy quy trình dàn xếp kiểu thác nước trong khi cho phép mạng quảng cáo của bên thứ nhất tối ưu hoá. Có thể tóm tắt quy trình này như sau:

  1. SDK dàn xếp lấy một chuỗi dàn xếp từ máy chủ dàn xếp thông qua yêu cầu quảng cáo theo bối cảnh.
  2. SDK dàn xếp chạy lựa chọn quảng cáo xem xét cả quảng cáo tái tiếp thị và quảng cáo theo bối cảnh.
  3. SDK dàn xếp chạy một phiên đấu giá xem xét kết quả lựa chọn quảng cáo của bên thứ nhất và eCPM trước đây của mục đủ điều kiện đầu tiên trong chuỗi dàn xếp.

  4. Nếu chọn một quảng cáo, quảng cáo chiến thắng sẽ được xác định và quy trình kết thúc.

  5. Nếu không chọn quảng cáo nào, SDK dàn xếp sẽ chọn mục đủ điều kiện đầu tiên từ chuỗi dàn xếp và gọi SDK tương ứng để chạy lựa chọn quảng cáo tái tiếp thị và theo bối cảnh.

  6. Nếu chọn một quảng cáo, quảng cáo đó sẽ hiển thị và quy trình kết thúc.

  7. Nếu không chọn quảng cáo, mục tiếp theo trong chuỗi sẽ được xem xét và bước 3 được thực thi.

  8. Nếu không còn mục khác trong chuỗi, SDK dàn xếp sẽ hiển thị quảng cáo của bên thứ nhất bằng cách chạy lựa chọn quảng cáo Protected Audience mà sẽ xem xét cả quảng cáo tái tiếp thị và quảng cáo theo bối cảnh, tương tự như bước 2.

Quy trình dàn xếp kiểu thác nước của Protected Audience
Hình 5. Quy trình dàn xếp kiểu thác nước của Protected Audience API.

Các phương pháp hay nhất

Chạy phiên đấu giá theo bối cảnh trước khi tối ưu hoá cho bên thứ nhất

Nhu cầu tái tiếp thị có thể tạo ra giá thầu cao, từ đó mang lại kết quả chiến thắng trong chuỗi dàn xếp. Rút ngắn là quy trình thường dùng để hỗ trợ tối ưu hoá cho bên thứ nhất bằng cách tinh chỉnh danh sách đối tượng tái tiếp thị.

Nhu cầu tái tiếp thị của Protected Audience API chỉ dùng được ở phía máy khách với các phiên đấu giá trong Protected Audience. Điều này có thể dẫn đến khó tối ưu hoá cho bên thứ nhất ở phía máy chủ. Để giảm thiểu vấn đề liên quan đến việc tối ưu hoá cho bên thứ nhất, trước tiên, hãy chạy phiên đấu giá theo bối cảnh, sau đó tiến hành tối ưu hoá cho bên thứ nhất dựa trên kết quả quảng cáo chiến thắng như mô tả trên trang này.

Duy trì các chuỗi dàn xếp nhỏ trên thiết bị

Để đạt được hiệu suất tối ưu, bạn nên duy trì các chuỗi dàn xếp nhỏ trên thiết bị. Chi phí tính toán cho quá trình thực thi trên thiết bị có thể tuyến tính theo số lượng phiên đấu giá được đánh giá trong chuỗi dàn xếp. Nói cách khác, càng nhiều nút sẽ dẫn đến càng nhiều yêu cầu về chu kỳ tính toán và độ trễ sẽ tăng lên. Hãy xem xét tác động của độ trễ đối với doanh thu khi bạn truyền các nút đến phần đánh giá dàn xếp trên thiết bị.

Các yếu tố cần cân nhắc khác

Đề xuất dành cho chức năng dàn xếp Protected Audience này đang trong quá trình hoàn thiện và chúng tôi hoan nghênh các ý kiến phản hồi.

Protected Audience API hiện không cung cấp giải pháp toàn diện cho chức năng dàn xếp nhiều vùng quảng cáo. Mỗi vùng quảng cáo phải được xử lý độc lập.

API dàn xếp Protected Audience hỗ trợ chức năng dàn xếp kiểu thác nước và một phần chức năng dàn xếp có lập trình. Trong tương lai, chúng tôi sẽ chia sẻ thêm thông tin chi tiết về việc hỗ trợ các trường hợp sử dụng khác của chức năng dàn xếp có lập trình.

Vì lựa chọn quảng cáo Protected Audience chạy sau khi tìm nạp quảng cáo theo bối cảnh, nên việc gọi Protected Audience API có thể ảnh hưởng đến độ trễ toàn diện của các yêu cầu quảng cáo.