Cải thiện chiến dịch quảng cáo bằng PPS

Chọn nền tảng: HTML5 Android iOS tvOS Cast Roku

Bạn có thể gửi dữ liệu đối tượng và dữ liệu bối cảnh dưới dạng tín hiệu do nhà xuất bản cung cấp (PPS) trong các yêu cầu quảng cáo. Với PPS, bạn có thể sử dụng dữ liệu người dùng để cải thiện khả năng kiếm tiền có lập trình bằng cách truyền đạt các đặc điểm của đối tượng cho các bên đặt giá thầu trong tất cả các loại giao dịch, sử dụng hệ thống phân loại tiêu chuẩn mà không cần chia sẻ mã nhận dạng người dùng. Các đặc điểm của đối tượng có thể bao gồm dữ liệu dựa trên hành vi và mối quan tâm ( Hệ thống phân loại đối tượng 1.1 của IAB) và dữ liệu bối cảnh ( Hệ thống phân loại nội dung 2.2 của IAB). Bạn cũng có thể gửi tín hiệu có cấu trúc do nhà xuất bản cung cấp (do Google xác định) và cho phép gửi thêm tín hiệu.

Tạo JSON tín hiệu người dùng

Ở cấp cao nhất, hãy tạo một đối tượng JSON có một cặp khoá-giá trị. Khoá phải là PublisherProvidedTaxonomySignals và giá trị của khoá phải là một mảng đối tượng. Mỗi đối tượng trong mảng phải có 2 cặp khoá-giá trị:

  • Khoá taxonomy, chấp nhận các giá trị sau được liên kết với các thông số kỹ thuật công khai sau của IAB:

    • IAB_AUDIENCE_1_1 cho Hệ thống phân loại đối tượng 1.1
    • IAB_CONTENT_2_2 cho Hệ thống phân loại nội dung 2.2
  • Khoá values có một mảng giá trị phân loại chuỗi tương ứng.

Tạo mảng tín hiệu có cấu trúc

Đối với tín hiệu có cấu trúc, hãy thêm khoá PublisherProvidedStructuredSignals có giá trị là một mảng đối tượng. Tạo đối tượng dựa trên danh sách khoá-giá trị tín hiệu sau:

Bật/tắt chế độ xem bảng tín hiệu có cấu trúc

Tín hiệu <code" dir="ltr" translate="no">"type" Value</code"> Giá trị "single_value" có thể có Giá trị "values" có thể có
Loại nguồn cấp dữ liệu dạng âm thanh "audio_feed"
  • "af_1": Nhạc
  • "af_2": Chương trình phát sóng
  • "af_3": Podcast
Không có
Phân loại nội dung "content_rating"
  • "cr_1": G
  • "cr_2": PG
  • "cr_3": T
  • "cr_4": MA
Không có
Phân phối nội dung "delivery" Không có
  • "cd_1": Phát trực tuyến
  • "cd_2": Tải dần
  • "cd_3": Tải xuống
Chất lượng sản xuất "prodq"
  • "pq_1": Sản xuất chuyên nghiệp
  • "pq_2": Nhà sản xuất không chuyên
  • "pq_3": Do người dùng tạo (Nội dung do người dùng tạo)
Không có

Hãy xem ví dụ sau đây sử dụng IAB_AUDIENCE_1_1IAB_CONTENT_2_2 cho tín hiệu phân loại và bao gồm tín hiệu có cấu trúc.

const userSignals = {
  "PublisherProvidedTaxonomySignals": [{
     "taxonomy": "IAB_AUDIENCE_1_1",
     "values": ["6", "284"]
     // '6' = 'Demographic | Age Range | 30-34'
     // '284' = 'Interest | Business and Finance |  Mergers and Acquisitions'
  },
  {
     "taxonomy": "IAB_CONTENT_2_2",
     "values": ["49", "138"]
     // '49' = 'Books and Literature | Poetry'
     // '138' = 'Education | College Education | College Planning'
  }],
  "PublisherProvidedStructuredSignals": [{
      "type": "audio_feed",
      "single_value": "af_1",
    },
    {
      "type": "delivery",
      "values": ["cd_1", "cd_3"],
    },
  ],
};

Định cấu hình yêu cầu luồng

Hãy làm theo các bước sau để gửi PPS bằng StreamRequest:

  • Tạo một chuỗi JSON có mối quan tâm, hành vi hoặc dữ liệu bối cảnh của người dùng.
  • Tạo một chuỗi ASCII được mã hoá Base64 từ chuỗi JSON ở trên.
  • Thêm JSON được mã hoá bằng StreamRequest.setAdTagParameters.
JSONObject userSignalsObject = new JSONObject();
JSONArray userSignalsArray = new JSONArray();
JSONObject audienceTaxonomyObject = new JSONObject();
JSONArray valuesArray = new JSONArray();
valuesArray.put("1");
valuesArray.put("284");
try {
  audienceTaxonomyObject.put("taxonomy", "IAB_AUDIENCE_1_1");
  audienceTaxonomyObject.put("values", valuesArray);
} catch (JSONException e) {
  e.printStackTrace();
}

userSignalsArray.put(audienceTaxonomyObject);

try {
  userSignalsObject.put("PublisherProvidedTaxonomySignals", userSignalsArray);
} catch (JSONException e) {
  e.printStackTrace();
}

byte[] userSignalsByte=new byte[0];
try {
  userSignalsByte = userSignals.getBytes(StandardCharsets.UTF_8);
  String encodedBas64Signals = android.util.Base64.encodeToString(
    userSignalsByte,
    android.util.Base64.URL_SAFE);
  encodedSignals = URLEncoder.encode(encodedBas64Signals, "UTF-8");
} catch (java.io.UnsupportedEncodingException error) {
  Log.w("Sample app", error);
}

Map<String, String> adTagParamMap = new java.util.HashMap<String, String>();
adTagParamMap.put("ppsj", encodedSignals);

streamRequest.setAdTagParameters(adTagParamMap)