您可以在廣告請求中,以發布商提供的信號 (PPS) 形式傳送目標對象和比對內容資料。PPS 能幫助您利用使用者資料提升程式輔助營利成效,將目標對象特徵以標準分類傳達給所有交易類型的出價方,而且無需分享使用者 ID。目標對象特徵可包括行為和興趣資料 (IAB 目標對象分類 1.1 版),以及比對內容資料 (IAB 內容分類 2.2 版)。您也可以傳送 Google 定義的發布商提供的結構化信號,並允許傳送額外信號。
建構使用者信號 JSON
在頂層建立 JSON 物件,當中包含單一鍵/值組合。鍵應為 PublisherProvidedTaxonomySignals,值應為物件陣列。陣列中的每個物件都應有 2 個鍵/值組合:
- taxonomy鍵,接受對應至下列 IAB 公開規格的值:- IAB_AUDIENCE_1_1,適用於目標對象分類 1.1
- IAB_CONTENT_2_2內容分類 2.2 版
 
- values鍵,以及對應的字串分類方式值陣列。
建構結構化信號陣列
如果是結構化信號,請新增 PublisherProvidedStructuredSignals 鍵,並將值設為物件陣列。根據下列信號鍵/值清單建構物件:
切換結構化信號表格的檢視畫面
| 信號 | <code" dir="ltr" translate="no">"type" Value</code"> | 可能的 "single_value"值 | 可能的 "values"值 | 
|---|---|---|---|
| 音訊動態饋給類型 | "audio_feed" | 
 | 不適用 | 
| 內容分級 | "content_rating" | 
 | 不適用 | 
| 內容上傳 | "delivery" | 不適用 | 
 | 
| 製作品質 | "prodq" | 
 | 不適用 | 
請參閱下列範例,瞭解如何使用 IAB_AUDIENCE_1_1 和 IAB_CONTENT_2_2 取得分類信號,並納入結構化信號。
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"],
    },
  ],
};
設定串流要求
請按照下列步驟,透過 StreamRequest 傳送 PPS:
- 建立包含使用者興趣、行為或情境資料的 JSON 字串。
- 從上述 JSON 字串建立 Base64 編碼的 ASCII 字串。
- 使用 StreamRequest.setAdTagParameters新增編碼的 JSON。
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)