광고 요청에서 잠재고객 및 문맥 데이터를 게시자 제공 신호(PPS)로 전송할 수 있습니다. PPS를 사용하면 사용자 식별자를 공유할 필요 없이 표준 분류를 사용하여 잠재고객 특성을 모든 거래 유형의 입찰자에게 전달함으로써 사용자 데이터를 사용하여 프로그래매틱 수익 창출을 개선할 수 있습니다. 잠재고객 특성에는 행동 및 관심분야 기반 데이터(IAB 잠재고객 분류 1.1) 및 문맥 데이터(IAB 콘텐츠 분류 2.2)가 포함될 수 있습니다. 또한 Google에서 정의하고 추가 신호 전송을 허용하는 게시자 제공 구조화된 신호를 보낼 수도 있습니다.
사용자 신호 JSON 구성
최상위 수준에서 단일 키-값 쌍이 있는 JSON 객체를 만듭니다. 키는 PublisherProvidedTaxonomySignals
여야 하고 값은 객체의 배열이어야 합니다. 배열의 각 객체에는 2개의 키-값 쌍이 있어야 합니다.
taxonomy
키: 다음 IAB 공개 사양에 매핑되는 다음 값을 허용합니다.IAB_AUDIENCE_1_1
: 잠재고객 분류 1.1IAB_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)