Quảng cáo gốc trên Android

Định dạng Quảng cáo gốc cho phép nhà xuất bản tuỳ chỉnh quảng cáo hiển thị với người dùng. Sau khi tìm nạp một quảng cáo từ SDK, nhà xuất bản có thể thay đổi bố cục và giao diện của quảng cáo đó để phù hợp hơn với giao diện người dùng của ứng dụng: thêm bộ lọc màu, thay đổi kiểu chữ và thêm lớp phủ tuỳ chỉnh. Để tối ưu hoá hiệu suất hoặc trải nghiệm người dùng của Quảng cáo gốc, nhà xuất bản thường đặt giới hạn hiển thị hoặc giảm tải phát video đối với SDK. Cuối cùng, nhà xuất bản có thể tuỳ chỉnh trình nghe lượt nhấp quảng cáo để theo dõi các sự kiện bổ sung như lượt vuốt lên.

Định dạng Quảng cáo gốc yêu cầu độ tin cậy đối với nhà xuất bản cao hơn so với mức cần để hiển thị các định dạng quảng cáo khác. SDK thường muốn phát hiện các lỗi vi phạm chính sách và xác minh rằng nội dung quảng cáo được cung cấp cho nhà xuất bản đã hiển thị với người dùng.

Bạn có thể sử dụng tính năng hỗ trợ quảng cáo biểu ngữ trong thời gian chạy SDK thông qua API SurfaceControlViewHost. Điều này cho phép SDK hiển thị các phần tử trên giao diện người dùng từ quy trình Thời gian chạy SDK mà không bị ứng dụng can thiệp. Sử dụng các chế độ SurfaceView Z bên trên hoặc Z bên dưới để xác định bề mặt nơi giao diện người dùng SDK hiển thị ở bên trên hay bên dưới cửa sổ ứng dụng. Khi một quảng cáo được hiển thị bằng cách sử dụng chế độ Z ở bên trên, SDK sẽ nhận được MotionEvents từ hoạt động tương tác của người dùng, nhưng lượt xem ứng dụng không hiển thị trên quảng cáo đó. Khi một quảng cáo hiển thị ở chế độ Z bên dưới, ứng dụng sẽ hiển thị các lượt xem riêng ở đầu quảng cáo đó, nhưng MotionEvents từ hoạt động tương tác của người dùng trên quảng cáo đó sẽ chuyển đến ứng dụng, chứ không chuyển đến SDK.

SDK và nhà xuất bản có thể sử dụng thư viện Jetpack privacysandbox.ui để thiết lập và duy trì phiên giao diện người dùng.

Vùng chứa quảng cáo do ứng dụng sở hữu

Chúng tôi đã tạo nguyên mẫu cho phép SDK sở hữu tất cả lượt xem bao gồm quảng cáo gốc (bao gồm cả lớp phủ của ứng dụng) và nhận thấy rằng mặc dù khả thi, nhưng SDK đã áp đặt một số hạn chế đối với giao diện người dùng và tăng độ phức tạp của quá trình tích hợp với SDK. Một phương pháp thực tế hơn là cho phép ứng dụng sở hữu hầu hết lượt hiển thị. SDK vẫn có thể chọn tự hiển thị một số giao diện người dùng, chẳng hạn như lượt xem quảng cáo, sử dụng SandboxedSdkView từ privacysandbox.ui. Phương pháp này mang lại độ linh hoạt cao nhất về cách các trường hợp sử dụng hiện có và trong tương lai của định dạng quảng cáo này được hỗ trợ: Với phương pháp này, nhà phát triển ứng dụng phải di chuyển các thành phần quảng cáo xung quanh và tạo kiểu cho các thành phần quảng cáo đó khi cần, mặc dù SDK duy trì quyền sở hữu trình phát video, nếu muốn, và duy trì quyền sử dụng các chế độ điều khiển nội dung nghe nhìn.

