Android के लिए AdServices कॉन्फ़िगर करें

एपीआई से जुड़ी अनुमतियों का एलान करने के लिए, नीचे दिए गए निर्देशों का पालन करें. साथ ही, टारगेट एपीआई से मैनेज किए जा रहे संसाधनों के लिए SDK टूल का ऐक्सेस कॉन्फ़िगर करें.

AdServices API से जुड़ी खास अनुमतियों का एलान करें

हर PPAPI को ऐक्सेस करने के लिए, विज्ञापन सेवा normal की अनुमति ज़रूरी है. अपने ऐप्लिकेशन या SDK टूल में ज़रूरी एपीआई से जुड़ी सही ऐक्सेस अनुमतियों के बारे में अपने मेनिफ़ेस्ट में बताएं.

Attribution Reporting API:

<uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION" />

Attribution Reporting API (डीबग रिपोर्ट के साथ):

<uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION" />
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />

Protected Audience / कस्टम ऑडियंस एपीआई:

<uses-permission android:name="android.permission.ACCESS_ADSERVICES_CUSTOM_AUDIENCE" />

Topics API:

<uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS" />

इसके अलावा, एट्रिब्यूशन रिपोर्टिंग एपीआई का इस्तेमाल करके डीबग रिपोर्ट पाने के लिए, AD_ID अनुमति शामिल करें:

<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />

अगर आपका प्रोजेक्ट मॉड्यूल या SDK टूल पर निर्भर है, तो हो सकता है कि वे पहले ही अपनी मेनिफ़ेस्ट फ़ाइलों में 'विज्ञापन सेवा' के लिए ज़रूरी अनुमतियों का एलान कर दें. डिफ़ॉल्ट रूप से, gradle बिल्ड, सभी मेनिफ़ेस्ट फ़ाइलों को आपके ऐप्लिकेशन में पैक की गई एक ही मेनिफ़ेस्ट फ़ाइल में मर्ज कर देता है. यह पुष्टि करने के लिए कि सही अनुमतियों का इस्तेमाल किया जा रहा है, मर्ज किए गए मेनिफ़ेस्ट व्यू का इस्तेमाल करें.

अगर आपको किसी अनुमति को SDK टूल जैसी डिपेंडेंसी के ज़रिए अपने ऐप्लिकेशन में मर्ज होने से रोकना है, तो खास अनुमतियों के लिए remove नोड मार्कर शामिल करें. इस उदाहरण में बताया गया है कि विषयों की अनुमति को मर्ज होने से कैसे रोका जा सकता है.

<uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS"
    tools:node="remove" />

एपीआई के हिसाब से विज्ञापन सेवाएं कॉन्फ़िगर करें

PPAPI ऐक्सेस अनुमतियों की तरह ही, हर एपीआई के लिए विज्ञापन सेवाओं के कॉन्फ़िगरेशन में एक संबंधित एंट्री होती है. यह कॉन्फ़िगरेशन आपको उन संसाधनों का बेहतर कंट्रोल देता है जिन्हें आपके ऐप्लिकेशन या एम्बेड किए गए SDK टूल में, एपीआई से मैनेज किया जाता है. अपने मेनिफ़ेस्ट में adservicesConfig प्रॉपर्टी बताएं, जैसा कि इस उदाहरण में दिखाया गया है:

<application ...>
      ...
    <property android:name="android.adservices.AD_SERVICES_CONFIG"
        android:resource="@xml/ad_services_config" />

      ...
</application>

मेनिफ़ेस्ट में बताए गए विज्ञापन सेवाओं के एक्सएमएल रिसॉर्स के बारे में बताएं, जैसे कि res/xml/ad_services_config.xml. आपके ऐप्लिकेशन या एम्बेड किए गए SDK टूल पर लागू होने वाले, निजता बनाए रखने वाले हर एपीआई के लिए, किसी भी कॉलर को ऐक्सेस देने के लिए, allowAllToAccess एट्रिब्यूट को true पर सेट करें.

इसके अलावा, हर विज्ञापन टेक्नोलॉजी के लिए सटीक एपीआई ऐक्सेस देने के लिए, allowAdPartnersToAccess एट्रिब्यूट का इस्तेमाल किया जा सकता है. आपको रजिस्ट्रेशन से मिले डेवलपर रजिस्ट्रेशन खाता आईडी की सूची देनी होगी. अगर allowAllToAccess एट्रिब्यूट को true पर सेट किया गया है, तो इस एट्रिब्यूट को allowAdPartnersToAccess एट्रिब्यूट में बताए गए रजिस्ट्रेशन वाले किसी भी खाता आईडी के मुकाबले प्राथमिकता दी जाएगी.

विज्ञापन टेक्नोलॉजी प्लैटफ़ॉर्म को यह भी पक्का करना चाहिए कि उनके ऐप्लिकेशन क्लाइंट, विज्ञापन सेवाओं के कॉन्फ़िगरेशन में, निजता बनाए रखने वाले ज़रूरी एपीआई का ऐक्सेस सही तरीके से दें.

नीचे दिए गए उदाहरण में, निजता बनाए रखने वाले सभी एपीआई के किसी रजिस्ट्रेशन खाता आईडी को ऐक्सेस करने की अनुमति देने के लिए, ब्रॉड ऐक्सेस तय करने का तरीका बताया गया है:

