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

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

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

हर PPAPI को ऐक्सेस करने के लिए, आपके पास Ad Services 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" />

इसके अलावा, Attribution Reporting API की मदद से डीबग रिपोर्ट पाने के लिए, AD_ID की अनुमति शामिल करें:

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

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

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

<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 एपीआई उपलब्ध कराया गया है. उदाहरण के लिए, TopicsManager क्लास के लिए एपीआई रेफ़रंस से पता चलता है कि यह "Ad Services एक्सटेंशन 4 में जोड़ा गया" है. AdServices एपीआई वाले 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 हो.