অ্যান্ড্রয়েড জেটপ্যাকের একটি ব্যবহারকারী-পুনঃসেটযোগ্য বিজ্ঞাপন আইডি পার্ট পান।

ব্যবহারকারীর গোপনীয়তা রক্ষা করার জন্য, সমস্ত অ্যান্ড্রয়েড অ্যাপের জন্য ব্যবহারকারী-পুনঃসেটযোগ্য শনাক্তকারীর সাথে কাজ করা একটি সর্বোত্তম অনুশীলন। এরকম একটি শনাক্তকারী হল একটি বিজ্ঞাপন আইডি , যা বিজ্ঞাপন ব্যক্তিগতকরণের মতো বিজ্ঞাপন ব্যবহারের ক্ষেত্রে একটি নির্দিষ্ট ব্যবহারকারীকে অনন্যভাবে সনাক্ত করে।

আপনার অ্যাপ্লিকেশানটি চালানো সমস্ত ডিভাইস জুড়ে একটি প্রমিত বিজ্ঞাপন-ট্র্যাকিং সমাধান সমর্থন করতে, আপনি বিজ্ঞাপন আইডি লাইব্রেরি ব্যবহার করতে পারেন৷ এই লাইব্রেরি, যা Android 4.0 (API স্তর 14) এবং উচ্চতর চলমান ডিভাইসগুলিতে উপলব্ধ, সিস্টেম-স্তরের বিজ্ঞাপন প্রদানকারীদের সাথে যোগাযোগ করার জন্য একটি ইন্টারফেস সংজ্ঞায়িত করে৷ এই ইন্টারফেসটি আপনার অ্যাপকে সামঞ্জস্যপূর্ণ বিজ্ঞাপন আইডি মান পেতে অনুমতি দেয়।

অ্যাডভার্টাইজিং আইডি লাইব্রেরির সাথে অন্তর্ভুক্ত বিজ্ঞাপন প্রদানকারী একটি সেটিংস স্ক্রিন খোলার জন্য একটি মানক অভিপ্রায়ও সংজ্ঞায়িত করে যা বিজ্ঞাপন প্রদানকারী প্রয়োগ করে। এই সেটিংস স্ক্রীন ব্যবহারকারীকে তাদের বিজ্ঞাপন আইডি পুনরায় সেট করতে এবং বিজ্ঞাপন ব্যক্তিগতকরণ থেকে অপ্ট আউট করার অনুমতি দেয়৷

প্রতি-ডিভাইস-ব্যবহারকারীর ভিত্তিতে একটি সামঞ্জস্যপূর্ণ বিজ্ঞাপন আইডি পেতে বিজ্ঞাপন আইডি লাইব্রেরির ক্লায়েন্ট মডিউলটি কীভাবে ব্যবহার করবেন তা এই নির্দেশিকা ব্যাখ্যা করে। এই গাইডটি তখন লাইব্রেরির স্থাপত্যের একটি ওভারভিউ উপস্থাপন করে।

আপনার ক্লায়েন্ট অ্যাপ কনফিগার করুন

বিজ্ঞাপন আইডি লাইব্রেরির ক্লায়েন্ট মডিউলের সাথে ইন্টারঅ্যাক্ট করে, আপনার অ্যাপটি একটি ধারাবাহিক বিজ্ঞাপন আইডি পুনরুদ্ধার করতে পারে যা অ্যাপটির সাথে ইন্টারঅ্যাক্ট করছে এমন ব্যবহারকারীর প্রতিনিধিত্ব করে।

সার্বজনীন অনন্য শনাক্তকারী (UUID) বিন্যাস বা একটি সমতুল্য 128-বিট বিন্যাসের সংস্করণ 3 ব্যবহার করে বিজ্ঞাপন আইডি উপস্থাপন করা হয়:

38400000-8cf0-11bd-b23e-10b96e40000d

বিজ্ঞাপন আইডি লাইব্রেরি এই ফর্ম্যাট ব্যবহার করে আইডি প্রদান করার জন্য প্রয়োজনীয় রিটার্ন মানকে স্বাভাবিক করে।

