Android पर प्राइवसी सैंडबॉक्स के इस्तेमाल से जुड़ी जानकारी दस्तावेज़ का इस्तेमाल करने के लिए, डेवलपर झलक या बीटा बटन का इस्तेमाल करें प्रोग्राम का वर्शन सही है या नहीं, क्योंकि इसके निर्देश अलग-अलग हो सकते हैं.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
Android पर Protected Audience API (पहले इसे FLEDGE के नाम से जाना जाता था) में Custom Audience API और विज्ञापन चुनने का एपीआई. विज्ञापन टेक्नोलॉजी से जुड़े प्लैटफ़ॉर्म और विज्ञापन देने वाले लोग या कंपनियां पिछले ऐप्लिकेशन सहभागिता के आधार पर कस्टमाइज़ किए गए विज्ञापन दिखाने के लिए इन API का उपयोग कर सकता है इस विकल्प से, सभी ऐप्लिकेशन में आइडेंटिफ़ायर को शेयर करने की सीमा तय की जाती है और उपयोगकर्ता के ऐप्लिकेशन को शेयर करने की सीमा तय की जाती है तीसरे पक्षों के साथ इंटरैक्शन की जानकारी.
कस्टम ऑडियंस एपीआई, "कस्टम ऑडियंस" पर आधारित होता है ऐब्स्ट्रैक्ट, जो एक जैसे इरादों वाले लोगों के ग्रुप को दिखाता है. अगर आप विज्ञापन देने वाली कंपनी किसी उपयोगकर्ता को कस्टम ऑडियंस में रजिस्टर कर सकती है और काम के विज्ञापन जोड़ सकती है उसके साथ. यह जानकारी स्थानीय तौर पर सेव की जाती है और विज्ञापन देने वाले को सूचित करने के लिए इसका इस्तेमाल किया जा सकता है बिडिंग, विज्ञापन फ़िल्टर करने की सुविधा, और विज्ञापन रेंडरिंग शामिल हैं.
Ad Select API एक ऐसा फ़्रेमवर्क उपलब्ध कराता है जिसकी मदद से कई डेवलपर कस्टम ऑडियंस के लिए स्थानीय तौर पर नीलामी चलाता है. इसे हासिल करने के लिए, सिस्टम कस्टम ऑडियंस से जुड़े प्रासंगिक विज्ञापनों पर विचार करता है और उन विज्ञापनों को प्रोसेस करना जिन्हें विज्ञापन टेक्नोलॉजी प्लैटफ़ॉर्म, डिवाइस पर वापस भेजता है.
विज्ञापन टेक्नोलॉजी से जुड़े प्लैटफ़ॉर्म, इन एपीआई को इंटिग्रेट करके रीमार्केटिंग को लागू कर सकते हैं. उपयोगकर्ता की निजता को सुरक्षित रखता है. ऐप्लिकेशन इंस्टॉल करने के साथ-साथ, इस्तेमाल के अन्य उदाहरणों के लिए सहायता विज्ञापनों को, आने वाले समय में रिलीज़ करने के लिए प्लान किया गया हो. Protected Audience के बारे में ज़्यादा जानें डिज़ाइन प्रस्ताव में Android के लिए एपीआई.
इस गाइड में यह बताया गया है कि Android पर Protected Audience API की मदद से, कैसे काम किया जा सकता है ये काम करें:
- कस्टम ऑडियंस मैनेज करना
- डिवाइस पर विज्ञापन चुनने का विकल्प सेट अप करना और चलाना
- विज्ञापन इंप्रेशन की रिपोर्ट करना
शुरू करने से पहले
शुरू करने से पहले, इन शर्तों को पूरा करें:
- Android पर प्राइवसी सैंडबॉक्स के लिए, अपना डेवलपमेंट एनवायरमेंट सेट अप करें.
- ऐसे डिवाइस पर सिस्टम इमेज इंस्टॉल करें जिस पर यह सुविधा काम करती है या किसी ऐसे डिवाइस पर सिस्टम इमेज इंस्टॉल करें एम्युलेटर, जिसमें Android पर प्राइवसी सैंडबॉक्स के साथ काम करने की सुविधा शामिल है.
टर्मिनल में, Protected Audience API का ऐक्सेस चालू करें (बंद है डिफ़ॉल्ट रूप से) को डिफ़ॉल्ट रूप से कॉन्फ़िगर किया जा सकता है.
adb shell device_config put adservices ppapi_app_allow_list \"*\"
अपने ऐप्लिकेशन में
ACCESS_ADSERVICES_CUSTOM_AUDIENCE
की अनुमति शामिल करें मेनिफ़ेस्ट:<uses-permission android:name="android.permission.ACCESS_ADSERVICES_CUSTOM_AUDIENCE" />
इसके
<application>
एलिमेंट में विज्ञापन सेवाओं के कॉन्फ़िगरेशन का रेफ़रंस दें आपका मेनिफ़ेस्ट:<property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/ad_services_config" />
अपने मेनिफ़ेस्ट में बताए गए विज्ञापन की सेवाओं से जुड़े एक्सएमएल संसाधन के बारे में बताएं, जैसे
res/xml/ad_services_config.xml
. विज्ञापन की सेवाओं की अनुमतियों के बारे में ज़्यादा जानें और SDK टूल ऐक्सेस कंट्रोल के बारे में जानें.<ad-services-config> <custom-audiences allowAllToAccess="true" /> </ad-services-config>
डिफ़ॉल्ट रूप से, Ad Select API, सीमाएं लागू करता है नीलामी या इंप्रेशन रिपोर्टिंग के लिए, मेमोरी की ज़्यादा से ज़्यादा सीमा स्क्रिप्ट असाइन कर सकती है. मेमोरी सीमित करने की सुविधा के लिए, वेबव्यू वर्शन ज़रूरी है 105.0.5195.58 या इससे ज़्यादा. यह प्लैटफ़ॉर्म, वर्शन की जांच लागू करता है और अगर ऐसा होता है, तो
selectAds
औरreportImpression
एपीआई काम नहीं करेंगे संतुष्ट नहीं है. इसे सेट अप करने के दो विकल्प हैं:पहला विकल्प: इस जांच को बंद करने के लिए, यहां दिया गया adb कमांड चलाएं:
adb device_config put fledge_js_isolate_enforce_max_heap_size false
दूसरा विकल्प: Google Play Store से वेबव्यू बीटा इंस्टॉल करें. यह ज़रूरी है ऊपर बताए गए वर्शन के बराबर या उससे ज़्यादा होनी चाहिए.
कस्टम ऑडियंस में शामिल हों
कस्टम ऑडियंस, एक जैसे मकसद वाले उपयोगकर्ताओं के ग्रुप को दिखाती है या दिलचस्पी के विकल्पों को विज्ञापन देने वाले के ऐप्लिकेशन के आधार पर तय किया जाता है. ऐप्लिकेशन या SDK टूल, किसी खास ऑडियंस के बारे में बताने के लिए ऑडियंस. जैसे, कोई ऐसा व्यक्ति जिसने आइटम छोड़ा है एक शॉपिंग कार्ट में डालें. एसिंक्रोनस तरीके से कस्टम ऑडियंस बनाने या उसमें शामिल होने के लिए, ये काम करें फ़ॉलो किया जा रहा है:
CustomAudienceManager
ऑब्जेक्ट को शुरू करें.- जैसे मुख्य पैरामीटर तय करके,
CustomAudience
ऑब्जेक्ट बनाएं खरीदार का पैकेज और प्रासंगिक नाम. इसके बाद,CustomAudience
वालाJoinCustomAudienceRequest
ऑब्जेक्ट ऑब्जेक्ट है. - एसिंक्रोनस
joinCustomAudience()
को इसके साथ कॉल करें:JoinCustomAudienceRequest
ऑब्जेक्ट और काम काExecutor
औरOutcomeReceiver
ऑब्जेक्ट.
Kotlin
val customAudienceManager: CustomAudienceManager =
context.getSystemService(CustomAudienceManager::class.java)
// Initialize a custom audience.
val audience = CustomAudience.Builder()
.setBuyer(buyer)
.setName(name)
...
.build()
// Initialize a custom audience request.
val joinCustomAudienceRequest: JoinCustomAudienceRequest =
JoinCustomAudienceRequest.Builder().setCustomAudience(audience).build()
// Request to join a custom audience.
customAudienceManager.joinCustomAudience(joinCustomAudienceRequest,
executor,
outcomeReceiver)
Java
CustomAudienceManager customAudienceManager =
context.getSystemService(CustomAudienceManager.class);
// Initialize a custom audience.
CustomAudience audience = new CustomAudience.Builder()
.setBuyer(buyer)
.setName(name)
...
.build();
// Initialize a custom audience request.
JoinCustomAudienceRequest joinCustomAudienceRequest =
new JoinCustomAudienceRequest.Builder().setCustomAudience(audience).build();
// Request to join a custom audience.
customAudienceManager.joinCustomAudience(joinCustomAudienceRequest,
executor,
outcomeReceiver);
यहां दिए गए पैरामीटर का कॉम्बिनेशन, हर एक की पहचान करता है
डिवाइस पर CustomAudience
ऑब्जेक्ट:
owner
: मालिक के ऐप्लिकेशन का पैकेज नाम. यह स्पष्ट रूप से कॉलर ऐप्लिकेशन के पैकेज का नाम.buyer
: खरीदार के विज्ञापन नेटवर्क के लिए आइडेंटिफ़ायर, जो इस कस्टम विज्ञापन नेटवर्क कंपनी के लिए विज्ञापन मैनेज करता है ऑडियंस.name
: कस्टम ऑडियंस के लिए आर्बिट्रेरी नाम या आइडेंटिफ़ायर.
इसके अलग-अलग इंस्टेंस के साथ, joinCustomAudience()
को बार-बार कॉल किया जा रहा है
CustomAudience
, इसके साथ मौजूद CustomAudience
को अपडेट करता है
owner, buyer
और name
पैरामीटर से मेल खाते हैं. निजता की सुरक्षा के लिए,
एपीआई के नतीजे, "क्रिएशन" में अंतर नहीं करते और "अपडेट करो."
इसके अलावा, CustomAudience
को इन ज़रूरी शर्तों के साथ बनाया जाना चाहिए
पैरामीटर:
- हर दिन अपडेट होने वाला यूआरएल: ऐसा एचटीटीपीएस यूआरएल जिसके लिए बैकग्राउंड में हर रोज़ क्वेरी की जाती है कस्टम ऑडियंस के उपयोगकर्ता के बिडिंग सिग्नल, भरोसेमंद बिडिंग का डेटा, और विज्ञापनों के लिए यूआरएल और मेटाडेटा रेंडर करने में मदद मिलती है.
- बिडिंग लॉजिक यूआरएल: ऐसा एचटीटीपीएस यूआरएल जिस पर विज्ञापन को चुनने के दौरान, खरीदार का JavaScript बिडिंग लॉजिक. ज़रूरी फ़ंक्शन सिग्नेचर देखें इस JavaScript में.
- विज्ञापन रेंडर करने के आईडी: यह एक आर्बिट्रेरी आईडी होता है, जिसे खरीदार की ओर से सेट की गई विज्ञापन टेक्नोलॉजी से कनेक्ट किया जाता है. यह है B&A के लिए पेलोड जनरेट करने के लिए ऑप्टिमाइज़ेशन.
CustomAudience
ऑब्जेक्ट के लिए वैकल्पिक पैरामीटर में ये शामिल हो सकते हैं:
- ऐक्टिवेशन का समय: कस्टम ऑडियंस, सिर्फ़ विज्ञापन चुनने में हिस्सा ले सकती है और इसके ऐक्टिवेशन समय के बाद, हर दिन के अपडेट मिलते हैं. इससे दर्शकों की दिलचस्पी बढ़ाने में मदद मिल सकती है किसी ऐप्लिकेशन के सक्रिय उपयोगकर्ता नहीं हैं, उदाहरण के लिए.
- खत्म होने का समय: आगे का समय, जिसके बाद कस्टम ऑडियंस होता है डिवाइस से हटाया गया.
- उपयोगकर्ता के बिडिंग सिग्नल: JSON स्ट्रिंग, जिसमें उपयोगकर्ता के सिग्नल होते हैं, जैसे कि उपयोगकर्ता की पसंदीदा स्थान-भाषा, जिसे खरीदार के बिडिंग लॉजिक JavaScript का इस्तेमाल करता है का इस्तेमाल करके विज्ञापन चुनने की प्रोसेस के दौरान बिड जनरेट की जा सकती हैं. इस फ़ॉर्मैट से, विज्ञापन टेक्नोलॉजी को प्लैटफ़ॉर्म, सभी प्लैटफ़ॉर्म पर कोड का दोबारा इस्तेमाल करते हैं और JavaScript में आसानी से इस्तेमाल किए जा सकते हैं फ़ंक्शन.
- भरोसेमंद बिडिंग डेटा: एक एचटीटीपीएस यूआरएल और विज्ञापन चुनने की प्रोसेस, जो किसी भरोसेमंद कुंजी/वैल्यू से बोली लगाने के सिग्नल फ़ेच करती है सेवा.
- विज्ञापन: ऐसे विज्ञापनों से संबंधित
AdData
ऑब्जेक्ट की सूची जो विज्ञापन चुनने में हिस्सा लेते हैं. हरAdData
ऑब्जेक्ट में ये शामिल हैं:- रेंडर यूआरएल: यह ऐसा एचटीटीपीएस यूआरएल होता है जिस पर फ़ाइनल विज्ञापन को रेंडर करने के लिए क्वेरी की जाती है.
- मेटाडेटा: JSON ऑब्जेक्ट को स्ट्रिंग के तौर पर क्रम में लगाया जाता है. इसमें, विज्ञापन चुनने की प्रोसेस के दौरान, खरीदार के लिए बिडिंग लगाने के तरीके के हिसाब से उसका इस्तेमाल किया जाना चाहिए.
- विज्ञापन फ़िल्टर: एक क्लास, जिसमें ऐप्लिकेशन के लिए सभी ज़रूरी जानकारी होती है विज्ञापन चुनने के दौरान विज्ञापन फ़िल्टर करने की सुविधा और फ़्रीक्वेंसी कैपिंग इंस्टॉल की जा सकती है.
यहां CustomAudience
ऑब्जेक्ट इंस्टैंशिएट का उदाहरण दिया गया है:
Kotlin
// Minimal initialization of a CustomAudience object
val customAudience: CustomAudience = CustomAudience.Builder()
.setBuyer(AdTechIdentifier.fromString("my.buyer.domain.name"))
.setName("example-custom-audience-name")
.setDailyUpdateUrl(Uri.parse("https://DAILY_UPDATE_URL"))
.setBiddingLogicUrl(Uri.parse("https://BIDDING_LOGIC_URL"))
.build()
Java
// Minimal initialization of a CustomAudience object
CustomAudience customAudience = CustomAudience.Builder()
.setBuyer(AdTechIdentifier.fromString("my.buyer.domain.name"))
.setName("example-custom-audience-name")
.setDailyUpdateUrl(Uri.parse("https://DAILY_UPDATE_URL"))
.setBiddingLogicUrl(Uri.parse("https://BIDDING_LOGIC_URL"))
.build();
Join कस्टम ऑडियंस() के नतीजों को मैनेज करना
एसिंक्रोनस joinCustomAudience()
तरीका, OutcomeReceiver
का इस्तेमाल करता है
ऑब्जेक्ट का इस्तेमाल करके, एपीआई कॉल के नतीजे के बारे में बताएं.
onResult()
कॉलबैक से पता चलता है कि कस्टम ऑडियंस चालू हो गई है बनाया या अपडेट किया गया.onError()
कॉलबैक, दो संभावित शर्तों को दिखाता है.- अगर
JoinCustomAudienceRequest
को अमान्य से शुरू किया गया है है, तोAdServicesException
वजह के तौर परIllegalArgumentException
. - अन्य सभी त्रुटियों को
AdServicesException
वजह के तौर परIllegalStateException
.
- अगर
यहां joinCustomAudience()
के नतीजे को मैनेज करने का एक उदाहरण दिया गया है:
Kotlin
var callback: OutcomeReceiver<Void, AdServicesException> =
object : OutcomeReceiver<Void, AdServicesException> {
override fun onResult(result: Void) {
Log.i("CustomAudience", "Completed joinCustomAudience")
}
override fun onError(error: AdServicesException) {
// Handle error
Log.e("CustomAudience", "Error executing joinCustomAudience", error)
}
};
Java
OutcomeReceiver callback = new OutcomeReceiver<Void, AdServicesException>() {
@Override
public void onResult(@NonNull Void result) {
Log.i("CustomAudience", "Completed joinCustomAudience");
}
@Override
public void onError(@NonNull AdServicesException error) {
// Handle error
Log.e("CustomAudience", "Error executing joinCustomAudience", error);
}
};
कस्टम ऑडियंस छोड़ें
अगर उपयोगकर्ता अब किसी खास कस्टम विज्ञापन यूनिट के लिए, कारोबार की शर्तें पूरी नहीं करता
कस्टम सेगमेंट को हटाने के लिए, ऐप्लिकेशन या SDK टूल leaveCustomAudience()
पर कॉल कर सकता है
डिवाइस से ऑडियंस. CustomAudience
को उसकी यूनीक वैल्यू के आधार पर हटाने के लिए
पैरामीटर जोड़ने के बाद, ये काम करें:
CustomAudienceManager
ऑब्जेक्ट को शुरू करें.LeaveCustomAudienceRequest
को कस्टम ऑडियंस के साथ शुरू करेंbuyer
औरname
. इन इनपुट फ़ील्ड के बारे में ज़्यादा जानने के लिए, पढ़ें "कस्टम ऑडियंस में शामिल हों."- एसिंक्रोनस
leaveCustomAudience()
तरीके को इस तरीके से कॉल करें:LeaveCustomAudienceRequest
ऑब्जेक्ट और काम काExecutor
औरOutcomeReceiver
ऑब्जेक्ट.
Kotlin
val customAudienceManager: CustomAudienceManager =
context.getSystemService(CustomAudienceManager::class.java)
// Initialize a LeaveCustomAudienceRequest
val leaveCustomAudienceRequest: LeaveCustomAudienceRequest =
LeaveCustomAudienceRequest.Builder()
.setBuyer(buyer)
.setName(name)
.build()
// Request to leave a custom audience
customAudienceManager.leaveCustomAudience(
leaveCustomAudienceRequest,
executor,
outcomeReceiver)
Java
CustomAudienceManager customAudienceManager =
context.getSystemService(CustomAudienceManager.class);
// Initialize a LeaveCustomAudienceRequest
LeaveCustomAudienceRequest leaveCustomAudienceRequest =
new LeaveCustomAudienceRequest.Builder()
.setBuyer(buyer)
.setName(name)
.build();
// Request to leave a custom audience
customAudienceManager.leaveCustomAudience(
leaveCustomAudienceRequest,
executor,
outcomeReceiver);
joinCustomAudience()
को कॉल करने की तरह ही, OutcomeReceiver
सिग्नल
इससे एपीआई कॉल खत्म हो जाता है. निजता की सुरक्षा के लिए, गड़बड़ी के नतीजे के तौर पर
अंदरूनी गड़बड़ियों और अमान्य आर्ग्युमेंट के बीच फ़र्क़ करें. onResult()
कॉलबैक को तब कॉल किया जाता है, जब एपीआई कॉल पूरा हो जाता है, चाहे वह मेल खाता हो या नहीं
पसंद के मुताबिक दर्शक को हटा दिया गया है.
विज्ञापन चुनना शुरू करें
Protected Audience API का इस्तेमाल करके विज्ञापन चुनने के लिए, selectAds()
तरीके को कॉल करें:
AdSelectionManager
ऑब्जेक्ट शुरू करें.- कोई
AdSelectionConfig
ऑब्जेक्ट बनाएं. - एसिंक्रोनस
selectAds()
तरीके को इस तरीके से कॉल करें:AdSelectionConfig
ऑब्जेक्ट और काम काExecutor
औरOutcomeReceiver
ऑब्जेक्ट.
Kotlin
val adSelectionManager: AdSelectionManager =
context.getSystemService(AdSelectionManager::class.java)
// Initialize AdSelectionConfig
val adSelectionConfig: AdSelectionConfig =
AdSelectionConfig.Builder().setSeller(seller)
.setDecisionLogicUrl(decisionLogicUrl)
.setCustomAudienceBuyers(customAudienceBuyers)
.setAdSelectionSignals(adSelectionSignals)
.setSellerSignals(sellerSignals)
.setPerBuyerSignals(perBuyerSignals)
.setBuyerContextualAds(
Collections.singletonMap(
contextualAds.getBuyer(), contextualAds
)
).build()
// Run ad selection with AdSelectionConfig
adSelectionManager.selectAds(
adSelectionConfig, executor, outcomeReceiver
)
Java
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
// Initialize AdSelectionConfig
AdSelectionConfig adSelectionConfig =
new AdSelectionConfig.Builder()
.setSeller(seller)
.setDecisionLogicUrl(decisionLogicUrl)
.setCustomAudienceBuyers(customAudienceBuyers)
.setAdSelectionSignals(adSelectionSignals)
.setSellerSignals(sellerSignals)
.setPerBuyerSignals(perBuyerSignals)
.setBuyerContextualAds(
Collections.singletonMap(contextualAds.getBuyer(), contextualAds)
)
.build();
// Run ad selection with AdSelectionConfig
adSelectionManager.selectAds(adSelectionConfig, executor, outcomeReceiver);
selectAds()
तरीके के लिए, AdSelectionConfig
इनपुट डालना ज़रूरी है. यहां
आपको नीचे दिए गए ज़रूरी पैरामीटर तय करने होंगे:
- सेलर: विज्ञापन को चुनने की प्रोसेस शुरू करने वाले सेलर के विज्ञापन नेटवर्क का आइडेंटिफ़ायर.
- डिसिज़न लॉजिक यूआरएल: ऐसा एचटीटीपीएस यूआरएल जिस पर सेलर के विज्ञापन नेटवर्क की प्रॉपर्टी पाने के लिए क्वेरी की जाती है
JavaScript लॉजिक.
- एचटीटीपीएस यूआरएल: यह अनुरोध, सेलर के विज्ञापन नेटवर्क का JavaScript लॉजिक जानने के लिए किया जाता है. ज़रूरी फ़ंक्शन सिग्नेचर देखें.
- पहले से बने यूआरआई: जो FLEDGE के विज्ञापन चुनने के फ़ॉर्मैट के मुताबिक होते हैं.
काम न करने या गलत तरीके से इस्तेमाल करने पर,
IllegalArgumentException
को ट्रिगर किया जाता है पहले से बनाए गए uri को पास कर दिया जाता है.
- कस्टम ऑडियंस खरीदार: खरीदार के विज्ञापन नेटवर्क के लिए आइडेंटिफ़ायर की पूरी सूची
जिन्हें सेलर, विज्ञापन चुनने की प्रोसेस में हिस्सा ले सकता है.
ये खरीदार आइडेंटिफ़ायर इनमें से
CustomAudience.getBuyer()
से जुड़े हैं भी शामिल हो सकते हैं.
कस्टमाइज़ किए गए ज़्यादा विज्ञापनों के लिए, ये पैरामीटर वैकल्पिक रूप से तय किए जा सकते हैं चुनें:
- विज्ञापन चुनने के सिग्नल: एक JSON ऑब्जेक्ट, जो स्ट्रिंग के तौर पर क्रम में होता है. इसमें यह शामिल होता है
खरीदार के बिडिंग लॉजिक से इस्तेमाल किए जाने वाले सिग्नल JavaScript से फ़ेच किए गए
CustomAudience.getBiddingLogicUrl()
. - सेलर के सिग्नल: एक JSON ऑब्जेक्ट, जो स्ट्रिंग के तौर पर क्रम में होता है. इसमें सिग्नल होते हैं
इसका इस्तेमाल, विक्रेता के फ़ेच किए गए JavaScript डिसिज़न लॉजिक से किया गया
AdSelectionConfig.getDecisionLogicUrl()
. - खरीदार के हर सिग्नल के हिसाब से: JSON ऑब्जेक्ट का मैप, जिसे स्ट्रिंग के तौर पर क्रम से लगाया जाता है,
जिसमें ऐसे सिग्नल शामिल हों जिनका इस्तेमाल कुछ खरीदार कर सकते हैं बिडिंग लॉजिक JavaScript
CustomAudience.getBiddingLogicUrl()
से फ़ेच किया गया, जिसकी पहचान हिस्सा लेने वाली कस्टम ऑडियंस के खरीदार फ़ील्ड. - संदर्भ के हिसाब से विज्ञापन: विज्ञापन के उम्मीदवारों का ऐसा कलेक्शन, जिसे सीधे तौर पर इकट्ठा किया जाता है सुरक्षित ऑडियंस के बाहर होने वाली नीलामी के दौरान खरीदारों से नीलामी.
विज्ञापन चुनने के बाद, नतीजे, बिड, और सिग्नल अंदरूनी तौर पर बने रहते हैं
. OutcomeReceiver.onResult()
कॉलबैक
AdSelectionOutcome
, जिसमें यह शामिल है:
AdData.getRenderUrl()
से मिला, जीतने वाले विज्ञापन के लिए रेंडर यूआरएल.- डिवाइस उपयोगकर्ता के लिए खास विज्ञापन चुनने का आईडी. इस आईडी का इस्तेमाल रिपोर्टिंग के लिए किया जाता है विज्ञापन इंप्रेशन.
अगर इन वजहों से विज्ञापन को चुनने की प्रोसेस पूरी नहीं हो पा रही है
अमान्य तर्क, टाइम आउट या संसाधन का बहुत ज़्यादा इस्तेमाल न हो, तो
OutcomeReceiver.onError()
कॉलबैक से AdServicesException
मिलता है
ये सेटिंग लागू होती हैं:
- यदि विज्ञापन का चयन अमान्य तर्क के साथ किया जाता है, तो
AdServicesException
,IllegalArgumentException
को वजह. - अन्य सभी त्रुटियों को
AdServicesException
वजह के तौर परIllegalStateException
.
कॉन्टेंट के हिसाब से विज्ञापन
Protected Audience, सुरक्षित नीलामी में काम के विज्ञापन शामिल कर सकता है.
कॉन्टेक्स्चुअल विज्ञापनों को AdTech सर्वर पर चुना जाना चाहिए. इसके बाद, उन्हें
डिवाइस, Protected Audience API से बाहर है. इसके बाद, काम के विज्ञापन शामिल किए जा सकते हैं
नीलामी में AdSelectionConfig
का इस्तेमाल करके, जहां वे फ़ंक्शन करते हैं
यह डिवाइस पर दिखने वाले विज्ञापनों की तरह ही होता है. इसमें नेगेटिव विज्ञापन फ़िल्टर करने की सुविधा भी शामिल है. एक बार
Protected Audience API से जुड़ी नीलामी पूरी हो गई है. आपको
reportImpression()
. यह reportWin()
को सबसे अच्छे प्रासंगिक विज्ञापन में कॉल करता है
इंप्रेशन रिपोर्टिंग के पैटर्न के समान होता है, ताकि किसी साइट पर सबसे अच्छा परफ़ॉर्म करने वाला विज्ञापन दिखाया जा सके
डिवाइस. प्रत्येक प्रासंगिक विज्ञापन के लिए एक खरीदार, एक बोली, रिपोर्टिंग लॉजिक का एक लिंक,
यूआरएल, और विज्ञापन के मेटाडेटा को रेंडर करने में मदद कर सकता है.
ऐप्लिकेशन में प्रासंगिक विज्ञापन लागू करने के लिए, टारगेट ऐप्लिकेशन को
ContextualAds
ऑब्जेक्ट:
Kotlin
val contextualAds: ContextualAds =
Builder().setBuyer(AdTechIdentifier.fromString(mBiddingLogicUri.getHost()))
//Pass in your valid app install ads
.setDecisionLogicUri(mContextualLogicUri)
.setAdsWithBid(appInstallAd)
.build()
Java
ContextualAds contextualAds = new ContextualAds.Builder()
.setBuyer(AdTechIdentifier.fromString(mBiddingLogicUri.getHost()))
.setDecisionLogicUri(mContextualLogicUri)
//Pass in your valid app install ads
.setAdsWithBid(appInstallAd)
.build();
इसके बाद, नतीजा बनाते समय ContextualAds
ऑब्जेक्ट को पास किया जा सकता है
AdSelectionConfig
:
Kotlin
// Create a new ad
val noFilterAd: AdData = Builder()
.setMetadata(JSONObject().toString())
.setRenderUri(Uri.parse(baseUri + NO_FILTER_RENDER_SUFFIX))
.build()
val noFilterAdWithBid = AdWithBid(noFilterAd, NO_FILTER_BID)
contextualAds.getAdsWithBid().add(noFilterAdWithBid)
Java
// Create a new ad
AdData noFilterAd = new AdData.Builder()
.setMetadata(new JSONObject().toString())
.setRenderUri(Uri.parse(baseUri + NO_FILTER_RENDER_SUFFIX))
.build();
AdWithBid noFilterAdWithBid = new AdWithBid(noFilterAd, NO_FILTER_BID);
contextualAds.getAdsWithBid().add(noFilterAdWithBid);
ऐप्लिकेशन इंस्टॉल विज्ञापन फ़िल्टर करना
ऐप्लिकेशन इंस्टॉल विज्ञापन फ़िल्टर करने की सुविधा की मदद से, ऐप्लिकेशन के लिए इंस्टॉलेशन विज्ञापन फ़िल्टर किए जा सकते हैं जो किसी डिवाइस पर पहले से इंस्टॉल हैं.
इस प्रक्रिया का पहला चरण यह तय करना है कि कौनसे विज्ञापन देने वाले का इस्तेमाल करें. यह आपकी पसंद के ऐप्लिकेशन में होना चाहिए का इस्तेमाल करें.
Kotlin
//Create a request for setting the app install advertisers
val adtech = AdTechIdentifier.fromString("your.enrolled.uri")
val adtechSet = setOf(adtech)
val request = SetAppInstallAdvertisersRequest(adtechSet)
//Set the app install advertisers in the ad selection manager
mAdSelectionManager.setAppInstallAdvertisers(
request,
mExecutor,
object : OutcomeReceiver<Any?, Exception?>() {
fun onResult(@NonNull ignoredResult: Any?) {
Log.v("[your tag]", "Updated app install advertisers")
}
fun onError(@NonNull error: Exception?) {
Log.e("[your tag]", "Failed to update app install advertisers", error)
}
})
Java
//Create a request for setting the app install advertisers
AdTechIdentifier adtech = AdTechIdentifier.fromString("your.enrolled.uri");
Set<AdTechIdentifier> adtechSet = Collections.singleton(adtech);
SetAppInstallAdvertisersRequest request = new SetAppInstallAdvertisersRequest(adtechSet);
//Set the app install advertisers in the ad selection manager
mAdSelectionManager.setAppInstallAdvertisers(
request,
mExecutor,
new OutcomeReceiver<Object, Exception>() {
@Override
public void onResult(@NonNull Object ignoredResult) {
Log.v("[your tag]", "Updated app install advertisers");
}
@Override
public void onError(@NonNull Exception error) {
Log.e("[your tag]", "Failed to update app install advertisers", error);
}
});
जब पिछला कोड काम करता है, तो पास किए गए विज्ञापन देने वाले लोग या कंपनियां ये काम कर सकती हैं इंस्टॉल किए गए उन ऐप्लिकेशन को फ़िल्टर कर देगा जिन्हें आपने बिड जनरेट करने के दौरान तय किया था. अगर आपने आपको किसी विज्ञापनदाता को इस ऐप्लिकेशन के इंस्टॉल की ऐक्सेस से हटाना होगा स्थिति है, तो इस कोड को फिर से चलाएं और विज्ञापनदाता की जानकारी हटा दें.
अगला कदम, पब्लिशर ऐप्लिकेशन में विज्ञापन फ़िल्टर करने की सुविधा सेट अप करना है. वह पक्ष जो
विज्ञापन को पब्लिशर ऐप्लिकेशन में दिखाता है (ऐसा सप्लाई-साइड SDK टूल हो सकता है)
को अपना AdFilters
ऑब्जेक्ट, इस बात की जानकारी के साथ शुरू करना होगा कि कौनसे विज्ञापन
हैं, जिन्हें वे फ़िल्टर करना चाहते हैं:
Kotlin
// Instantiate AdFilters object with package names.
val filters: AdFilters = Builder().setAppInstallFilters(
Builder().setPackageNames(setOf("example.target.app")).build()
).build()
Java
// Instantiate AdFilters object with package names.
AdFilters filters = new AdFilters.Builder()
.setAppInstallFilters(
new AppInstallFilters.Builder()
.setPackageNames(Collections.singleton("example.target.app"))
.build())
.build();
डिमांड-साइड पब्लिशर, इसके अंदर मौजूद विज्ञापनों के लिए AdFilter
भी सेट कर सकते हैं
को भी मैनेज किया जा सकता है.
नया AdData
इंस्टैंशिएट करते समय भी AdFilters
को पास किया जा सकता है
ऑब्जेक्ट:
Kotlin
// Instantiate an AdData object with the AdFilters created in the
// previous example.
val appInstallAd: AdData =
Builder().setMetadata("{ ... }") // Valid JSON string
.setRenderUri(Uri.parse("www.example-dsp1.com/.../campaign123.html"))
.setAdFilters(filters).build()
Java
// Instantiate an AdData object with the AdFilters created in the
// previous example.
AdData appInstallAd = new AdData.Builder()
.setMetadata("{ ... }") // Valid JSON string
.setRenderUri(Uri.parse("www.example-dsp1.com/.../campaign123.html"))
.setAdFilters(filters)
.build();
फ़्रीक्वेंसी कैप फ़िल्टर करना
फ़्रीक्वेंसी कैप फ़िल्टर करने की सुविधा की मदद से, विज्ञापन टेक्नोलॉजी से जुड़ी यह सुविधा तय की जा सकती है कि किसी विज्ञापन को कितनी बार दिखाए गए. फ़्रीक्वेंसी कैप फ़िल्टर करने की सुविधा, विज्ञापन के ज़्यादा दिखने की दर को कम करती है और वैकल्पिक किसी विज्ञापन कैंपेन के लिए विज्ञापन चुनना.
फ़्रीक्वेंसी कैप फ़िल्टर के दो मुख्य कॉम्पोनेंट होते हैं: विज्ञापन इवेंट टाइप और कुंजी के नीचे मौजूद होता है. इस्तेमाल किए जा सकने वाले विज्ञापन इवेंट के मौजूदा टाइप:
- जीत (जल्द आ रहा है): जीतने वाले इवेंट से पता चलता है कि विज्ञापन ने नीलामी जीती है. जीतें इवेंट, Protected Audience API से अपने-आप अपडेट हो जाते हैं. इसलिए, ये इवेंट नहीं किए जा सकते उसे सीधे डेवलपर ही कॉल कर सकता है. जीत डेटा केवल दिए गए कस्टम ऑडियंस को टारगेट करता है.
- इंप्रेशन:
reportImpression
से अलग, डिवाइस पर मौजूद कॉलर (SSP या MMP),updateAdCounterHistogram()
का इस्तेमाल करके पॉइंट इन कोड का इस्तेमाल करें. इंप्रेशन इवेंट उन सभी विज्ञापनों को दिखते हैं जो आपके Google Ads खाते से जुड़े हैं DSP के तहत आने वाला है. साथ ही, ये सिर्फ़ उसी कस्टम ऑडियंस में मौजूद विज्ञापनों तक सीमित नहीं हैं. - व्यू: डिवाइस पर मौजूद कॉलर (SSP या MMP) किसी ऐसी जगह पर इवेंट शुरू करता है जहां
कोड डालें, जिसे वे
updateAdCounterHistogram()
को कॉल करने के दौरान चुनते हैं. इवेंट देखें दिए गए DSP से संबंधित सभी विज्ञापनों को दिखाई देगा और केवल उसी कस्टम ऑडियंस. - क्लिक: डिवाइस पर मौजूद कॉलर (SSP या MMP) ने किसी इवेंट में
कोड डालें, जिसे वे
updateAdCounterHistogram()
को कॉल करने के दौरान चुनते हैं. क्लिक इवेंट विज्ञापन, किसी खास डीएसपी से जुड़े सभी विज्ञापनों को दिखेंगे. यह विज्ञापन सिर्फ़ उन विज्ञापनों तक सीमित नहीं है एक जैसी कस्टम ऑडियंस.
पब्लिशर ऐप्लिकेशन में, डिवाइस पर मौजूद SSP या एमएमपी विज्ञापन का अनुरोध करता है
इवेंट. updateAdCounterHistogram()
को कॉल करने पर, फ़्रीक्वेंसी का काउंटर
कैप फ़िल्टर को बढ़ाया जाता है, ताकि भविष्य की नीलामियां अप-टू-डेट रहें
इस बारे में जानकारी कि उपयोगकर्ता किसी विज्ञापन को कितनी बार देख सकता है. विज्ञापन इवेंट के टाइप ये नहीं हैं
संबंधित उपयोगकर्ता की कार्रवाई से ज़बरदस्ती जुड़े होते हैं और
कॉलर को अपना इवेंट सिस्टम व्यवस्थित करने के लिए कहा जाता है. इस समय विज्ञापन काउंटर बढ़ाने के लिए
किसी इवेंट के लिए, उपयोगकर्ता के डिवाइस पर मौजूद कलाकार, नीलामी में जीतने वाले विज्ञापन को चुनने का आईडी उपलब्ध कराता है.
विज्ञापन काउंटर कुंजियां, खरीदार के विज्ञापन की ओर से असाइन किए गए 32-बिट वाले हस्ताक्षर वाले पूर्णांक होते हैं टेक्नोलॉजी के हिसाब से होता है और वे डीएसपी के तय किए गए विज्ञापनों के सेट से जुड़े होते हैं. विज्ञापन से काउंटर की सिर्फ़ उन विज्ञापनों के लिए सीमित हैं जो किसी डीएसपी से जुड़े हैं, ये बटन किसी अन्य टेक्नोलॉजी के हिस्टोग्राम से ओवरलैप किए बिना, उन्हें चुना जाना चाहिए. विज्ञापन काउंटर कुंजियों का इस्तेमाल डीएसपी के विज्ञापनों में या उसके अंदर, डीएसपी के खास आइडेंटिफ़ायर की संख्या बढ़ाने के लिए किया जाता है आगे की नीलामियों से विज्ञापन फ़िल्टर करने के लिए, चुनी गई कस्टम ऑडियंस.
उन विज्ञापनों को प्राथमिकता देने के लिए काउंटर कुंजियों का इस्तेमाल किया जा सकता है जिनके दिखने की संभावना ज़्यादा होती है अन्य विज्ञापनों के साथ उनके इंटरैक्शन के आधार पर किसी उपयोगकर्ता के लिए खरीदार के लिए विज्ञापन टेक्नोलॉजी से जुड़ी खास जानकारी. उदाहरण के लिए, कोई ऐसा विज्ञापन जिसे जीतने वाली विज्ञापन नीलामियों, व्यू, और क्लिक से होने वाली यूज़र ऐक्टिविटी, अनुमानित डेटा पॉइंट. इस बात को समझने के लिए: बाएं हाथ के गोल्फ़ क्लब का विज्ञापन इससे यह पता चल सकता है कि उस उपयोगकर्ता की दिलचस्पी दाएं हाथ के विज्ञापनों में नहीं होगी. ऐप्लिकेशन बाएं हाथ के विज्ञापनों को असाइन की गई काउंटर कुंजी के लिए सेट किए गए फ़्रीक्वेंसी कैप फ़िल्टर को दाएं हाथ के क्लब के लिए विज्ञापनों को फ़िल्टर करें.
अपनी नीलामी में फ़्रीक्वेंसी कैपिंग का इस्तेमाल करने के लिए, आपको सबसे पहले
KeyedFrequencyCap
ऑब्जेक्ट नीचे दिखाए गए हैं:
Kotlin
// Value used when incrementing frequency counter
val adCounterKey = 123
// Frequency cap exceeded after 2 counts
val keyedFrequencyCapForImpression: KeyedFrequencyCap = Builder(
adCounterKey, 2, Duration.ofSeconds(10)
).build()
// Frequency cap exceeded after 1 counts
val keyedFrequencyCapForImpression: KeyedFrequencyCap = Builder(
adCounterKey, 1, Duration.ofSeconds(10)
).build()
Java
// Value used when incrementing frequency counter
int adCounterKey = 123;
// Frequency cap exceeded after 2 counts
KeyedFrequencyCap keyedFrequencyCapForImpression =
new KeyedFrequencyCap.Builder(
adCounterKey, 2, Duration.ofSeconds(10)
).build();
// Frequency Cap exceeded after 1 counts
KeyedFrequencyCap keyedFrequencyCapForClick =
new KeyedFrequencyCap.Builder(
adCounterKey, 1, Duration.ofSeconds(10)
).build();
KeyedFrequencyCap
ऑब्जेक्ट बन जाने के बाद, आप उन्हें किसी
AdFilters
ऑब्जेक्ट.
Kotlin
val filters: AdFilters = Builder()
.setFrequencyCapFilters(
Builder()
.setKeyedFrequencyCapsForImpressionEvents(
ImmutableObject.of(keyedFrequencyCapForImpression)
)
.setKeyedFrequencyCapsForClickEvents(
ImmutableObject.of(keyedFrequencyCapForClick)
)
).build()
Java
AdFilters filters = new AdFilters.Builder()
.setFrequencyCapFilters(new FrequencyCapFilters.Builder()
.setKeyedFrequencyCapsForImpressionEvents(
ImmutableObject.of(keyedFrequencyCapForImpression)
)
.setKeyedFrequencyCapsForClickEvents(
ImmutableObject.of(keyedFrequencyCapForClick)
)
).build();
जब AdFilters
ऑब्जेक्ट में, फ़्रीक्वेंसी कैप फ़िल्टर की जानकारी अपने-आप भर जाती है, तो यह
कस्टम ऑडियंस बनाने के दौरान भेजी जाती है:
Kotlin
// Initialize a custom audience.
val audience: CustomAudience = Builder()
.setBuyer(buyer)
.setName(name)
.setAds(
listOf(
Builder()
.setRenderUri(renderUri)
.setMetadata(JSONObject().toString())
.setAdFilters(filters)
.setAdCounterKeys(adCounterKeys)
.build()
)
).build()
Java
// Initialize a custom audience.
CustomAudience audience = new CustomAudience.Builder()
.setBuyer(buyer)
.setName(name)
.setAds(Collections.singletonList(new AdData.Builder()
.setRenderUri(renderUri)
.setMetadata(new JSONObject().toString())
.setAdFilters(filters)
.setAdCounterKeys(adCounterKeys)
.build()))
.build();
जब कस्टम ऑडियंस में फ़्रीक्वेंसी कैप फ़िल्टर लागू किए जाते हैं, तब SSP ये काम कर सकता है: फिर ज़रूरी क्लिक, व्यू या इंप्रेशन इवेंट शुरू करें.
Kotlin
val callerAdTech: AdTechIdentifier = mAdSelectionConfig.getSeller()
val request: UpdateAdCounterHistogramRequest = Builder(
adSelectionId,
FrequencyCapFilters.AD_EVENT_TYPE_CLICK, //CLICK, VIEW, or IMPRESSION
callerAdTech
).build()
Java
AdTechIdentifier callerAdTech = mAdSelectionConfig.getSeller();
UpdateAdCounterHistogramRequest request =
new UpdateAdCounterHistogramRequest.Builder(
adSelectionId,
FrequencyCapFilters.AD_EVENT_TYPE_CLICK, //CLICK, VIEW, or IMPRESSION
callerAdTech
).build();
जो विज्ञापन पहले से तय फ़्रीक्वेंसी कैप फ़िल्टर की सीमाओं तक पहुंच चुके हैं उन्हें फ़िल्टर करके बाहर कर दिया गया है प्राथमिकता भी तय की गई है. फ़िल्टर करने की प्रोसेस, बिडिंग लॉजिक के लागू होने से पहले होती है साथ ही, बिडिंग और बिडिंग के लिए पेलोड जनरेट हो रहा है नीलामी सेवाओं की नीलामियां होती हैं.यह टूलकिट विज्ञापन तकनीक को विज्ञापन पर फ़ोकस करने के लिए, कस्टम ऑडियंस में उपयोगकर्ताओं और उनके विज्ञापनों के बीच इंटरैक्शन टारगेटिंग (विज्ञापन के लिए सही दर्शक चुनना) के लिए, विज्ञापन के ज़्यादा एक्सपोज़र को कम करना.
नेटवर्क कॉल के बिना प्रासंगिक विज्ञापन फ़िल्टर करना
अगर डिवाइस पर रीमार्केटिंग की कोई मांग नहीं है, तो आप नेटवर्क कॉल के बिना प्रासंगिक विज्ञापन. पहले से बने यूआरआई और सूची के साथ काम के विज्ञापन दिखाने के लिए, प्लैटफ़ॉर्म को बिडिंग के लॉजिक को फिर से हासिल करने की ज़रूरत नहीं है. बिडिंग सिग्नल और स्कोरिंग सिग्नल. चुनने के लिए प्लैटफ़ॉर्म, पहले से बने यूआरआई का इस्तेमाल करता है सबसे ऊंची बोली वाला प्रासंगिक विज्ञापन.
इंतज़ार का समय कम करने के लिए, विज्ञापन टेक्नोलॉजी से जुड़ी सेवा देने वाली कंपनियां, विज्ञापन चुनने का ऐसा फ़्लो चला सकती हैं जिसमें सिर्फ़
नेटवर्क कॉल के बिना विज्ञापन फ़िल्टर करने की सुविधा वाले प्रासंगिक विज्ञापन. यह है
स्कोरिंग सिग्नल के लिए पहले से बने यूआरआई का इस्तेमाल करके हासिल किया जाता है. Google Play Books के साथ काम करने वाली
scoreAds
की सूची के लिए, पहले से बनाए गए यूआरआई के इस्तेमाल के उदाहरण और नाम का सेक्शन
लागू करना.
नेटवर्क कॉल के बिना विज्ञापन चुनने के लिए:
- विज्ञापन फ़िल्टर करने की सुविधा सेट अप करना
- काम के विज्ञापन बनाना
इसका इस्तेमाल करके
AdSelectionConfig
ऑब्जेक्ट बनाएं:- खरीदारों की खाली सूची
- सबसे ऊंची बिड चुनने के लिए, पहले से बना यूआरआई
- कॉन्टेंट के हिसाब से विज्ञापन
- स्कोरिंग सिग्नल के लिए एक खाली यूआरआई. खाली यूआरआई को कि आपको स्कोरिंग के लिए भरोसेमंद सिग्नल फ़ेच करने का इस्तेमाल नहीं करना है:
Uri prebuiltURIScoringUri = Uri.parse("ad-selection-prebuilt://ad-selection/highest-bid-wins/?reportingUrl=your.registered.uri/reporting"); // Initialize AdSelectionConfig AdSelectionConfig adSelectionConfig = new AdSelectionConfig.Builder() .setSeller(seller) .setDecisionLogicUri(prebuiltURIScoringUri) .setCustomAudienceBuyers(Collections.emptyList()) .setAdSelectionSignals(adSelectionSignals) .setSellerSignals(sellerSignals) .setPerBuyerSignals(perBuyerSignals) .setBuyerContextualAds(buyerContextualAds) .setTrustedScoringSignalsUri(Uri.EMPTY) .build();
विज्ञापन चुनना:
adSelectionManager.selectAds( adSelectionConfig, executor, outcomeReceiver);
पहले से बने यूआरआई का इस्तेमाल करके अपना रिपोर्टिंग JavaScript चलाएं
फ़िलहाल, प्राइवसी सैंडबॉक्स प्लैटफ़ॉर्म पर, सिर्फ़ रिपोर्टिंग के लिए बुनियादी JavaScript उपलब्ध है
पहले से बने यूआरआई के लिए लागू करने की सुविधा उपलब्ध है. अगर आपको अपना बजट खुद चलाना है,
कम प्रतीक्षा अवधि वाले विज्ञापन के लिए पहले से बने यूआरआई का इस्तेमाल करते हुए JavaScript की रिपोर्टिंग करना
चयन, आप DecisionLogicUri
को विज्ञापन चयन और
रिपोर्टिंग अवधि तक चलती है.
- पहले से बने यूआरआई का इस्तेमाल करके संदर्भ के हिसाब से विज्ञापन चुनने के लिए चरण चलाएं
रिपोर्टिंग शुरू करने से पहले, अपने
AdSelectionConfig
की कॉपी बनाएंadSelectionConfigWithYourReportingJS = adSelectionConfig.cloneToBuilder() // Replace <urlToFetchYourReportingJS> with your own URL: .setDecisionLogicUri(Uri.parse(<urlToFetchYourReportingJS>)) .build();
इंप्रेशन रिपोर्टिंग चलाएं
// adSelectionId is from the result of the previous selectAds run ReportImpressionRequest request = new ReportImpressionRequest( adSelectionId, adSelectionConfigWithYourReportingJS); adSelectionManager.reportImpression( request, executor, outcomeReceiver);
वॉटरफ़ॉल मीडिएशन चलाना
वॉटरफ़ॉल मीडिएशन की सुविधा के लिए, तीसरे पक्ष के कई एसडीके (3P नेटवर्क) की ज़रूरत होती है इसे पहले पक्ष के SDK टूल मीडिएशन नेटवर्क से बनाया गया हो. वॉटरफ़ॉल मीडिएशन उसी तरह से किया जाता है चाहे नीलामी डिवाइस पर हुई हो या किसी बोली और नीलामी से जुड़ी सेवाएं (B&A).
3P नेटवर्क
3P नेटवर्क को कोई अडैप्टर देना होगा, जो मीडिएशन नेटवर्क को ये काम करने की अनुमति देता है नीलामी चलाने के लिए ज़रूरी तरीके शुरू करना:
- विज्ञापन चुनना शुरू करें
- रिपोर्ट इंप्रेशन
यहां मीडिएशन नेटवर्क अडैप्टर का उदाहरण दिया गया है:
Kotlin
class NetworkAdaptor {
private val adSelectionManager : AdSelectionManager
init {
adSelectionManager = context.getSystemService(AdSelectionManager::class.java)
}
fun selectAds() {...}
fun reportImpressions() {...}
}
Java
class NetworkAdaptor {
AdSelectionManager adSelectionManager;
public NetworkAdaptor() {
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
}
public void selectAds() {...}
public void reportImpressions() {...}
}
हर SDK टूल के पास, विज्ञापन चुनने की सेवा देने वाले मैनेजर और क्लाइंट के साथ-साथ उनके अपने खुद के मैनेजर और क्लाइंट भी होते हैं
selectAds
और reportImpressions
लागू करना. SDK टूल की सेवा देने वाली कंपनियां
डिवाइस पर नीलामियों या B&A के लिए विज्ञापन चुनने का तरीका चलाने से जुड़े सेक्शन
B&A नीलामियों के लिए जानकारी. विज्ञापन की शिकायत करने का तरीका अपनाएं
इंप्रेशन (इसके लिए एक SSP इंप्रेशन रिपोर्टिंग के बाद
रिपोर्टिंग.
मीडिएशन नेटवर्क
3P नेटवर्क की तरह, मीडिएशन नेटवर्क को भी selectAds
और
reportImpression
लागू करना. विज्ञापन चलाने का तरीका जानने के लिए सेक्शन देखें
चुनने और ज़्यादा जानकारी के लिए विज्ञापन इंप्रेशन की रिपोर्ट करने का तरीका देखें.
मीडिएशन नेटवर्क, मीडिएशन चेन को चलाने और मीडिएशन चेन में खुद को शामिल कर लेता है. अगले सेक्शन में, Google Analytics 4 प्रॉपर्टी को सेट अप करने और इस प्रक्रिया को लागू करें.
मीडिएशन चेन और बिड फ़्लोर हासिल करना
मीडिएशन नेटवर्क की ज़िम्मेदारी, पहले पक्ष (1P) को वापस पाने की होती है
कीवर्ड के हिसाब से विज्ञापन, मीडिएशन चेन, और तीसरे पक्ष के नेटवर्क बिड के लिए तय की गई कम से कम रकम (3P). यह
ऐसा, मीडिएशन की मदद से लागू किए गए, संदर्भ के हिसाब से लागू किए गए विज्ञापनों को फिर से हासिल करने के अनुरोध में हो सकता है
नेटवर्क. मीडिएशन चेन से यह तय होता है कि 3P नेटवर्क और 3P यानी तीसरे पक्ष के नेटवर्क के ज़रिए,
और बोली की कम से कम सीमा, नीलामी की प्रोसेस में adSelectionSignals
के तौर पर पास की जा सकती है.
मीडिएशन चेन में नेटवर्क प्लेसमेंट
मीडिएशन SDK, अपने लाइव eCPM के आधार पर, मीडिएशन चेन में खुद को शामिल कर सकता है
1P विज्ञापन बिड में से. Protected Audience API में, विज्ञापन के लिए बिड ओपेक होती हैं. मीडिएशन
किसी दिए गए 1P की तुलना करने के लिए, SDK टूल को AdSelectionFromOutcomesConfig
का इस्तेमाल करना चाहिए
की बोली लगाने के लिए इस्तेमाल की जाती है. अगर 1P बिड
ज़्यादा से ज़्यादा बिड सेट करने का मतलब है कि मीडिएशन SDK टूल को
उस 3P नेटवर्क का.
विज्ञापन चुनना शुरू करें
पहले पक्ष के विज्ञापन उम्मीदवार को फिर से पाने के लिए, मीडिएशन नेटवर्क उपयोगकर्ता के डिवाइस पर विज्ञापन को लागू कर सकता है
विज्ञापन चुनें सेक्शन में दिए गए निर्देशों का पालन करके नीलामी करें. इससे ये जनरेट होते हैं
पहले पक्ष के विज्ञापन उम्मीदवार, बिड, और AdSelectionId
का इस्तेमाल मीडिएशन में किया जाता है
प्रोसेस.
एक AdSelectionFromresultssConfig बनाएं
AdSelectionFromOutcomesConfig
, मीडिएशन नेटवर्क को सूची पास करने की अनुमति देता है
AdSelectionIds
(पिछली नीलामियों के नतीजे), विज्ञापन चुनने के सिग्नल, और
JavaScript फ़ेच करने के लिए यूआरआई, जो कई कैंडिडेट के विज्ञापन चुनता है. सूची
को उनकी बोलियों और सिग्नल के साथ
JavaScript, जो AdSelectionIds
से ज़्यादा बिड लगाने पर उनमें से कोई एक दिखा सकती है
फ़्लोर या कोई भी सेट नहीं किया जा सकता, अगर मीडिएशन चेन जारी रखनी चाहिए.
मीडिएशन नेटवर्क, पहले पक्ष का इस्तेमाल करके AdSelectionFromOutcomesConfig
बनाते हैं
पिछले सेक्शन से AdSelectionId
और 3P नेटवर्क के लिए बिड की कम से कम सीमा
विचार किया जा रहा है. एक नया AdSelectionFromOutcomesConfig
बनाया जाना चाहिए
मीडिएशन चेन के हर चरण के लिए.
Kotlin
fun runSelectOutcome(
adSelectionClient : AdSelectionClient,
outcome1p : AdSelectionOutcome,
network3p : NetworkAdapter) : ListenableFuture<AdSelectionOutcome?> {
val config = AdSelectionFromOutcomesConfig.Builder()
.setSeller(seller)
.setAdSelectionIds(listOf(outcome1p))
.setSelectionSignals({"bid_floor": bid_floor})
.setSelectionLogicUri(selectionLogicUri)
.build()
return adSelectionClient.selectAds(config)
}
Java
public ListenableFuture<AdSelectionOutcome> runSelectOutcome(AdSelectionOutcome outcome1p,
NetworkAdapter network3p) {
AdSelectionFromOutcomesConfig config = new AdSelectionFromOutcomesConfig.Builder()
.setSeller(seller)
.setAdSelectionIds(Collection.singletonList(outcome1p))
.setSelectionSignals({"bid_floor": bid_floor})
.setSelectionLogicUri(selectionLogicUri)
.build();
return adSelectionClient.selectAds(config){}
}
वॉटरफ़ॉल मीडिएशन के लिए, selectAds()
तरीके को बदलने के लिए ज़रूरी है
AdSelectionFromOutcomesConfig
इनपुट, जहां आपको यह जानकारी देनी होगी
ज़रूरी पैरामीटर:
- सेलर: विज्ञापन को चुनने की शुरुआत करने वाले सेलर के विज्ञापन नेटवर्क का आइडेंटिफ़ायर.
- AdSelectionIds: पहले पक्ष के लिए चलाए गए पिछले
selectAds()
की सिंगलटन सूची विज्ञापन - विज्ञापन चुनने के सिग्नल: एक JSON ऑब्जेक्ट, जो स्ट्रिंग के तौर पर क्रम में होता है. इसमें यह शामिल होता है ऐसे सिग्नल जिनका इस्तेमाल खरीदार के लिए बिडिंग लगाने के तरीके के लिए किया जाएगा. इस मामले में, कम से कम बोली शामिल करें यह डेटा, दिए गए 3P नेटवर्क के लिए फिर से हासिल किया जाता है.
- चुनने का लॉजिक यूआरआई: ऐसा एचटीटीपीएस यूआरएल जिस पर विज्ञापन को चुनने के दौरान क्वेरी की जाती है
मीडिएशन नेटवर्क की JavaScript का इस्तेमाल करती है. ज़रूरी शर्तें देखें
फ़ंक्शन सिग्नेचर सबमिट करें. JavaScript को
3P (तीसरे पक्ष का) विज्ञापन, अगर बिड, सेट की गई कम से कम रकम से ज़्यादा है या
null
नहीं दिखाई जाती है. इससे मीडिएशन SDK टूल, मीडिएशन चेन में तब छोटा कर सकता है, जब कोई विजेता मिल गया.
AdSelectionOutcomesConfig
को बनाए जाने के साथ, इसकी selectAds()
विधि को कॉल करें
3P (तीसरे पक्ष का) नेटवर्क, जो चेन में पहले नंबर पर है.
Kotlin
val adSelectionManager = context.getSystemService(AdSelectionManager::class.java)
// Initialize AdSelectionFromOutcomesConfig
AdSelectionFromOutcomesConfig adSelectionFromOutcomesConfig =
AdSelectionFromOutcomesConfig.Builder()
.setSeller(seller)
.setAdSelectionIds(listof(outcome1p))
.setSelectionSignals({"bid_floor": bid_floor})
.setSelectionLogicUri(selectionLogicUri)
.setAdSelectionIds(outcomeIds)
.build()
// Run ad selection with AdSelectionConfig
adSelectionManager.selectAds(
adSelectionFromOutcomesConfig,
executor,
outcomeReceiver)
Java
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
// Initialize AdSelectionFromOutcomesConfig
AdSelectionFromOutcomesConfig adSelectionFromOutcomesConfig =
new AdSelectionFromOutcomesConfig.Builder()
.setSeller(seller)
.setAdSelectionIds(Collection.singletonList(outcome1p))
.setSelectionSignals({"bid_floor": bid_floor})
.setSelectionLogicUri(selectionLogicUri)
.setAdSelectionIds(outcomeIds)
.build();
// Run ad selection with AdSelectionConfig
adSelectionManager.selectAds(
adSelectionFromOutcomesConfig,
executor,
outcomeReceiver);
ऑर्केस्ट्रेट वॉटरफ़ॉल मीडिएशन
मीडिएशन की मदद से लागू होने वाले ऑपरेशन का क्रम नीचे दिया गया है प्रोसेस.
- पहले पक्ष के विज्ञापन को चुनें.
- मीडिएशन चेन में दोहराएं. हर 3P नेटवर्क के लिए, ये काम करें:
AdSelectionFromOutcomeConfig
बिल्ड करें. इसमें 1PoutcomeId
और तीसरे पक्ष के SDK टूल के लिए बिड की कम से कम सीमा.- पिछले चरण में बताए गए कॉन्फ़िगरेशन के साथ
selectAds()
को कॉल करें. - अगर नतीजा खाली नहीं है, तो विज्ञापन दिखाएं.
- SDK टूल के मौजूदा नेटवर्क अडैप्टर के
selectAds()
तरीके से कॉल करें. अगर नतीजे में खाली नहीं है, तो विज्ञापन दिखाएं.
- अगर चेन से कोई विजेता नहीं मिलता है, तो पहले पक्ष का विज्ञापन दिखाएं.
Kotlin
fun runWaterfallMediation(mediationChain : List<NetworkAdapter>)
: Pair<AdSelectionOutcome, NetworkAdapter> {
val outcome1p = runAdSelection()
var outcome : AdSelectionOutcome
for(network3p in mediationChain) {
outcome = runSelectOutcome(outcome1p, network3p)
if (outcome1p.hasOutcome() && outcome.hasOutcome()) {
return Pair(outcome, this)
}
outcome = network3p.runAdSelection()
if(outcome.hasOutcome()) {
return Pair(outcome, network3p)
}
}
return Pair(outcome1p, this)
}
Java
class MediationNetwork {
AdSelectionManager adSelectionManager;
public MediationNetwork() {
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
}
public void runAdSelection() {...}
public void reportImpressions() {...}
public Pair<AdSelectionOutcome, NetworkAdapter> runWaterfallMediation(
List<NetworkAdapter> mediationChain) {
AdSelectionOutcome outcome1p = runAdSelection();
AdSelectionOutcome outcome;
for(NetworkAdapter network3p: mediationChain) {
if (outcome1p.hasOutcome() &&
(outcome = runSelectOutcome(outcome1p, network3p)).hasOutcome()) {
return new Pair<>(outcome, this);
}
if((outcome = network3p.runAdSelection()).hasOutcome()) {
return new Pair<>(outcome, network3p);
}
}
return new Pair<>(outcome1p, this);
}
/* Runs comparison by creating an AdSelectionFromOutcomesConfig */
public AdSelectionOutcome runSelectOutcome(AdSelectionOutcome outcome1p,
NetworkAdapter network3p) { ... }
}
विज्ञापन इंप्रेशन की रिपोर्ट करना
नीलामी के तरीके के आधार पर, विज्ञापन इंप्रेशन की रिपोर्टिंग के दो फ़्लो होते हैं चलाया जाता है. अगर आप एक ही एसएसपी के साथ नीलामी कर रहे हैं, तो इस सेक्शन को फ़ॉलो करें. अगर आपने अगर वॉटरफ़ॉल मीडिएशन को लागू किया जाता है, तो वॉटरफ़ॉल मीडिएशन इंप्रेशन रिपोर्टिंग सेक्शन हो.
एक SSP इंप्रेशन रिपोर्टिंग
विज्ञापन चुनने के वर्कफ़्लो से, जीतने वाले विज्ञापन को चुनने के बाद, आपको
विज्ञापन में हिस्सा लेने वाले बाय-साइड और सेल-साइड प्लैटफ़ॉर्म को मिले इंप्रेशन की रिपोर्ट करना
AdSelectionManager.reportImpression()
तरीके से. किसी विज्ञापन की शिकायत करने के लिए
इंप्रेशन:
AdSelectionManager
ऑब्जेक्ट शुरू करें.- विज्ञापन चुनने के आईडी के साथ
ReportImpressionRequest
ऑब्जेक्ट बनाएं. - एसिंक्रोनस
reportImpression()
तरीके को इस तरीके से कॉल करें:ReportImpressionRequest
ऑब्जेक्ट और काम काExecutor
औरOutcomeReceiver
ऑब्जेक्ट.
Java
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
// Initialize a ReportImpressionRequest
ReportImpressionRequest reportImpressionRequest =
new ReportImpressionRequest.Builder()
.setAdSelectionId(adSelectionId)
.setAdSelectionConfig(adSelectionConfig)
.build();
// Request to report the impression with the ReportImpressionRequest
adSelectionManager.reportImpression(
reportImpressionRequest,
executor,
outcomeReceiver);
Kotlin
val adSelectionManager = context.getSystemService(AdSelectionManager::class.java)
// Initialize a ReportImpressionRequest
val adSelectionConfig: ReportImpressionRequest =
ReportImpressionRequest.Builder()
.setAdSelectionId(adSelectionId)
.setAdSelectionConfig(adSelectionConfig)
.build()
// Request to report the impression with the ReportImpressionRequest
adSelectionManager.reportImpression(
reportImpressionRequest,
executor,
outcomeReceiver)
ReportImpressionRequest
को इन निर्देशों के साथ शुरू करें
पैरामीटर:
- विज्ञापन चुनने का आईडी: यह आईडी सिर्फ़ उस डिवाइस के उपयोगकर्ता के लिए यूनीक होता है, जो विज्ञापन को चुना गया.
- विज्ञापन चुनने का कॉन्फ़िगरेशन: वही कॉन्फ़िगरेशन, जिसका इस्तेमाल
selectAds()
में किया गया है कॉल की पहचान, दिए गए विज्ञापन को चुनने के आईडी से की गई.
एसिंक्रोनस reportImpression()
तरीका, OutcomeReceiver
का इस्तेमाल करता है
ऑब्जेक्ट का इस्तेमाल करके, एपीआई कॉल के नतीजे के बारे में बताएं.
onResult()
कॉलबैक से पता चलता है कि इंप्रेशन की रिपोर्टिंग वाले यूआरएल बनाया गया और अनुरोध शेड्यूल कर दिया गया है.onError()
कॉलबैक, इन संभावित स्थितियों के बारे में बताता है:- अगर कॉल की शुरुआत किसी अमान्य इनपुट आर्ग्युमेंट के साथ की जाती है, तो
AdServicesException
,IllegalArgumentException
को इस तौर पर दिखाता है मदद मिल सकती है. - अन्य सभी त्रुटियों को
AdServicesException
वजह के तौर परIllegalStateException
.
- अगर कॉल की शुरुआत किसी अमान्य इनपुट आर्ग्युमेंट के साथ की जाती है, तो
वॉटरफ़ॉल मीडिएशन इंप्रेशन रिपोर्टिंग
मीडिएशन SDK टूल को, नीलामी में जीतने वाले SDK टूल की जानकारी होनी चाहिए, ताकि वे रिपोर्टिंग फ़्लो. मीडिएशन चेन में शामिल SDK टूल को मध्यस्थ को अपना रिपोर्टिंग फ़्लो ट्रिगर करने के लिए इस्तेमाल करने का तरीका. SDK टूल मीडिएशन वाली नीलामी में हिस्सा लेने वाले लोग, कैंपेन बनाने के लिए ऊपर दिए गए तरीके का पालन कर सकते हैं. रिपोर्ट करने की ज़रूरत नहीं पड़ती.
एसएसपी इस 3P SDK टूल कोड के उदाहरण का इस्तेमाल, इसमें शामिल होने के तरीके के लिए प्रोटोटाइप के तौर पर कर सकते हैं मीडिएशन फ़्लो:
Pair<AdSelectionOutcome, NetworkAdapter> winnerOutcomeAndNetwork =
mediationSdk.orchestrateMediation(mediationChain);
if (winner.first.hasOutcome()) {
winner.second.reportImpressions(winner.first.getAdSelectionId());
इंप्रेशन रिपोर्टिंग एंडपॉइंट
रिपोर्ट इंप्रेशन एपीआई, उन एंडपॉइंट को एचटीटीपीएस जीईटी अनुरोध जारी करता है जो इनसे मिला होता है सेल-साइड प्लैटफ़ॉर्म और बाय-साइड प्लैटफ़ॉर्म को बेहतर बनाने के लिए:
बाय-साइड प्लैटफ़ॉर्म एंडपॉइंट:
- एपीआई, इन कामों के लिए कस्टम ऑडियंस में दिए गए बिडिंग लॉजिक यूआरएल का इस्तेमाल करता है खरीदार का दिया गया JavaScript फ़ेच करें, जिसमें इंप्रेशन रिपोर्टिंग यूआरएल में बदलें.
reportWin()
JavaScript फ़ंक्शन शुरू करें, जो वापस आ सकता है खरीदार के इंप्रेशन रिपोर्टिंग URL को.
सेल-साइड प्लैटफ़ॉर्म एंडपॉइंट:
AdSelectionConfig
में बताए गए डिसिज़न लॉजिक यूआरएल का इस्तेमाल करें ऑब्जेक्ट सबमिट करें.reportResult()
JavaScript फ़ंक्शन को शुरू करें, जिससे विक्रेता के इंप्रेशन रिपोर्टिंग URL में शामिल है.
बोली और नीलामी से जुड़ी सेवाओं की रिपोर्टिंग
बिडिंग और नीलामी से जुड़ी सेवाओं के लिए विज्ञापन इंटरैक्शन रिपोर्टिंग के लिए जनरेट किए गए यूआरएल समेत रिपोर्टिंग की जानकारी यह जानकारी, सर्वर साइड नीलामी से मिले एन्क्रिप्ट (सुरक्षित) किए गए रिस्पॉन्स में शामिल की जाती है. जब रिस्पॉन्स को डिक्रिप्ट किया जाता है और प्लैटफ़ॉर्म पर सही यूआरएल रजिस्टर किए जाते हैं, इसलिए विज्ञापन और इंप्रेशन रिपोर्टिंग ऊपर बताए गए चरणों का पालन करती है.
इंप्रेशन की रिपोर्टिंग के लिए सबसे सही तरीका
reportImpression()
तरीके को इस तरह से डिज़ाइन किया गया है कि
रिपोर्टिंग.
विज्ञापन इंटरैक्शन की रिपोर्ट करना
Protected Audience, रेंडर किया गया विज्ञापन होता है. इसमें देखने का समय, क्लिक, होवर, या कोई अन्य उपयोगी मेट्रिक इकट्ठा की जा सकती है. इन्हें पाने की प्रक्रिया रिपोर्ट के लिए दो चरणों की ज़रूरत होती है. सबसे पहले, खरीदारों और विक्रेताओं को इन रिपोर्ट को अपनी रिपोर्टिंग JavaScript में शामिल करना चाहिए. इसके बाद, क्लाइंट को यह करना होगा तो इन इवेंट की शिकायत करें.
इंटरैक्शन इवेंट पाने के लिए रजिस्टर करना
इंटरैक्शन इवेंट के लिए, खरीदार के reportWin()
में रजिस्टर होता है और
JavaScript फ़ंक्शन का इस्तेमाल करने वाले विक्रेता के reportResult()
JavaScript फ़ंक्शन
प्लैटफ़ॉर्म से मिली जानकारी: registerAdBeacon
. इनाम पाने के लिए रजिस्टर करना
इवेंट रिपोर्ट के लिए, बस अपनी रिपोर्टिंग से प्लैटफ़ॉर्म JavaScript Function को कॉल करें
JavaScript. निम्न स्निपेट खरीदार के reportWin()
का उपयोग कर रहा है, लेकिन वही
वाला तरीका reportResult()
पर लागू होता है.
reportWin(
adSelectionSignals,
perBuyerSignals,
signalsForBuyer,
contextualSignals,
customAudienceSignals) {
...
// Calculate reportingUri, clickUri, viewUri, and hoverUri
registerAdBeacon({"click": clickUri, "view": viewUri, "hover": hoverUri});
return reportingUri;
}
इंटरैक्शन इवेंट की रिपोर्टिंग
इंप्रेशन की रिपोर्ट करने के बाद, क्लाइंट
पहले से रजिस्टर किए गए बाय-साइड और सेल-साइड प्लैटफ़ॉर्म को मिला है.
AdSelectionManager.reportInteraction()
तरीका. किसी विज्ञापन इवेंट की शिकायत करने के लिए:
AdSelectionManager
ऑब्जेक्ट शुरू करें.- विज्ञापन चुनने के आईडी के साथ,
ReportInteractionRequest
ऑब्जेक्ट बनाएं, इंटरैक्शन कुंजी, इंटरैक्शन डेटा, और रिपोर्टिंग डेस्टिनेशन. request
ऑब्जेक्ट के साथ एसिंक्रोनसreportInteraction()
तरीके को कॉल करेंExecutor
औरOutcomeReceiver
ऑब्जेक्ट.
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
// Initialize a ReportInteractionRequest
ReportInteractionRequest request =
new ReportInteractionRequest.Builder()
.setAdSelectionId(adSelectionId)
.setInteractionKey("view")
.setInteractionData("{ viewTimeInSeconds : 1 }") // Can be any string
.setReportingDestinations(
FLAG_REPORTING_DESTINATION_BUYER | FLAG_REPORTING_DESTINATION_SELLER
)
.build();
// Request to report the impression with the ReportImpressionRequest
adSelectionManager.reportInteraction(
reportImpressionRequest,
executor,
outcomeReceiver);
ReportInteractionRequest
को इन निर्देशों के साथ शुरू करें
पैरामीटर:
- विज्ञापन चुनने का आईडी: पहले दिखाए गए विज्ञापन से मिला विज्ञापन चुनने का आईडी
AdSelectionOutcome
. - इंटरैक्शन की: वह स्ट्रिंग की कुंजी जिसे क्लाइंट की ओर से तय किया जाता है और जो कार्रवाई के बारे में बताता है रिपोर्ट किया जा रहा है. यह उस कुंजी से मेल खाना चाहिए जिसे विक्रेता ने रजिस्टर किया था या खरीदार रिपोर्टिंग JavaScript फ़ंक्शन में.
- इंटरैक्शन डेटा: ऐसी स्ट्रिंग जिसमें इवेंट में शामिल किया जाने वाला डेटा होता है ताकि रिपोर्टिंग सर्वर पर वापस पोस्ट किया जा सके.
- रिपोर्टिंग डेस्टिनेशन: एक बिट मास्क, जो यह तय करता है कि इवेंट को
खरीदार, विक्रेता या दोनों को रिपोर्ट करता हो. ये फ़्लैग इस दिशा में दिए गए हैं:
बिटवाइज़ का इस्तेमाल करके प्लैटफ़ॉर्म और फ़ाइनल डेस्टिनेशन मास्क बनाए जा सकते हैं
कार्रवाइयां. एक मंज़िल की रिपोर्ट करने के लिए आप इसके ज़रिए दिए गए फ़्लैग का इस्तेमाल कर सकते हैं:
प्लैटफ़ॉर्म का इस्तेमाल करना शुरू किया. एक से ज़्यादा डेस्टिनेशन को रिपोर्ट करने के लिए, बिट के अनुसार
फ़्लैग की वैल्यू को जोड़ने के लिए, या (
|
) का इस्तेमाल करें.
एसिंक्रोनस reportInteraction()
तरीका, OutcomeReceiver
का इस्तेमाल करता है
ऑब्जेक्ट का इस्तेमाल करके, एपीआई कॉल के नतीजे के बारे में बताएं.
onResult()
कॉलबैक से पता चलता है कि रिपोर्ट इंटरैक्शन कॉल मान्य है.onError()
कॉलबैक, इन संभावित स्थितियों के बारे में बताता है:- अगर कॉल बैकग्राउंड में चल रहा ऐप्लिकेशन इस्तेमाल के दौरान किया जाता है, तो
गड़बड़ी की जानकारी के साथ
IllegalStateException
दिखाया जाता है. - अगर क्लाइंट को
reportInteraction()
को कॉल करने से रोका जाता है, तोLimitExceededException
लौटाया जाता है. - अगर पैकेज को Privacy सुरक्षित API (एपीआई) को कॉल करने के लिए रजिस्टर नहीं किया गया है, तो
SecurityException()
लौटाया गया. - अगर ऐप्लिकेशन रिपोर्टिंग इंटरैक्शन, कॉल करने वाले ऐप्लिकेशन से अलग है
selectAds()
,IllegalStateException
दिखाया जाता है.
- अगर कॉल बैकग्राउंड में चल रहा ऐप्लिकेशन इस्तेमाल के दौरान किया जाता है, तो
गड़बड़ी की जानकारी के साथ
- अगर उपयोगकर्ता ने प्राइवसी सैंडबॉक्स एपीआई को चालू करने की सहमति नहीं दी है, तो कॉल चुपचाप विफल हो जाएगा.
इंटरैक्शन रिपोर्टिंग एंडपॉइंट
रिपोर्ट इंटरैक्शन एपीआई, यहां दिए गए एंडपॉइंट पर एचटीटीपीएस पोस्ट अनुरोध भेजता है सेल-साइड प्लैटफ़ॉर्म और बाय-साइड प्लैटफ़ॉर्म को बेहतर बनाने में मदद करता है. सुरक्षित ऑडियंस रिपोर्टिंग JavaScript में बताए गए यूआरआई के साथ इंटरैक्शन कुंजियों का मिलान करेगा रिपोर्ट किए जा रहे हर इंटरैक्शन के लिए, हर एंडपॉइंट को एक पोस्ट अनुरोध जारी करें. अनुरोध के कॉन्टेंट का टाइप एक सादा टेक्स्ट है. इसमें मुख्य हिस्सा इंटरैक्शन डेटा.
इंटरैक्शन रिपोर्टिंग के लिए सबसे सही तरीका
reportInteraction()
को इस तरह से डिज़ाइन किया गया है कि आप आसानी से, ज़्यादा से ज़्यादा लक्ष्यों को हासिल कर सकें
एचटीटीपी पीओएसटी से रिपोर्ट करने की सुविधा मिलती है.
बैकग्राउंड में रोज़ होने वाला अपडेट
कस्टम ऑडियंस बनाते समय, आपका ऐप्लिकेशन या SDK टूल, कस्टम ऑडियंस शुरू कर सकता है मेटाडेटा. इसके अलावा, प्लैटफ़ॉर्म, पसंद के मुताबिक बनाई गई इन चीज़ों को अपडेट कर सकता है बैकग्राउंड में रोज़ अपडेट होने की प्रोसेस से जुड़ा ऑडियंस मेटाडेटा.
- उपयोगकर्ता के बिडिंग सिग्नल
- भरोसेमंद बिडिंग का डेटा
AdData
सूची
यह प्रोसेस, कस्टम ऑडियंस में तय किए गए हर दिन के अपडेट वाले यूआरएल के मुताबिक क्वेरी करती है और यूआरएल, JSON फ़ॉर्मैट में जवाब दे सकता है.
- JSON के रिस्पॉन्स में, काम करने वाला कोई भी ऐसा मेटाडेटा फ़ील्ड हो सकता है जिसकी ज़रूरत हो अपडेट नहीं किया जा सकता.
- हर JSON फ़ील्ड की अलग से पुष्टि की जाती है. क्लाइंट किसी भी गलत फ़ील्ड, जिनके कारण में उस विशेष फ़ील्ड में कोई अपडेट नहीं हुआ जवाब को प्राथमिकता दें.
- कोई एचटीटीपी रिस्पॉन्स या खाली JSON ऑब्जेक्ट "
{}
" नतीजे में नहीं मिला मेटाडेटा के अपडेट. - जवाब वाले मैसेज का साइज़ 10 केबी से ज़्यादा नहीं होना चाहिए.
- एचटीटीपीएस का इस्तेमाल करने के लिए, सभी यूआरआई ज़रूरी हैं.
trusted_bidding_uri
के साथ खरीदार का ETLD+1 एक ही होना चाहिए.
उदाहरण: बैकग्राउंड में हर दिन के अपडेट के लिए JSON रिस्पॉन्स
{
"user_bidding_signals" : { ... }, // Valid JSON object
"trusted_bidding_data" : {
"trusted_bidding_uri" : 'example-dsp1-key-value-service.com',
"trusted_bidding_keys" : [ 'campaign123', 'campaign456', ... ]
},
'ads' : [
{
"render_uri" : 'www.example-dsp1.com/.../campaign123.html',
'metadata' : { ... } // Valid JSON object
},
{
"render_uri" : 'www.example-dsp1.com/.../campaign456.html',
'metadata' : { ... } // Valid JSON object
},
...
]
}
विज्ञापन चुनने के लिए JavaScript
विज्ञापन चुनने का वर्कफ़्लो, खरीदार के दिए गए और सेलर से मिला JavaScript.
खरीदार से मिला JavaScript, बिडिंग लॉजिक यूआरएल से फ़ेच किया जाता है. यह यूआरएल, कस्टम ऑडियंस बनाएं. लौटाए गए JavaScript में ये फ़ंक्शन शामिल होने चाहिए:
सेलर से मिला JavaScript, इसमें बताए गए डिसिज़न लॉजिक से फ़ेच किया जाता है
विज्ञापन चुनने के एपीआई के लिए, AdSelectionConfig
पैरामीटर. रिटर्न
JavaScript में नीचे दिए गए फ़ंक्शन शामिल होने चाहिए:
generateBid()
function generateBid(
ad,
auction_signals,
per_buyer_signals,
trusted_bidding_signals,
contextual_signals,
user_signals,
custom_audience_bidding_signals) {
return {'status': 0, 'ad': ad, 'bid': ad.metadata.result };
}
इनपुट पैरामीटर:
ad
: इस फ़ॉर्मैट वाला JSON ऑब्जेक्टvar ad = { 'render_url': url, 'metadata': json_metadata };
auction_signals, per_buyer_signals
: नीलामी में बताए गए JSON ऑब्जेक्ट कॉन्फ़िगरेशन ऑब्जेक्टcustom_audience_bidding_signals
: प्लैटफ़ॉर्म से जनरेट किया गया JSON ऑब्जेक्ट. कॉन्टेंट बनाने इस JSON ऑब्जेक्ट का फ़ॉर्मैट यह है:var custom_audience_signals = { "owner":"ca_owner", "buyer":"ca_buyer", "name":"ca_name", "activation_time":"ca_activation_time_epoch_ms", "expiration_time":"ca_expiration_time_epoch_ms", "user_bidding_signals":"ca_user_bidding_signals" }
कहां:
owner
,buyer
, औरname
ऐसी स्ट्रिंग है जिसे विज्ञापन चुनने में हिस्सा लेने वाली कस्टम ऑडियंस का एक ही नामactivation_time
औरexpiration_time
चालू होने के समय और कस्टम ऑडियंस की समयसीमा खत्म होने की तारीख, जिसे Unix के बाद से सेकंड के तौर पर दिखाया जाता है Epochca_user_bidding_signals
एक JSON स्ट्रिंग है, जो बनाए जाने के समयCustomAudience
में सेuserBiddingSignals
फ़ील्डtrusted_bidding_signals, contextual_signals
औरuser_signals
, JSON फ़ॉर्मैट में हैं ऑब्जेक्ट हैं. उन्हें खाली ऑब्जेक्ट के तौर पर पास किया जाता है और उन्हें अपने-आप डाल दिया जाता है रिलीज़ हो रही हैं. प्लैटफ़ॉर्म, इनके फ़ॉर्मैट को लागू नहीं करता और इसे मैनेज किया जाता है से बचा जा सकता है.
नतीजा:
ad
: वह विज्ञापन है जिसके बारे में बिड बताती है. स्क्रिप्ट को इसकी कॉपी वापस लौटाने की अनुमति है अलग-अलग मेटाडेटा के साथ मिलने वाला विज्ञापन. इसकीrender_url
प्रॉपर्टी विज्ञापन में कोई बदलाव होने की उम्मीद है.bid
: इस विज्ञापन की बोली की वैल्यू दिखाने वाली फ़्लोट वैल्यूstatus
: एक पूर्णांक वैल्यू, जो:0
: लागू करने के लिए1
: (या कोई भी नॉन-ज़ीरो वैल्यू). ऐसा तब किया जाता है, जब कोई इनपुट सिग्नल अमान्य हो. तय सीमा में अगर जनरेट-बिड से एक नॉन-ज़ीरो वैल्यू मिलती है, तो बिडिंग प्रोसेस सीए के सभी विज्ञापनों के लिए अमान्य है
scoreAd()
function scoreAd(
ad,
bid,
ad_selection_config,
seller_signals,
trusted_scoring_signals,
contextual_signal,
user_signal,
custom_audience_signal) {
return {'status': 0, 'score': score };
}
इनपुट पैरामीटर:
ad
:generateBid
दस्तावेज़ देखेंbid
: विज्ञापन के लिए बोली मानad_selection_config
: JSON ऑब्जेक्ट जोselectAds
एपीआई काAdSelectionConfig
पैरामीटर. फ़ॉर्मैट यह है:var ad_selection_config = { 'seller': 'seller', 'decision_logic_url': 'url_of_decision_logic', 'custom_audience_buyers': ['buyer1', 'buyer2'], 'auction_signals': auction_signals, 'per_buyer_signals': per_buyer_signals, 'contextual_ads': [ad1, ad2] }
seller_signals
:sellerSignals
से लिए गए JSON ऑब्जेक्टAdSelectionConfig
एपीआई पैरामीटरtrusted_scoring_signal
:adSelectionSignals
फ़ील्ड से पढ़ा गयाAdSelectionConfig
एपीआई पैरामीटरcontextual_signals, user_signals
: JSON ऑब्जेक्ट. फ़िलहाल, इन्हें इस खाते से पास किया गया है: खाली हैं और उन्हें अगली रिलीज़ में भर दिया जाएगा. इनका फ़ॉर्मैट इसे प्लैटफ़ॉर्म की मदद से लागू किया जाता है और इसे विज्ञापन टेक्नोलॉजी से मैनेज किया जाता है.per_buyer_signals
: JSON ऑब्जेक्ट, जोperBuyerSignal
AdSelectionConfig
एपीआई पैरामीटर, मौजूदा कस्टम पैरामीटर को कुंजी के तौर पर इस्तेमाल कर रहा है दर्शक खरीदार. अगर मैप में दी गई जानकारी के लिए कोई एंट्री नहीं है, तो खाली करें खरीदार.
आउटपुट:
score
: इस विज्ञापन के स्कोर की वैल्यू दिखाने वाला फ़्लोट वैल्यूstatus
: एक पूर्णांक वैल्यू, जो:- 0: बेहतर तरीके से लागू करने के लिए
- 1: अगर
customAudienceSignals
अमान्य है - 2:
AdSelectionConfig
के अमान्य होने पर - 3: यदि कोई भी अन्य सिग्नल अमान्य है
- कोई भी गैर-शून्य मान की वजह से प्रक्रिया पूरी नहीं होती, मान यह तय करता है कि किस तरह का अपवाद ट्रिगर किया गया है
selectOutcome()
function selectOutcome(
outcomes,
selection_signals) {
return {'status': 0, 'result': null};
}
इनपुट पैरामीटर:
outcomes
: JSON ऑब्जेक्ट{"id": id_string, "bid": bid_double}
selection_signals
: नीलामी के कॉन्फ़िगरेशन में बताए गए JSON ऑब्जेक्ट ऑब्जेक्ट
आउटपुट:
status
: सफलता के लिए0
, विफलता के लिए शून्य नहींresult
: कोई एक नतीजा पास किया गया या नहीं बताया गया
reportResult()
function reportResult(ad_selection_config, render_url, bid, contextual_signals) {
return {
'status': status,
'results': {'signals_for_buyer': signals_for_buyer, 'reporting_url': reporting_url }
};
}
इनपुट पैरामीटर:
ad_selection_config
:scoreAds
का दस्तावेज़ देखेंrender_url
: जीतने वाले विज्ञापन का रेंडर यूआरएलbid
: जीतने वाले विज्ञापन के लिए ऑफ़र की गई बिडcontextual_signals
:generateBid
का दस्तावेज़ देखें
आउटपुट:
- सफलता के लिए
status: 0
और असफल होने के लिए शून्य नहीं results
: JSON ऑब्जेक्ट में:signals_for_buyer
: एक JSON ऑब्जेक्ट, जिसेreportWin
को पास किया जाता है फ़ंक्शनreporting_url
: ऐसा यूआरएल जिसका इस्तेमाल प्लैटफ़ॉर्म, खरीदार को इंप्रेशन
reportWin()
function reportWin(
ad_selection_signals,
per_buyer_signals,
signals_for_buyer,
contextual_signals,
custom_audience_signals) {
return {'status': 0, 'results': {'reporting_url': reporting_url } };
}
इनपुट पैरामीटर:
ad_selection_signals, per_buyer_signals
: इसके लिए दस्तावेज़ देखेंscoreAd
signals_for_buyer
:reportResult
से मिला JSON ऑब्जेक्टcontextual_signals, custom_audience_signals
: इसके लिए दस्तावेज़ देखेंgenerateBid
आउटपुट:
- सफलता के लिए
status: 0
और असफल होने के लिए शून्य नहीं results
: एक JSON ऑब्जेक्ट जिसमें यह शामिल है:reporting_url
: ऐसा यूआरएल जिसका इस्तेमाल प्लैटफ़ॉर्म, विक्रेता पर इंप्रेशन
registerAdBeacon()
function registerAdBeacon(
beacons
)
इनपुट पैरामीटर:
beacons
: एक ऑब्जेक्ट जिसमें इंटरैक्शन कुंजियों के की-वैल्यू पेयर होते हैं और रिपोर्टिंग यूआरआई. फ़ॉर्मैट:let beacons = { 'interaction_key': 'reporting_uri', 'interaction_key': 'reporting_uri', ... }
interaction_key
: इवेंट को दिखाने वाली स्ट्रिंग. इसका इस्तेमाल यह करता है: बाद में जब वे इवेंट इंटरैक्शन की रिपोर्ट करते हैं.reporting_uri
जिसे सूचित किया जाना चाहिए. इस कुंजी का मिलान इनके बीच होना चाहिए खरीदार या विक्रेता क्या रजिस्टर कर रहा है और विक्रेता क्या रिपोर्ट कर रहा है.reporting_uri
: इवेंट की रिपोर्ट पाने के लिए यूआरआई. यह खास होना चाहिए रिपोर्ट किए जा रहे इवेंट टाइप में. इसे हैंडल करने के लिए पीओएसटी अनुरोध स्वीकार करना ज़रूरी है इवेंट के साथ रिपोर्ट किया गया कोई भी डेटा शामिल करें.
उदाहरण के लिए:
let beacons = { 'click': 'https://reporting.example.com/click_event', 'view': 'https://reporting.example.com/view_event' }
विज्ञापन चुनाव पहले से बने यूआरआई
पहले से बने यूआरआई की मदद से, विज्ञापन टेक्नोलॉजी में काम करने वाले लोग या कंपनियां विज्ञापन के लिए JavaScript फ़ंक्शन चुन सकती हैं
AdSelectionConfig
में, चुने जाने वाले फ़ैसले का आधार और
AdSelectionFromOutcomesConfig
क्लास. पहले से बने यूआरआई के लिए नेटवर्क की ज़रूरत नहीं होती है
संबंधित JavaScript को डाउनलोड करने का अनुरोध करता है. विज्ञापन टेक्नोलॉजी, पहले से बने यूआरआई का इस्तेमाल कर सकती हैं
इसके लिए, रजिस्टर किए गए डोमेन को सेट अप करने की ज़रूरत नहीं होती.
पहले से बने यूआरआई को इस फ़ॉर्मैट का इस्तेमाल करके बनाया जाता है:
ad-selection-prebuilt:<use-case>/<name>?<required-script-generation-parameters>
प्राइवसी सैंडबॉक्स प्लैटफ़ॉर्म, यहां दी गई जानकारी का इस्तेमाल करके JavaScript उपलब्ध कराता है रनटाइम में यूआरआई.
IllegalArgumentException
को फेंका जाता है, अगर:
- कोई भी ज़रूरी पैरामीटर, यूआरआई में मौजूद नहीं है
- यूआरआई में ऐसे पैरामीटर हैं जिनकी पहचान नहीं की जा सकी
पहले से बने यूआरआई के इस्तेमाल के उदाहरण और नाम
इस्तेमाल का पहला उदाहरण: विज्ञापन चुनना
ad-selection
के इस्तेमाल के उदाहरण के तहत, पहले से बने यूआरआई का इस्तेमाल
selectAds(AdSelectionConfig)
फ़्लो.
पहले से बने यूआरआई का नाम: highest-bid-wins
यह पहले से बने यूआरआई एक JavaScript उपलब्ध कराता है, जो सबसे ऊंची बोली वाले विज्ञापन को चुनता है
बोली लगाने के बाद. यह रिपोर्ट करने के लिए बुनियादी रिपोर्टिंग फ़ंक्शन भी उपलब्ध कराता है
विजेता हैं render_uri
और bid
.
ज़रूरी पैरामीटर
reportingUrl
: वह बेस रिपोर्टिंग यूआरएल जिसे
जीतने वाले विज्ञापन के render_uri
और bid
:
<reportingUrl>?render_uri=<renderUriOfWinnigAd>&bid=<bidOfWinningAd>
इस्तेमाल किए जाने से जुड़ी जानकारी
अगर आपका बेस रिपोर्टिंग यूआरएल https://www.ssp.com/reporting
है, तो पहले से बनाया गया
यूआरआई:
`ad-selection-prebuilt://ad-selection/highest-bid-wins/?reportingUrl=https://www.ssp.com/reporting`
इस्तेमाल का दूसरा उदाहरण: ad-selection-from-outcomes
ad-selection-from-outcomes
के इस्तेमाल के उदाहरण के तहत, पहले से बने यूआरआई
selectAds(AdSelectionFromOutcomesConfig)
वर्कफ़्लो.
पहले से बने यूआरआई का नाम: waterfall-mediation-truncation
पहले से बने waterfall-mediation-truncation
यूआरआई से JavaScript मिलती है जो
इस नीति की मदद से, वॉटरफ़ॉल मीडिएशन ट्रंकेशन लॉजिक लागू किया जाता है, जहां JavaScript
पहले पक्ष का विज्ञापन, अगर bid
, bid floor
से ज़्यादा या उसके बराबर है और
ऐसा नहीं होने पर null
दिखता है.
ज़रूरी पैरामीटर
bidFloor
: getSelectionSignals()
में पास की गई बिड की कम से कम वैल्यू की कुंजी
इसकी तुलना मीडिएशन SDK टूल के विज्ञापन से की जाती है.
इस्तेमाल किए जाने से जुड़ी जानकारी
अगर आपके विज्ञापन चुनने के सिग्नल {"bid_floor": 10}
जैसे दिखते हैं, तो नतीजे के तौर पर
पहले से बनाया गया यूआरआई यह होगा:
`ad-selection-prebuilt://ad-selection-from-outcomes/waterfall-mediation-truncation/?bidFloor=bid_floor`
टेस्ट करना
Protected Audience API का इस्तेमाल शुरू करने में आपकी मदद करने के लिए, हमने एक सैंपल Kotlin और Java में मौजूद ऐप्लिकेशन. इन्हें GitHub पर देखा जा सकता है.
ज़रूरी शर्तें
Protected Audience API को विज्ञापन चुनने के दौरान, कुछ JavaScript की ज़रूरत होती है और इंप्रेशन रिपोर्टिंग. इसमें JavaScript को उपलब्ध कराने के दो तरीके हैं. टेस्टिंग एनवायरमेंट:
- ज़रूरी एचटीटीपीएस एंडपॉइंट वाला सर्वर चलाएं, जो JavaScript को रिटर्न करता हो
- किसी स्थानीय सोर्स से ज़रूरी कोड देकर, रिमोट फ़ेच करने की सुविधा को बदलें
इनमें से किसी भी तरीके को अपनाने के लिए, इंप्रेशन को मैनेज करने के लिए एचटीटीपीएस एंडपॉइंट सेट अप करना ज़रूरी है रिपोर्टिंग.
एचटीटीपीएस एंडपॉइंट
विज्ञापन चुनने और इंप्रेशन की रिपोर्टिंग की जांच करने के लिए, आपको सात एचटीटीपीएस सेट अप करने होंगे ऐसे एंडपॉइंट जिन्हें आपका टेस्ट डिवाइस या एम्युलेटर ऐक्सेस कर सकता है:
- खरीदार का एंडपॉइंट, जो बिडिंग लॉजिक JavaScript का इस्तेमाल करता है.
- एक एंडपॉइंट जो बिडिंग के सिग्नल दिखाता है.
- सेलर एंडपॉइंट जो डिसिज़न लॉजिक JavaScript दिखाता है.
- यह एक ऐसा एंडपॉइंट होता है जो स्कोरिंग सिग्नल दिखाता है.
- सफल खरीदार इंप्रेशन रिपोर्टिंग एंडपॉइंट.
- सेलर इंप्रेशन रिपोर्टिंग एंडपॉइंट.
- कस्टम ऑडियंस को रोज़ अपडेट देने के लिए एंडपॉइंट.
सुविधा के लिए, GitHub रेपो जांच के लिए बेसिक JavaScript कोड उपलब्ध कराता है के मकसद से बनाया गया है. इसमें OpenAPI सेवा की परिभाषाएं भी शामिल हैं, जिन्हें इन पर डिप्लॉय किया जा सकता है जो मॉक या माइक्रोसर्विस प्लैटफ़ॉर्म के साथ काम करता हो. ज़्यादा जानकारी के लिए, प्रोजेक्ट देखें रीडमी.
JavaScript की रिमोट फ़ेच करने की सेटिंग बदलें
इस सुविधा का इस्तेमाल, शुरू से आखिर तक पूरी जांच करने के लिए किया जा सकता है. रिमोट को बदलने के लिए फ़ेच करने के लिए, आपके ऐप्लिकेशन को डीबग मोड में चलना चाहिए और डेवलपर के लिए सेटिंग और टूल चालू होने चाहिए.
अपने ऐप्लिकेशन के लिए डीबग मोड को चालू करने के लिए, नीचे दी गई लाइन को ऐप्लिकेशन एट्रिब्यूट की वैल्यू को सबमिट करें:
<application
android:debuggable="true">
इन बदलावों को इस्तेमाल करने के तरीके के उदाहरण के लिए, कृपया सुरक्षित GitHub पर Audience API का सैंपल ऐप्लिकेशन.
विज्ञापन चुनने के रूटीन मैनेज करने के लिए, आपको अपना कस्टम JavaScript जोड़ना होगा जैसे कि बिडिंग, स्कोरिंग फै़सले, और रिपोर्टिंग. Google Analytics 4 पर जाकर बेसिक JavaScript कोड ऐसे उदाहरण जो GitHub के रेपो में दिए गए सभी ज़रूरी अनुरोधों को मैनेज करते हैं. Protected Audience API का सैंपल ऐप्लिकेशन, इससे कोड को पढ़ने का तरीका बताता है उस फ़ाइल को कॉपी कर सकता है और उसे ओवरराइड के तौर पर इस्तेमाल करने के लिए तैयार कर सकता है.
सेल-साइड और बाय-साइड JavaScript फ़ेचिंग को बदला जा सकता है अलग से, हालांकि कोई भी JavaScript चलाने के लिए आपको एचटीटीपीएस एंडपॉइंट की ज़रूरत पड़ती है आप इन चीज़ों के लिए बदलाव नहीं कर रहे हैं. ज़्यादा जानकारी के लिए, कृपया README देखें इन मामलों को हैंडल करने वाले सर्वर को सेट अप करने के तरीके के बारे में जानकारी.
सिर्फ़ उन कस्टम ऑडियंस के लिए JavaScript फ़ेच करने की सेटिंग को बदला जा सकता है जो आपके पैकेज का मालिकाना हक होता है.
सेल-साइड JavaScript को बदलना
सेल-साइड JavaScript में बदलाव को सेट अप करने के लिए, नीचे बताए गए तरीके का इस्तेमाल करें निम्न कोड उदाहरण में:
AdSelectionManager
ऑब्जेक्ट शुरू करें.- यहां से
TestAdSelectionManager
के लिए रेफ़रंस पाएंAdSelectionManager
ऑब्जेक्ट. - कोई
AdSelectionConfig
ऑब्जेक्ट बनाएं. - किसी
AddAdSelectionOverrideRequest
कोAdSelectionConfig
ऑब्जेक्ट औरString
JavaScript दिखा रहा है का इस्तेमाल कैसे करना है. - एसिंक्रोनस
overrideAdSelectionConfigRemoteInfo()
तरीके को इस तरीके से कॉल करें:AddAdSelectionOverrideRequest
ऑब्जेक्ट और काम काExecutor
औरOutcomeReceiver
ऑब्जेक्ट.
Kotlin
val testAdSelectionManager: TestAdSelectionManager =
context.getSystemService(AdSelectionManager::class.java).getTestAdSelectionManager()
// Initialize AdSelectionConfig =
val adSelectionConfig = new AdSelectionConfig.Builder()
.setSeller(seller)
.setDecisionLogicUrl(decisionLogicUrl)
.setCustomAudienceBuyers(customAudienceBuyers)
.setAdSelectionSignals(adSelectionSignals)
.setSellerSignals(sellerSignals)
.setPerBuyerSignals(perBuyerSignals)
.build()
// Initialize AddAddSelectionOverrideRequest
val request = AddAdSelectionOverrideRequest.Builder()
.setAdSelectionConfig(adSelectionConfig)
.setDecisionLogicJs(decisionLogicJS)
.build()
// Run the call to override the JavaScript for the given AdSelectionConfig
// Note that this only takes effect in apps marked as debuggable
testAdSelectionManager.overrideAdSelectionConfigRemoteInfo(
request,
executor,
outComeReceiver)
Java
TestAdSelectionManager testAdSelectionManager =
context.getSystemService(AdSelectionManager.class).getTestAdSelectionManager();
// Initialize AdSelectionConfig =
AdSelectionConfig adSelectionConfig = new AdSelectionConfig.Builder()
.setSeller(seller)
.setDecisionLogicUrl(decisionLogicUrl)
.setCustomAudienceBuyers(customAudienceBuyers)
.setAdSelectionSignals(adSelectionSignals)
.setSellerSignals(sellerSignals)
.setPerBuyerSignals(perBuyerSignals)
.build();
// Initialize AddAddSelectionOverrideRequest
AddAdSelectionOverrideRequest request = AddAdSelectionOverrideRequest.Builder()
.setAdSelectionConfig(adSelectionConfig)
.setDecisionLogicJs(decisionLogicJS)
.build();
// Run the call to override the JavaScript for the given AdSelectionConfig
// Note that this only takes effect in apps marked as debuggable
testAdSelectionManager.overrideAdSelectionConfigRemoteInfo(
request,
executor,
outComeReceiver);
इन विकल्पों के बारे में ज़्यादा जानकारी पाने के लिए, विज्ञापन को चुनना सेक्शन पर जाएं
AdSelectionConfig
में दिए गए फ़ील्ड दिखाते हैं. मुख्य अंतर यह है
कि decisionLogicUrl को प्लेसहोल्डर वैल्यू पर सेट किया जा सकता है
अनदेखा किया गया.
विज्ञापन चुनने के दौरान इस्तेमाल किए गए JavaScript को बदलने के लिए,
decisionLogicJs
में सेलर साइड के फ़ंक्शन सिग्नेचर सही होने चाहिए.
JavaScript फ़ाइल को स्ट्रिंग के रूप में पढ़ने के तरीके का उदाहरण देखने के लिए, कृपया
GitHub पर Protected Audience API का सैंपल ऐप्लिकेशन.
एसिंक्रोनस overrideAdSelectionConfigRemoteInfo()
तरीका
एपीआई कॉल के नतीजे को सिग्नल देने के लिए OutcomeReceiver
ऑब्जेक्ट.
onResult()
कॉलबैक से पता चलता है कि बदलाव सही तरीके से लागू हुआ है.
selectAds()
को आने वाले समय में किए जाने वाले कॉल के लिए, यह किया जाएगा कि Google आपके चुने हुए विकल्प के मुताबिक है या नहीं.
दिया गया होगा, जिसे आपने ओवरराइड के रूप में पास किया है.
onError()
कॉलबैक, दो संभावित शर्तों को दिखाता है:
- अगर अमान्य आर्ग्युमेंट के साथ ओवरराइड करने की कोशिश की जाती है, तो
AdServiceException
,IllegalArgumentException
को वजह. - अगर किसी ऐसे ऐप्लिकेशन में बदलाव करने की कोशिश की जाती है जो डीबग मोड में नहीं चल रहा हो
डेवलपर के लिए सेटिंग और टूल चालू हैं, तो
AdServiceException
से पता चलता है कि वजह के तौर परIllegalStateException
.
सेल-साइड ओवरराइड रीसेट करें
इस सेक्शन में यह माना गया है कि आपने सेल-साइड JavaScript को बदल दिया है और
आपके पास TestAdSelectionManager
का रेफ़रंस है और
पिछले सेक्शन में इस्तेमाल किया गया AdSelectionConfig
.
सभी AdSelectionConfigs
के लिए, बदलावों को रीसेट करने के लिए:
- एसिंक्रोनस
resetAllAdSelectionConfigRemoteOverrides()
तरीके को कॉल करें संबंधितOutcomeReceiver
ऑब्जेक्ट के साथ.
Kotlin
// Resets overrides for all AdSelectionConfigs
testAadSelectionManager.resetAllAdSelectionConfigRemoteOverrides(
outComeReceiver)
Java
// Resets overrides for all AdSelectionConfigs
testAdSelectionManager.resetAllAdSelectionConfigRemoteOverrides(
outComeReceiver);
सेल-साइड ओवरराइड रीसेट करने के बाद, selectAds()
को किए गए कॉल किसी भी विकल्प का इस्तेमाल करते हैं
decisionLogicUrl को AdSelectionConfig
में सेव किया जाता है, ताकि
ज़रूरी JavaScript फ़ेच करें.
अगर resetAllAdSelectionConfigRemoteOverrides()
को कॉल नहीं किया जाता, तो
OutComeReceiver.onError()
कॉलबैक से AdServiceException
मिलता है.
अगर किसी ऐसे ऐप्लिकेशन के ज़रिए बदलावों को हटाने की कोशिश की जाती है जो डीबग मोड में नहीं चल रहा है
डेवलपर के लिए सेटिंग और टूल चालू होने पर, AdServiceException
से पता चलता है कि
वजह के तौर पर IllegalStateException
.
बाय-साइड JavaScript को बदलना
- कस्टम ऑडियंस में शामिल होने के लिए बताया गया तरीका अपनाएं
- खरीदार के साथ
AddCustomAudienceOverrideRequest
बनाएं और उन कस्टम ऑडियंस का नाम जिसे आपको बदलना है. इसके अलावा, बिडिंग का लॉजिक और ऐसा डेटा जिसे आपको ओवरराइड के तौर पर इस्तेमाल करना है - एसिंक्रोनस
overrideCustomAudienceRemoteInfo()
तरीके को इस तरीके से कॉल करें:AddCustomAudienceOverrideRequest
ऑब्जेक्ट और काम का हैExecutor
औरOutcomeReceiver
ऑब्जेक्ट
Kotlin
val testCustomAudienceManager: TestCustomAudienceManager =
context.getSystemService(CustomAudienceManager::class.java).getTestCustomAudienceManager()
// Join custom audience
// Build the AddCustomAudienceOverrideRequest
val request = AddCustomAudienceOverrideRequest.Builder()
.setBuyer(buyer)
.setName(name)
.setBiddingLogicJs(biddingLogicJS)
.setTrustedBiddingSignals(trustedBiddingSignals)
.build()
// Run the call to override JavaScript for the given custom audience
testCustomAudienceManager.overrideCustomAudienceRemoteInfo(
request,
executor,
outComeReceiver)
Java
TestCustomAudienceManager testCustomAudienceManager =
context.getSystemService(CustomAudienceManager.class).getTestCustomAudienceManager();
// Join custom audience
// Build the AddCustomAudienceOverrideRequest
AddCustomAudienceOverrideRequest request =
AddCustomAudienceOverrideRequest.Builder()
.setBuyer(buyer)
.setName(name)
.setBiddingLogicJs(biddingLogicJS)
.setTrustedBiddingSignals(trustedBiddingSignals)
.build();
// Run the call to override JavaScript for the given custom audience
testCustomAudienceManager.overrideCustomAudienceRemoteInfo(
request,
executor,
outComeReceiver);
खरीदार और नाम के लिए वही मान हैं, जिनका इस्तेमाल एसेट बनाने के लिए किया जाता है का भी इस्तेमाल कर सकते हैं. इन फ़ील्ड के बारे में ज़्यादा जानें.
इसके अलावा, दो अतिरिक्त पैरामीटर भी तय किए जा सकते हैं:
biddingLogicJs
: यह JavaScript, खरीदार के लॉजिक को ध्यान में रखकर बनाया जाता है. इस JavaScript का इस्तेमाल किया जाता है का विकल्प होता है. इसमें ज़रूरी फ़ंक्शन सिग्नेचर देखें JavaScript.trustedBiddingSignals
: विज्ञापन चुनने के दौरान इस्तेमाल किए जाने वाले बिडिंग सिग्नल. जांच के लिए, यह एक खाली स्ट्रिंग हो सकती है.
एसिंक्रोनस overrideCustomAudienceRemoteInfo()
तरीका
OutcomeReceiver
ऑब्जेक्ट, एपीआई कॉल के नतीजे को सिग्नल देने के लिए है.
onResult()
कॉलबैक से पता चलता है कि बदलाव सही तरीके से लागू हुआ है.
selectAds()
को किए जाने वाले कॉल में, बिडिंग और रिपोर्टिंग के लॉजिक का इस्तेमाल किया जाता है
आपने उसे ओवरराइड के रूप में पास कर लिया है.
onError()
कॉलबैक, दो संभावित शर्तों को दिखाता है.
- अगर अमान्य आर्ग्युमेंट के साथ ओवरराइड करने की कोशिश की जाती है, तो
AdServiceException
,IllegalArgumentException
को वजह. - अगर किसी ऐसे ऐप्लिकेशन में बदलाव करने की कोशिश की जाती है जो डीबग मोड में नहीं चल रहा हो
डेवलपर के लिए सेटिंग और टूल चालू हैं, तो
AdServiceException
से पता चलता है कि वजह के तौर परIllegalStateException
.
बाय-साइड के बदलावों को रीसेट करें
इस सेक्शन में यह माना जाता है कि आपने बाय-साइड JavaScript को बदल दिया है और
आपके पास इसमें इस्तेमाल किए गए TestCustomAudienceManager
का रेफ़रंस है
पिछला सेक्शन देखें.
सभी कस्टम ऑडियंस के लिए, सेटिंग में बदलाव करने का तरीका:
- एसिंक्रोनस
resetAllCustomAudienceOverrides()
तरीके को इसके साथ कॉल करें काम केExecutor
औरOutcomeReceiver
ऑब्जेक्ट.
Kotlin
// Resets overrides for all custom audiences
testCustomAudienceManager.resetCustomAudienceRemoteInfoOverride(
executor,
outComeReceiver)
Java
// Resets overrides for all custom audiences
testCustomAudienceManager.resetCustomAudienceRemoteInfoOverride(
executor,
outComeReceiver)
बाय-साइड ओवरराइड को रीसेट करने के बाद, selectAds()
पर किए जाने वाले कॉल
इनमें से किसी भी biddingLogicUrl
और trustedBiddingData
का इस्तेमाल करें
ज़रूरी फ़ेच करने के लिए, CustomAudience
में सेव किया गया
JavaScript.
अगर resetCustomAudienceRemoteInfoOverride()
को कॉल नहीं किया जाता, तो
OutComeReceiver.onError()
कॉलबैक से AdServiceException
मिलता है.
अगर किसी ऐसे ऐप्लिकेशन के ज़रिए बदलावों को हटाने की कोशिश की जाती है जो डीबग मोड में नहीं चल रहा है
अगर डेवलपर के लिए सेटिंग और टूल चालू हैं, तो AdServiceException
से पता चलता है कि
वजह के तौर पर IllegalStateException
.
रिपोर्टिंग सर्वर सेट अप करें
जब रिमोट फ़ेच करने के बदलावों का इस्तेमाल किया जाता है, तब भी आपको सर्वर सेट अप करना होगा कि आपका डिवाइस या एम्युलेटर, रिपोर्टिंग इवेंट का जवाब देने के लिए पहुंच सके. आसान जांच के लिए, 200 दिखाने वाला एंडपॉइंट काफ़ी है. GitHub रेपो में शामिल है OpenAPI सेवा की परिभाषाएं, जिन्हें इस्तेमाल किए जा सकने वाले मॉक या माइक्रोसर्विस प्लैटफ़ॉर्म. ज़्यादा जानकारी के लिए, प्रोजेक्ट देखें रीडमी.
OpenAPI की परिभाषाएं खोजते समय, Reporting-server.json देखें.
इस फ़ाइल में एक सिंपल एंडपॉइंट है, जो 200 दिखाता है. यह एचटीटीपी को दिखाता है
रिस्पॉन्स कोड डालें. इस एंडपॉइंट का इस्तेमाल selectAds()
के दौरान किया जाता है. इससे यह पता चलता है कि
Protected Audience API, जिससे इंप्रेशन की रिपोर्टिंग पूरी हुई.
जांच करने के लिए उपलब्ध सुविधाएं
- पिछली गतिविधियों के आधार पर, कस्टम ऑडियंस में शामिल होने या उसे छोड़ने और सेट अप करने की प्रैक्टिस करें उपयोगकर्ता कार्रवाइयां.
- होस्ट की गई JavaScript की मदद से, डिवाइस पर विज्ञापन को चुनने की प्रोसेस शुरू करें जा सकता है.
- देखें कि कस्टम ऑडियंस सेटिंग के साथ ऐप्लिकेशन का जुड़ाव, विज्ञापन पर कैसे असर डाल सकता है चुने जा सकते हैं.
- विज्ञापन चुनने के बाद, कसरत के इंप्रेशन की रिपोर्टिंग.
सीमाएं
नीचे दी गई टेबल में, Protected Audience API की प्रोसेसिंग की सीमाओं के बारे में बताया गया है. ये सीमाएं, सुझाव/राय या शिकायत के आधार पर बदल सकती हैं. इसके लिए जिन सुविधाओं का इस्तेमाल किया जा रहा है उनके बारे में जानने के लिए, प्रॉडक्ट की जानकारी पढ़ें.
कॉम्पोनेंट | सीमा की जानकारी | सीमा की वैल्यू |
---|---|---|
कस्टम ऑडियंस (कनाडा) | हर कनाडा में ज़्यादा से ज़्यादा विज्ञापनों की संख्या | 100 |
हर आवेदन के लिए सीए की ज़्यादा से ज़्यादा संख्या | 1000 | |
सीए (सर्टिफ़िकेट देने वाली संस्था) बनाने वाले ऐप्लिकेशन की ज़्यादा से ज़्यादा संख्या | 1000 | |
CA बनाए जाने के समय से लेकर उसके चालू होने में लगने वाली ज़्यादा से ज़्यादा देरी | 60 दिन | |
ऐक्टिवेशन के समय से लेकर, सीए (सर्टिफ़िकेट देने वाली संस्था) की समयसीमा खत्म होने की ज़्यादा से ज़्यादा अवधि | 60 दिन | |
डिवाइस पर सीए की ज़्यादा से ज़्यादा संख्या | 4000 | |
सीए के नाम का ज़्यादा से ज़्यादा साइज़ | 200 बाइट | |
हर दिन फ़ेच किए जाने वाले यूआरआई का ज़्यादा से ज़्यादा साइज़ | 400 बाइट | |
बिडिंग लॉजिक यूआरआई का ज़्यादा से ज़्यादा साइज़ | 400 बाइट | |
भरोसेमंद बिडिंग डेटा का ज़्यादा से ज़्यादा साइज़ | 10 केबी | |
उपयोगकर्ता के बिडिंग सिग्नल का ज़्यादा से ज़्यादा साइज़ | 10 केबी | |
leaveCustomAudience हर खरीदार के लिए ज़्यादा से ज़्यादा कॉल दर |
1 प्रति सेकंड | |
joinCustomAudience हर खरीदार के लिए ज़्यादा से ज़्यादा कॉल दर |
1 प्रति सेकंड | |
CA बैकग्राउंड फ़ेच | कनेक्शन समयबाह्य | 5 सेकंड |
एचटीटीपी पढ़ने का टाइम आउट | 30 सेकंड | |
डाउनलोड किए जाने वाले वीडियो का ज़्यादा से ज़्यादा साइज़ | 10 केबी | |
फ़ेच करने के लिए, ज़्यादा से ज़्यादा अवधि | 5 मिनट | |
हर नौकरी में ज़्यादा से ज़्यादा सीए (सर्टिफ़िकेट देने वाली संस्था) को अपडेट किया जा सकता है | 1000 | |
विज्ञापन चुनना | खरीदारों की ज़्यादा से ज़्यादा संख्या | अभी तय नहीं है |
हर खरीदार के लिए ज़्यादा से ज़्यादा सीए सर्टिफ़िकेट | अभी तय नहीं है | |
नीलामी में विज्ञापनों की ज़्यादा से ज़्यादा संख्या | अभी तय नहीं है | |
शुरुआती कनेक्शन का टाइम आउट | 5 सेकंड | |
कनेक्शन रीड टाइम आउट | 5 सेकंड | |
पूरे AdSelection में लागू होने वाला ज़्यादा से ज़्यादा समय |
10 सेकंड | |
AdSelection में हर सीए की बिडिंग लागू करने का ज़्यादा से ज़्यादा समय |
5 सेकंड | |
AdSelection में स्कोर करने का ज़्यादा से ज़्यादा समय |
5 सेकंड | |
AdSelection में हर खरीदार के हिसाब से लागू करने का ज़्यादा से ज़्यादा समय |
अभी तय नहीं है | |
विज्ञापन चुनने/सेलर/हर खरीदार के सिग्नल का ज़्यादा से ज़्यादा साइज़ | अभी तय नहीं है | |
सेलर/खरीदार स्क्रिप्ट का ज़्यादा से ज़्यादा साइज़ | अभी तय नहीं है | |
selectAds के लिए कॉल करने की ज़्यादा से ज़्यादा दर |
1 क्यूपीएस | |
इंप्रेशन की रिपोर्टिंग | परसिस्टेंस से विज्ञापन चुनने का कम से कम समय | 24 घंटे |
चुने गए स्टोरेज की ज़्यादा से ज़्यादा संख्या | अभी तय नहीं है | |
रिपोर्टिंग के आउटपुट यूआरएल का ज़्यादा से ज़्यादा साइज़ | अभी तय नहीं है | |
इंप्रेशन रिपोर्टिंग के लिए ज़्यादा से ज़्यादा समय | अभी तय नहीं है | |
सूचना कॉल के लिए इतनी बार कोशिश की जा सकती है | अभी तय नहीं है | |
कनेक्शन टाइम आउट हो गया | 5 सेकंड | |
reportImpression को लागू करने का ज़्यादा से ज़्यादा समय |
2 सेकंड | |
reportImpressions के लिए कॉल करने की ज़्यादा से ज़्यादा दर |
1 क्यूपीएस | |
इवेंट की रिपोर्टिंग | हर नीलामी में हर खरीदार के लिए बीकन की ज़्यादा से ज़्यादा संख्या | 10 |
हर नीलामी में हर सेलर के लिए बीकन की ज़्यादा से ज़्यादा संख्या |
10 |
|
इवेंट कुंजी का ज़्यादा से ज़्यादा साइज़ |
40 बाइट |
|
इवेंट डेटा का ज़्यादा से ज़्यादा साइज़ |
64 केबी |
|
विज्ञापन | विज्ञापन सूची का अधिकतम आकार | सभी ने 10 केबी शेयर किया
AdData अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
एक सीए में दस्तावेज़ों को |
यूआरएल | इनपुट के तौर पर ली गई किसी भी यूआरएल स्ट्रिंग की ज़्यादा से ज़्यादा लंबाई | अभी तय नहीं है |
JavaScript | लागू होने का ज़्यादा से ज़्यादा समय | इंप्रेशन रिपोर्टिंग के लिए बोली-प्रक्रिया और स्कोरिंग के लिए 1 सेकंड |
ज़्यादा से ज़्यादा इस्तेमाल की गई मेमोरी | 10 MB |
गड़बड़ियों और समस्याओं की शिकायत करना
आपके सुझाव, शिकायत या राय, Android पर प्राइवसी सैंडबॉक्स का अहम हिस्सा हैं! हमें बताएं Android पर प्राइवसी सैंडबॉक्स को बेहतर बनाने के लिए, आपको मिली समस्या की
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर लिंक टेक्स्ट दिखता है
- Protected Audience API की मदद से, कस्टम ऑडियंस टारगेटिंग की सुविधा
- प्रॉडक्ट की जानकारी
- Protected Audience: इंटिग्रेशन गाइड