オーディエンスとコンテキスト データは、広告リクエストでパブリッシャー提供のシグナル(PPS)として送信できます。PPS では、ユーザー ID を共有することなく、標準の分類を使用してすべてのトランザクション タイプの入札者にオーディエンスの特性を伝えることで、ユーザーデータを使用してプログラマティックな収益化を改善できます。オーディエンスの特性には、行動や興味に基づくデータ(IAB オーディエンスの分類 1.1)やコンテキスト データ(IAB コンテンツの分類 2.2)が含まれます。また、Google が定義したパブリッシャー提供の構造化シグナルを送信して、追加のシグナルの送信を許可することもできます。
ユーザー シグナルの JSON を作成する
最上位レベルで、単一の Key-Value ペアを含む JSON オブジェクトを作成します。キーは PublisherProvidedTaxonomySignals
で、その値はオブジェクトの配列である必要があります。配列内の各オブジェクトには、次の 2 つの Key-Value ペアが必要です。
taxonomy
キー: 次の IAB 公開仕様にマッピングされる次の値を受け入れます。IAB_AUDIENCE_1_1
: オーディエンス分類 1.1IAB_CONTENT_2_2
: コンテンツの分類 2.2
values
キーと、対応する文字列分類値の配列。
構造化シグナル配列を作成する
構造化シグナルの場合は、PublisherProvidedStructuredSignals
キーとオブジェクト配列の値を追加します。次のシグナルの Key-Value リストに基づいてオブジェクトを作成します。
構造化シグナル テーブルの表示を切り替える
シグナル | <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)