আপনার অ্যাপের জন্য ব্যবহারকারী-পুনঃসেটযোগ্য বিজ্ঞাপন আইডি পুনরুদ্ধার করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. AdvertisingIdClient.isAdvertisingIdProviderAvailable() কল করে একটি বিজ্ঞাপন প্রদানকারী উপলব্ধ কিনা তা পরীক্ষা করুন৷ যদি এই পদ্ধতিটি false ফেরত দেয়, তাহলে আপনার অ্যাপের অন্য কোনো উপায় ব্যবহার করা উচিত বিজ্ঞাপন-ট্র্যাকিং ব্যবহারের ক্ষেত্রে প্রয়োজনীয় সঞ্চালনের জন্য।

  2. AdvertisingIdClient.getAdvertisingIdInfo() এ কল করে বিজ্ঞাপন আইডি সহ বিজ্ঞাপন শনাক্তকারীর বিবরণ পান। Advertising ID লাইব্রেরি একটি কর্মী থ্রেডে এই পদ্ধতিটি কার্যকর করে এবং 10-সেকেন্ডের সংযোগের সময়সীমা ব্যবহার করে।

নিম্নলিখিত কোড স্নিপেট প্রদর্শন করে কিভাবে বিজ্ঞাপন প্রদানকারীর কাছ থেকে অন্যান্য তথ্য সহ বিজ্ঞাপন আইডি পুনরুদ্ধার করতে হয়:

app/build.gradle

গ্রোভি

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'
}

কোটলিন

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

কোটলিন

// 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.
    }
}

জাভা

// 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.
    }
}

বিজ্ঞাপন আইডি লাইব্রেরি আর্কিটেকচার

স্থাপত্য চিত্র
চিত্র 1. বিজ্ঞাপন আইডি লাইব্রেরি আর্কিটেকচার

চিত্র 1 বিজ্ঞাপন আইডি লাইব্রেরির গঠন চিত্রিত করে। লাইব্রেরি নিম্নলিখিত মডিউল নিয়ে গঠিত:

  • একটি ক্লায়েন্ট মডিউল , যা অ্যাপে অন্তর্ভুক্ত একটি পাতলা স্তর।
  • একটি প্রদানকারী মডিউল , যা ডিভাইস প্রস্তুতকারক উপলব্ধ করে। এই মডিউলটির বাস্তবায়ন ব্যবহারকারীদের তাদের বিজ্ঞাপন আইডি রিসেট করার এবং বিজ্ঞাপন ট্র্যাকিং পছন্দগুলি টগল করার ক্ষমতা দেওয়ার জন্য একটি সেটিংস UI সংজ্ঞায়িত করতে হবে।

ক্লায়েন্ট মডিউল বিজ্ঞাপন ট্র্যাকিং সম্পর্কিত বিজ্ঞাপন আইডি এবং ব্যবহারকারীর পছন্দগুলি পুনরুদ্ধার করতে প্রদানকারী মডিউলের সাথে যোগাযোগ করে।

কিভাবে লাইব্রেরি একাধিক প্রদানকারী পরিচালনা করে

একটি ডিভাইসের পক্ষে একই সময়ে একাধিক সিস্টেম-স্তরের বিজ্ঞাপন প্রদানকারীকে সমর্থন করা সম্ভব। যদি Advertising ID লাইব্রেরি এই পরিস্থিতি শনাক্ত করে, তাহলে এটি নিশ্চিত করে যে আপনার অ্যাপ সবসময় একই প্রদানকারীর কাছ থেকে তথ্য পুনরুদ্ধার করে, অনুমান করে যে প্রদানকারী উপলব্ধ থাকবে। এই প্রক্রিয়া বিজ্ঞাপন আইডি সামঞ্জস্যপূর্ণ রাখে।

যদি উপলব্ধ বিজ্ঞাপন প্রদানকারীর সেট সময়ের সাথে পরিবর্তিত হয় এবং আপনার অ্যাপটি একটি ভিন্ন বিজ্ঞাপন শনাক্তকারী প্রদানকারীর সাথে ইন্টারঅ্যাক্ট করে, অন্য সমস্ত ক্লায়েন্ট অ্যাপও সেই নতুন প্রদানকারীকে ব্যবহার করা শুরু করে। ব্যবহারকারী তাদের বিজ্ঞাপন আইডি পুনরায় সেট করার অনুরোধ করলে আপনার অ্যাপটি একই আচরণ প্রদর্শন করে যা ঘটবে।

বিজ্ঞাপন আইডি প্রদানকারী লাইব্রেরি প্রদানকারীদের র‍্যাঙ্ক করার জন্য নিম্নলিখিত নির্ধারক ক্রম ব্যবহার করে:

  1. যে সমস্ত প্রদানকারীরা androidx.ads.identifier.provider.HIGH_PRIORITY অনুমতির অনুরোধ করেছে৷
  2. ডিভাইসে দীর্ঘতম সময়ের জন্য ইনস্টল করা আছে যে প্রদানকারী.
  3. প্রদানকারী যেগুলি প্রথমে বর্ণানুক্রমিকভাবে প্রদর্শিত হয়৷