運用 PPS 改善廣告活動
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
您可以在廣告請求中,以發布商提供的信號 (PPS) 的形式傳送目標對象和比對內容資料。透過 PPS,您可以使用使用者資料,透過標準分類方式,向所有交易類型的出價方傳達目標對象特徵,藉此改善程式輔助營利,而無須分享使用者 ID。您的目標對象特性包括行為和興趣相關資料 (IAB 目標對象分類 1.1) 和比對內容資料 (IAB 內容分類 2.2)。
您也可以傳送發布商提供的結構化信號,這些信號由 Google 定義,並允許傳送額外信號。
建構使用者信號 JSON
在頂層建立含有單一鍵/值組合的 JSON 物件。鍵應為 PublisherProvidedTaxonomySignals
,其值應為物件的陣列。陣列中的每個物件都應包含 2 個鍵/值組合:
建構結構化信號陣列
針對結構化信號,請新增包含物件陣列值的 PublisherProvidedStructuredSignals
鍵。根據下列信號鍵/值清單建構物件:
結構化信號表格的切換按鈕
信號 |
<code" dir="ltr" translate="no">"type" Value</code"> |
可能的 "single_value" 值 |
可能的 "values" 值 |
音訊動態饋給類型 |
"audio_feed" |
"af_1" :音樂
"af_2" :廣播
"af_3" :Podcast
|
不適用 |
內容分級 |
"content_rating" |
"cr_1" :G
"cr_2" :PG
"cr_3" :三
"cr_4" :MA
|
不適用 |
內容上傳 |
"delivery" |
不適用 |
"cd_1" :串流
"cd_2" :漸進式
"cd_3" :下載
|
製作品質 |
"prodq" |
"pq_1" :專業製作
"pq_2" :產消合一
"pq_3" :使用者原創內容 (UGC)
|
不適用 |
請參閱以下範例,如何使用 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:
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)
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-08-21 (世界標準時間)。
[null,null,["上次更新時間:2025-08-21 (世界標準時間)。"],[[["\u003cp\u003ePublisher-provided signals (PPS) allow you to share audience and contextual data with bidders to improve programmatic monetization, without sharing user identifiers.\u003c/p\u003e\n"],["\u003cp\u003ePPS uses standardized taxonomies such as IAB Audience Taxonomy 1.1 and IAB Content Taxonomy 2.2 to categorize your audience data.\u003c/p\u003e\n"],["\u003cp\u003eYou can send structured signals alongside taxonomies to provide further details, such as content rating, production quality, and delivery method.\u003c/p\u003e\n"],["\u003cp\u003eTo send PPS, create a JSON object with your signals, encode it in Base64, and include it in your ad request's \u003ccode\u003eadTagParameters\u003c/code\u003e using the key "ppsj".\u003c/p\u003e\n"]]],["Publishers can enhance programmatic ad monetization by sending audience and contextual data, known as Publisher Provided Signals (PPS), in ad requests. This data, using standard taxonomies like IAB Audience 1.1 and Content 2.2, includes user interests and behaviors. PPS also supports structured signals, including content ratings and audio feed types. This information is sent as a JSON object, encoded into a Base64 string, and added to the `StreamRequest` object as a key value `ppsj`.\n"],null,["# Improve ad campaigns with PPS\n\nYou can send audience and contextual data as\n[publisher provided signals](//support.google.com/admanager/answer/12451124)\n(PPS) in ad requests. With PPS, you can use your user data to improve\nprogrammatic monetization by communicating your audience characteristics to\nbidders in all\n[transaction types](//support.google.com/admanager/answer/2805834), using\nstandard taxonomies, without the need to share user identifiers. Your audience\ncharacteristics can include behavioral and interest-based data (\n[IAB Audience Taxonomy 1.1](//iabtechlab.com/standards/audience-taxonomy/)), and\ncontextual data (\n[IAB Content Taxonomy 2.2](https://iabtechlab.com/standards/content-taxonomy/)).\nYou can also send publisher provided structured signals, which are defined by\nGoogle, and allow for additional signals to be sent.\n\nConstruct the user signals JSON\n-------------------------------\n\nAt the top level, create a JSON object with a single key-value pair. The key\nshould be `PublisherProvidedTaxonomySignals`, and its value should be an array\nof objects. Each object in the array should have 2 key-value pairs:\n\n- The `taxonomy` key, which accepts the following values that are mapped to\n following IAB public specifications:\n\n - `IAB_AUDIENCE_1_1` for Audience Taxonomy 1.1\n - `IAB_CONTENT_2_2` for Content Taxonomy 2.2\n- The `values` key with a corresponding array of string taxonomy values.\n\n### Construct the structured signals array\n\nFor structured signals, add the `PublisherProvidedStructuredSignals` key with a\nvalue of an array of objects. Construct the object based on the following list\nof signal key-values: \n\n#### Toggle view of structured signals table\n\n| Signal | \"type\" Value | Possible `\"single_value\"` Values | Possible `\"values\"` Values |\n|--------------------|--------------------|-------------------------------------------------------------------------------------------|--------------------------------------------------------------------|\n| Audio Feed Type | `\"audio_feed\"` | - `\"af_1\"`: Music - `\"af_2\"`: Broadcast - `\"af_3\"`: Podcast | n/a |\n| Content Rating | `\"content_rating\"` | - `\"cr_1\"`: G - `\"cr_2\"`: PG - `\"cr_3\"`: T - `\"cr_4\"`: MA | n/a |\n| Content Delivery | `\"delivery\"` | n/a | - `\"cd_1\"`: Streaming - `\"cd_2\"`: Progressive - `\"cd_3\"`: Download |\n| Production Quality | `\"prodq\"` | - `\"pq_1\"`: Professionally Produced - `\"pq_2\"`: Prosumer - `\"pq_3\"`: User Generated (UGC) | n/a |\n\nSee the following example that uses the `IAB_AUDIENCE_1_1` and `IAB_CONTENT_2_2`\nfor taxonomy signals and includes structured signals. \n\n const userSignals = {\n \"PublisherProvidedTaxonomySignals\": [{\n \"taxonomy\": \"IAB_AUDIENCE_1_1\",\n \"values\": [\"6\", \"284\"]\n // '6' = 'Demographic | Age Range | 30-34'\n // '284' = 'Interest | Business and Finance | Mergers and Acquisitions'\n },\n {\n \"taxonomy\": \"IAB_CONTENT_2_2\",\n \"values\": [\"49\", \"138\"]\n // '49' = 'Books and Literature | Poetry'\n // '138' = 'Education | College Education | College Planning'\n }],\n \"PublisherProvidedStructuredSignals\": [{\n \"type\": \"audio_feed\",\n \"single_value\": \"af_1\",\n },\n {\n \"type\": \"delivery\",\n \"values\": [\"cd_1\", \"cd_3\"],\n },\n ],\n };\n\nConfigure your stream request\n-----------------------------\n\nFollow these steps to send PPS with your\n[`StreamRequest`](/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/StreamRequest):\n\n- Create a JSON string with the user's interest, behavior, or contextual data.\n- Create a Base64-encoded ASCII string from the JSON string above.\n- Add your encoded JSON using [`StreamRequest.setAdTagParameters`](/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/StreamRequest#public-abstract-void-setadtagparameters-mapstring,-string-adtagparameters).\n\n JSONObject userSignalsObject = new JSONObject();\n JSONArray userSignalsArray = new JSONArray();\n JSONObject audienceTaxonomyObject = new JSONObject();\n JSONArray valuesArray = new JSONArray();\n valuesArray.put(\"1\");\n valuesArray.put(\"284\");\n try {\n audienceTaxonomyObject.put(\"taxonomy\", \"IAB_AUDIENCE_1_1\");\n audienceTaxonomyObject.put(\"values\", valuesArray);\n } catch (JSONException e) {\n e.printStackTrace();\n }\n\n userSignalsArray.put(audienceTaxonomyObject);\n\n try {\n userSignalsObject.put(\"PublisherProvidedTaxonomySignals\", userSignalsArray);\n } catch (JSONException e) {\n e.printStackTrace();\n }\n\n byte[] userSignalsByte=new byte[0];\n try {\n userSignalsByte = userSignals.getBytes(StandardCharsets.UTF_8);\n String encodedBas64Signals = android.util.Base64.encodeToString(\n userSignalsByte,\n android.util.Base64.URL_SAFE);\n encodedSignals = URLEncoder.encode(encodedBas64Signals, \"UTF-8\");\n } catch (java.io.UnsupportedEncodingException error) {\n Log.w(\"Sample app\", error);\n }\n\n Map\u003cString, String\u003e adTagParamMap = new java.util.HashMap\u003cString, String\u003e();\n adTagParamMap.put(\"ppsj\", encodedSignals);\n\n streamRequest.setAdTagParameters(adTagParamMap)"]]