ऐसा विज्ञापन आईडी पाएं जिसे उपयोगकर्ता अपने हिसाब से सेट कर सकता है इसका हिस्सा है Android Jetpack.
यह सबसे सही तरीका है कि उपयोगकर्ता की निजता की सुरक्षा के लिए, सभी Android ऐप्लिकेशन इस्तेमाल करें ऐसे आइडेंटिफ़ायर जिन्हें उपयोगकर्ता रीसेट कर सकता है. इनमें से एक आइडेंटिफ़ायर, विज्ञापन आईडी है. इसका इस्तेमाल, विज्ञापन के इस्तेमाल के उदाहरणों के लिए किसी उपयोगकर्ता की यूनीक पहचान करने के लिए किया जाता है. जैसे, उपयोगकर्ता के हिसाब से विज्ञापन दिखाना.
अपने ऐप्लिकेशन को चलाने वाले सभी डिवाइसों पर, विज्ञापन ट्रैकिंग के लिए स्टैंडर्ड तरीके का इस्तेमाल करने के लिए, विज्ञापन आईडी लाइब्रेरी का इस्तेमाल किया जा सकता है. यह लाइब्रेरी, Android 4.0 (एपीआई लेवल 14) और इसके बाद के वर्शन वाले डिवाइसों पर उपलब्ध है. इसमें सिस्टम-लेवल पर विज्ञापन देने वाली कंपनियों के साथ इंटरैक्ट करने के लिए इंटरफ़ेस तय किया गया है. इस इंटरफ़ेस की मदद से, आपके ऐप्लिकेशन को विज्ञापन आईडी की एक जैसी वैल्यू मिल पाती हैं.
विज्ञापन आईडी लाइब्रेरी में शामिल विज्ञापन देने वाली कंपनी, सेटिंग स्क्रीन खोलने के लिए एक स्टैंडर्ड इंटेंट भी तय करती है. विज्ञापन देने वाली कंपनी, इस इंटेंट को लागू करती है. इस सेटिंग स्क्रीन पर, उपयोगकर्ता अपना विज्ञापन आईडी रीसेट कर सकते हैं और ऑप्ट आउट कर सकते हैं दिलचस्पी के मुताबिक विज्ञापन दिखाने होते हैं.
इस गाइड में, हर डिवाइस के उपयोगकर्ता के हिसाब से एक जैसा विज्ञापन आईडी पाने के लिए, विज्ञापन आईडी लाइब्रेरी के क्लाइंट मॉड्यूल का इस्तेमाल करने का तरीका बताया गया है. इसके बाद, इस गाइड में लाइब्रेरी के आर्किटेक्चर के बारे में खास जानकारी दी गई है.
अपने क्लाइंट ऐप्लिकेशन को कॉन्फ़िगर करना
विज्ञापन आईडी लाइब्रेरी के क्लाइंट मॉड्यूल के साथ इंटरैक्ट करके, आपका ऐप्लिकेशन एक समान विज्ञापन आईडी हासिल कर सकता है, जो ऐप के साथ सहभागिता करना.
विज्ञापन आईडी यूनिवर्सल यूनीक आईडी के वर्शन 3 का इस्तेमाल करके दिखाया जाता है आइडेंटिफ़ायर (यूयूआईडी) फ़ॉर्मैट या 128-बिट के बराबर फ़ॉर्मैट:
38400000-8cf0-11bd-b23e-10b96e40000d
विज्ञापन आईडी लाइब्रेरी, विज्ञापन देने वालों के लिए ज़रूरी रिटर्न वैल्यू को सामान्य बनाती है इस फ़ॉर्मैट का इस्तेमाल करने वाले आईडी.
अपने ऐप्लिकेशन के लिए, उपयोगकर्ता के रीसेट किए जा सकने वाले विज्ञापन आईडी को फिर से पाने के लिए, इसके लिए, नीचे दिया गया तरीका अपनाएं:
AdvertisingIdClient.isAdvertisingIdProviderAvailable()
को कॉल करके देखें कि विज्ञापन देने वाली कोई कंपनी उपलब्ध है या नहीं. अगर यह तरीका इस्तेमाल करने परfalse
, आपके ऐप्लिकेशन को किसी भी ज़रूरी विज्ञापन-ट्रैकिंग के लिए, किसी दूसरे तरीके का इस्तेमाल करना चाहिए इस्तेमाल के उदाहरण.इस नंबर पर कॉल करके, विज्ञापन आइडेंटिफ़ायर की जानकारी पाएं. इसमें विज्ञापन आईडी भी शामिल है
AdvertisingIdClient.getAdvertisingIdInfo()
. Advertising ID लाइब्रेरी, इस तरीके को वर्कर्स थ्रेड पर लागू करती है. साथ ही, 10 सेकंड के कनेक्शन टाइम आउट का इस्तेमाल करती है.
नीचे दिए गए कोड स्निपेट में, विज्ञापन देने वाली कंपनी से अन्य जानकारी के साथ विज्ञापन आईडी हासिल करने का तरीका बताया गया है:
app/build.gradle
Groovy
dependencies { implementation 'androidx.ads:ads-identifier:1.0.0-alpha01' // Used for the calls to addCallback() in the snippets on this page. implementation 'com.google.guava:guava:28.0-android' }
Kotlin
dependencies { implementation("androidx.ads:ads-identifier:1.0.0-alpha01") // Used for the calls to addCallback() in the snippets on this page. implementation("com.google.guava:guava:28.0-android") }
MyAdIdClient
Kotlin
// Used for the call to addCallback() within this snippet. import com.google.common.util.concurrent.Futures.addCallback private fun determineAdvertisingInfo() { if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) { val advertisingIdInfoListenableFuture = AdvertisingIdClient.getAdvertisingIdInfo(applicationContext) addCallback(advertisingIdInfoListenableFuture, object : FutureCallback<AdvertisingIdInfo> { override fun onSuccess(adInfo: AdvertisingIdInfo?) { val id: String = adInfo?.id val providerPackageName: String = adInfo?.providerPackageName val isLimitTrackingEnabled: Boolean = adInfo?.isLimitTrackingEnabled } // Any exceptions thrown by getAdvertisingIdInfo() // cause this method to be called. override fun onFailure(t: Throwable) { Log.e("MY_APP_TAG", "Failed to connect to Advertising ID provider.") // Try to connect to the Advertising ID provider again or fall // back to an ad solution that doesn't require using the // Advertising ID library. } }, Executors.newSingleThreadExecutor()) } else { // The Advertising ID client library is unavailable. Use a different // library to perform any required ad use cases. } }
Java
// Used for the call to addCallback() within this snippet. import com.google.common.util.concurrent.Futures; private void determineAdvertisingInfo() { if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) { ListenableFuture<AdvertisingIdInfo> advertisingIdInfoListenableFuture = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext()); Futures.addCallback(advertisingIdInfoListenableFuture, new FutureCallback<AdvertisingIdInfo>() { @Override public void onSuccess(AdvertisingIdInfo adInfo) { String id = adInfo.getId(); String providerPackageName = adInfo.getProviderPackageName(); boolean isLimitTrackingEnabled = adInfo.isLimitTrackingEnabled(); // Any exceptions thrown by getAdvertisingIdInfo() // cause this method to be called. @Override public void onFailure(Throwable throwable) { Log.e("MY_APP_TAG", "Failed to connect to Advertising ID provider."); // Try to connect to the Advertising ID provider again // or fall back to an ad solution that doesn't require // using the Advertising ID library. } }); } else { // The Advertising ID client library is unavailable. Use a different // library to perform any required ad use cases. } }
विज्ञापन आईडी लाइब्रेरी का आर्किटेक्चर
पहली इमेज में, विज्ञापन आईडी लाइब्रेरी का स्ट्रक्चर दिखाया गया है. लाइब्रेरी में ये मॉड्यूल शामिल होते हैं:
- क्लाइंट मॉड्यूल, जो ऐप्लिकेशन में शामिल एक थिन लेयर होता है.
- provider मॉड्यूल, जिसे डिवाइस बनाने वाली कंपनी उपलब्ध कराती है. इस मॉड्यूल को लागू करने के लिए सेटिंग यूज़र इंटरफ़ेस (यूआई) तय करना होगा, ताकि उपयोगकर्ताओं को विज्ञापन आईडी रीसेट करने और विज्ञापन ट्रैकिंग की प्राथमिकताओं को टॉगल करने की सुविधा.
क्लाइंट मॉड्यूल, विज्ञापन ट्रैकिंग से जुड़े विज्ञापन आईडी और उपयोगकर्ता की प्राथमिकताओं को वापस पाने के लिए, सेवा देने वाले मॉड्यूल से संपर्क करता है.
लाइब्रेरी, एक से ज़्यादा प्रोवाइडर को कैसे हैंडल करती है
किसी डिवाइस के लिए, यह संभव है कि वह एक साथ. अगर विज्ञापन आईडी लाइब्रेरी को ऐसी स्थिति का पता चलता है, तो यह पक्का करती है कि आपका ऐप्लिकेशन हमेशा एक ही कंपनी से जानकारी हासिल करता है. इसके लिए, यह माना जाता है कि प्रोवाइडर उपलब्ध रहेगा. इस प्रोसेस से, विज्ञापन आईडी में कोई बदलाव नहीं होता.
अगर समय के साथ विज्ञापन की सेवा देने वाली कंपनियों का सेट बदलता है और आपका ऐप्लिकेशन, विज्ञापन आइडेंटिफ़ायर की सेवा देने वाली किसी दूसरी कंपनी के साथ इंटरैक्ट करता है, तो सभी अन्य क्लाइंट ऐप्लिकेशन भी उस नई कंपनी का इस्तेमाल करना शुरू कर देते हैं. आपके ऐप्लिकेशन में भी इस तरह की गतिविधि होती है तब लागू होता है, जब उपयोगकर्ता अपने विज्ञापन आईडी को रीसेट करने का अनुरोध करता है.
विज्ञापन आईडी की सेवा देने वाली लाइब्रेरी, सेवा देने वाली कंपनियों को रैंक करने के लिए, यहां दिए गए क्रम का इस्तेमाल करती है:
- सेवा देने वाली ऐसी कंपनियां जिन्होंने
androidx.ads.identifier.provider.HIGH_PRIORITY
की अनुमति का अनुरोध किया है. - ऐसे प्रोवाइडर जो डिवाइस पर सबसे लंबे समय से इंस्टॉल हैं.
- सेवा देने वाली ऐसी कंपनियां जो वर्णमाला के क्रम में सबसे पहले दिखती हैं.