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

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

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

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

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

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

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

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

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

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

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

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

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

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

অ্যাপ/বিল্ড.গ্রেডল

খাঁজকাটা

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

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

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

চিত্র ১-এ বিজ্ঞাপন আইডি লাইব্রেরির কাঠামো দেখানো হয়েছে। লাইব্রেরিতে নিম্নলিখিত মডিউলগুলি রয়েছে:

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

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

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

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

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

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

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