<ad-services-config>
   <!-- Attribution API -->
   <attribution allowAllToAccess="true" />

   <!-- Topics API -->
   <topics allowAllToAccess="true" />

   <!-- Protected Audience on Android API -->
   <custom-audiences allowAllToAccess="true" />
</ad-services-config>

नीचे दिए गए उदाहरण में, रजिस्ट्रेशन वाले किसी खाता आईडी के लिए, निजता बनाए रखने वाले हर एपीआई के लिए, बारीकी से ऐक्सेस करने का तरीका बताया गया है:

<ad-services-config>
    <!-- Attribution API -->
    <attribution allowAdPartnersToAccess="ENROLLMENT-ID" allowAllToAccess="false" />

    <!-- Topics API -->
    <includes-sdk-library name="ENROLLMENT-ID" />
    <topics allowAdPartnersToAccess="ENROLLMENT-ID" allowAllToAccess="false" />

    <!-- Protected Audience on Android API -->
    <custom-audiences allowAdPartnersToAccess="ENROLLMENT-ID" allowAllToAccess="false" />
</ad-services-config>

Jetpack लाइब्रेरी डिपेंडेंसी का एलान करें

Privacy Sandbox के 'निजता बनाए रखने वाले एपीआई' के साथ इंटिग्रेट करने के लिए, ads-adservices Jetpack लाइब्रेरी 1.0.0-beta01 या इसके बाद के वर्शन का इस्तेमाल करें. इस लाइब्रेरी का इस्तेमाल करके, अपने ऐप्लिकेशन को प्लैटफ़ॉर्म-लेवल की जानकारी से अलग रखा जा सकता है. साथ ही, निजता बनाए रखने वाले एपीआई के साथ इंटिग्रेशन को आसान बनाया जा सकता है.

  1. अपने प्रोजेक्ट में Maven का डेटा स्टोर करने की जगह जोड़ें.
  2. अपने ऐप्लिकेशन या मॉड्यूल की build.gradle फ़ाइल में, ads-adservices Jetpack लाइब्रेरी डिपेंडेंसी बताएं.
  3. androidx.privacysandbox.ads.adservices.* पैकेज के एपीआई इस्तेमाल करें.
  4. Ads-adservices की Jetpack लाइब्रेरी में पहले से ही Kotlin कोरूटीन की सहायता मिलती है. कोरूटीन स्कोप मैनेज करने के लिए, आपको अपने प्रोजेक्ट के हिसाब से सही लाइफ़साइकल अवेयर डिपेंडेंसी शामिल करनी पड़ सकती हैं.

देखें कि विज्ञापन सेवा एक्सटेंशन वर्शन उपलब्ध है या नहीं

अगर निजता बनाए रखने वाले एपीआई के साथ इंटिग्रेट करने के लिए, विज्ञापन सेवाओं की Jetpack लाइब्रेरी का इस्तेमाल किया जा रहा है, तो लाइब्रेरी obtain() फ़ंक्शन में, अनुरोध किए गए एपीआई की उपलब्धता की जांच करती है. अगर डिवाइस पर अनुरोध किया गया एपीआई उपलब्ध नहीं है, तो फ़ंक्शन शून्य दिखाता है. इस उदाहरण में बताया गया है कि Topics API के लिए TopicsManager को कैसे शुरू किया जाता है. यह निजता बनाए रखने वाले दूसरे एपीआई को ऐक्सेस करने के लिए भी इसी तरह काम करता है.

Kotlin

import androidx.privacysandbox.ads.adservices.topics.TopicsManager

// The initialization function will return null if the requested
// functionality is not available on the device.
val topicsManager = TopicsManager.obtain(context)

Java

import androidx.privacysandbox.ads.adservices.topics.TopicsManager;

// The initialization function will return null if the requested
// functionality is not available on the device.
TopicsManager topicsManager = TopicsManager.obtain(context);

अगर एक्सटेंशन SDK में सीधे AdServices एपीआई का इस्तेमाल किया जा रहा है, तो AdServices एक्सटेंशन के उस वर्शन पर जाएं जिसमें वे AdServices एपीआई शामिल हों जिनका आपको इस्तेमाल करना है. एपीआई रेफ़रंस में, आपको उस वर्शन की पहचान करने का विकल्प मिलता है जिसमें कोई खास AdServices API पेश किया गया है. उदाहरण के लिए, TopicsManager क्लास के एपीआई रेफ़रंस से पता चलता है कि इसे "Ad Services एक्सटेंशन 4 में जोड़ा गया" है. AdServices API वाले SDK टूल एक्सटेंशन की पुष्टि करने के लिए, यहां दी गई शर्तों के साथ जांच करें.

Kotlin

import android.os.ext.SdkExtensions

if (SDK_INT >= Build.VERSION_CODES.R && // The extensions API is available since R.
   SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4) {

    // AdServices API is available.
...
}

Java

import android.os.ext.SdkExtensions;

if (SDK_INT >= Build.VERSION_CODES.R && // The extensions API is available since R.
   SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4) {

    // AdServices API is available.
...
}

फ़ोरग्राउंड के ऐक्सेस की सीमा

पारदर्शिता बनाए रखने के लिए, SDK टूल के रनटाइम और निजता बनाए रखने वाले एपीआई का ऐक्सेस, सिर्फ़ उन ऐप्लिकेशन को दिया जा सकता है जिनमें गतिविधि दिख रही हो या IMPORTANCE_FOREGROUND के RunningAppProcessInfo का इस्तेमाल किया गया हो.