Sơ đồ cho thấy cách dữ liệu luân chuyển giữa nhà xuất bản và SDK.
Quy trình kiểm soát Quảng cáo gốc được đề xuất.

Thông báo về trạng thái quảng cáo

Các SDK khác nhau sẽ xem xét các thuộc tính khác nhau của lượt xem quảng cáo để phát hiện hành vi gian lận và lỗi vi phạm chính sách. Chúng tôi muốn hỗ trợ việc này mà không quy định thuộc tính nào cần sử dụng hoặc trở thành điểm tắc nghẽn để SDK thay đổi tập hợp thuộc tính được truy vấn. Bạn nên tạo bản trình bày vùng chứa quảng cáo và các lượt xem con của vùng chứa đó bằng cách sử dụng NativeAdContainerInfo. Đây sẽ là một đối tượng theo gói với nhiều phương thức getter hiển thị thông tin chỉ dành cho vùng chứa quảng cáo và nội dung của vùng chứa đó, nơi những thông tin đó bảo đảm quyền riêng tư và không gây tốn kém cho việc tính toán. SDK có thể chọn sử dụng các danh mục tín hiệu có trong NativeAdContainerInfo. SDK sẽ nhận đối tượng này bất cứ khi nào trạng thái quảng cáo thay đổi theo các cách liên quan đến SDK, chẳng hạn như các sự kiện có thể lập hoá đơn như số lượt hiển thị quảng cáo và số lần nhấp của người dùng.`

Ngoài ra, nhà xuất bản sẽ có thể thêm các thẻ (Chuỗi) theo lượt xem cụ thể vào từng phần tử con được thêm vào NativeAdContainer. Bạn có thể sử dụng mã này để cho SDK biết thành phần quảng cáo tương ứng của mỗi phần tử con.

Khi người dùng nhấp vào lượt xem do SDK sở hữu, thư viện giao diện người dùng sẽ chuyển tiếp MotionEvent với các thuộc tính được dịch sang không gian toạ độ của SDK sang SDK, cùng với MotionEvent ban đầu. Đối với các phiên bản Android trong tương lai, chúng tôi đang tìm cách thêm các ứng dụng để chuyển tiêu điểm chạm cho tất cả cử chỉ của người dùng đối với các phần do SDK sở hữu của quảng cáo gốc này do SDK xử lý.

Chứng thực

Các chứng thực sau dành cho SDK để đảm bảo chắc chắn hơn về bản trình bày quảng cáo:

  1. Chứng thực tính toàn vẹn của thiết bị: Sử dụng các API của nền tảng như Chứng thực khoá để xác định tính toàn vẹn của thiết bị.
  2. Danh tính APK: Sử dụng các API SdkSandbox như SdkSandboxController.getClientPackageName và các API PackageManager như requestChecksum để xác minh danh tính APK.
  3. VerifiedMotionEvents: Trên các phiên bản Android trong tương lai, chúng tôi đang tìm hiểu việc cho phép ứng dụng chuyển tiêu điểm chạm cho tất cả cử chỉ của người dùng trên các phần do SDK sở hữu của quảng cáo gốc này do SDK xử lý. MotionEvents có thể được chuyển đổi thành VerifiedMotionEvents bằng API hệ thống. SDK có thể hiển thị giao diện người dùng riêng để phản hồi tương tác của người dùng nếu họ chọn.

Câu hỏi mở

Chúng tôi hoan nghênh ý kiến phản hồi về những điểm sau đây:

  1. SDK nên tự tạo VerifiedMotionEvents hay để thư viện giao diện người dùng của nhà cung cấp làm như vậy cho SDK?
  2. SDK nên cho phép nhà xuất bản sở hữu lượt xem có chứa video hay tự sở hữu những lượt xem này?
  3. Bạn muốn thấy thuộc tính nào được bao gồm trong đối tượng AppOwnedAdContainerInfo?
  4. Bạn muốn hiển thị bao nhiêu quảng cáo hoặc thành phần quảng cáo do SDK sở hữu cùng lúc trên màn hình?