یک شناسه تبلیغاتی قابل تنظیم مجدد توسط کاربر بخشی از Android Jetpack دریافت کنید.

برای محافظت از حریم خصوصی کاربر، بهترین روش برای همه برنامه‌های اندرویدی است که با شناسه‌های قابل تنظیم مجدد توسط کاربر کار کنند. یکی از این شناسه‌ها، شناسه تبلیغاتی است که به طور منحصربه‌فرد یک کاربر خاص را برای موارد استفاده تبلیغاتی، مانند شخصی‌سازی آگهی، شناسایی می‌کند.

برای پشتیبانی از راه حل استاندارد شده ردیابی آگهی در دستگاه‌هایی که برنامه شما را اجرا می‌کنند، می‌توانید از کتابخانه ID تبلیغات استفاده کنید. این کتابخانه که در دستگاه‌های دارای Android نسخه 4.0 (سطح API 14) و بالاتر موجود است، رابطی را برای تعامل با ارائه‌دهندگان تبلیغات در سطح سیستم تعریف می‌کند. این رابط به برنامه شما اجازه می دهد تا مقادیر ID تبلیغاتی ثابتی را دریافت کند.

ارائه‌دهنده آگهی که در کتابخانه ID تبلیغاتی گنجانده شده است نیز یک هدف استاندارد برای باز کردن صفحه تنظیماتی که ارائه‌دهنده آگهی پیاده‌سازی می‌کند، تعریف می‌کند. این صفحه تنظیمات به کاربر امکان می‌دهد شناسه تبلیغاتی خود را بازنشانی کند و از شخصی‌سازی آگهی انصراف دهد.

این راهنما نحوه استفاده از ماژول مشتری کتابخانه ID تبلیغاتی را برای به دست آوردن یک شناسه تبلیغاتی ثابت بر اساس هر دستگاه برای هر کاربر توضیح می دهد. این راهنما سپس نمای کلی از معماری کتابخانه را ارائه می دهد.

برنامه مشتری خود را پیکربندی کنید

با تعامل با ماژول مشتری کتابخانه شناسه تبلیغات، برنامه شما می‌تواند یک شناسه تبلیغاتی ثابت را بازیابی کند که نشان‌دهنده کاربری است که در حال تعامل با برنامه است.

شناسه تبلیغاتی با استفاده از نسخه 3 فرمت شناسه منحصربه‌فرد جهانی (UUID) یا قالب 128 بیتی معادل آن نشان داده می‌شود:

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

کتابخانه ID Advertising مقدار بازگشتی را در صورت لزوم برای ارائه شناسه ها با استفاده از این فرمت عادی می کند.

برای بازیابی شناسه تبلیغاتی قابل تنظیم مجدد توسط کاربر برای برنامه خود، مراحل زیر را انجام دهید:

  1. با فراخوانی AdvertisingIdClient.isAdvertisingIdProviderAvailable() بررسی کنید که آیا ارائه دهنده آگهی در دسترس است یا خیر. اگر این روش false را برگرداند، برنامه شما باید از ابزار دیگری برای انجام موارد استفاده ردیابی آگهی مورد نیاز استفاده کند.

  2. با تماس AdvertisingIdClient.getAdvertisingIdInfo() جزئیات شناسه آگهی، از جمله شناسه تبلیغات را دریافت کنید. کتابخانه Advertising ID این روش را بر روی یک thread کارگر اجرا می کند و از 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 ساختار کتابخانه ID تبلیغاتی را نشان می دهد. این کتابخانه از ماژول های زیر تشکیل شده است:

  • یک ماژول مشتری ، که یک لایه نازک است که در برنامه ها گنجانده شده است.
  • یک ماژول ارائه دهنده که سازنده دستگاه آن را در دسترس قرار می دهد. پیاده‌سازی این ماژول باید یک UI تنظیمات تعریف کند تا به کاربران امکان بازنشانی شناسه تبلیغاتی و تغییر تنظیمات برگزیده ردیابی تبلیغات را بدهد.

ماژول مشتری با ماژول ارائه دهنده ارتباط برقرار می کند تا شناسه های تبلیغاتی و ترجیحات کاربر در مورد ردیابی تبلیغات را بازیابی کند.

چگونه کتابخانه چندین ارائه دهنده را مدیریت می کند

این امکان وجود دارد که یک دستگاه از چندین ارائه دهنده تبلیغات در سطح سیستم به طور همزمان پشتیبانی کند. اگر کتابخانه ID Advertising این وضعیت را تشخیص دهد، تضمین می کند که برنامه شما همیشه اطلاعات را از همان ارائه دهنده بازیابی می کند، با این فرض که ارائه دهنده همچنان در دسترس است. این فرآیند شناسه تبلیغاتی را ثابت نگه می دارد.

اگر مجموعه ارائه دهندگان تبلیغات موجود در طول زمان تغییر کند و برنامه شما با ارائه‌دهنده شناسه آگهی دیگری تعامل داشته باشد، همه برنامه‌های مشتری دیگر نیز شروع به استفاده از آن ارائه‌دهنده جدید می‌کنند. برنامه شما همان رفتاری را نشان می دهد که اگر کاربر درخواست بازنشانی شناسه تبلیغاتی خود را داشته باشد، رخ می دهد.

کتابخانه ارائه دهنده Advertising ID از ترتیب قطعی زیر برای رتبه بندی ارائه دهندگان استفاده می کند:

  1. ارائه دهندگانی که مجوز androidx.ads.identifier.provider.HIGH_PRIORITY را درخواست کرده اند.
  2. ارائه دهندگانی که برای طولانی ترین زمان بر روی دستگاه نصب شده اند.
  3. ارائه دهندگانی که ابتدا به ترتیب حروف الفبا ظاهر می شوند.