درخواست رضایت از کاربران اروپایی

تحت خط‌مشی رضایت کاربر اتحادیه اروپا Google، باید اطلاعات مشخصی را به کاربران خود در منطقه اقتصادی اروپا (EEA) ارائه دهید و رضایت آنها را برای استفاده از کوکی‌ها یا سایر فضای ذخیره‌سازی محلی، در صورت لزوم، و استفاده از داده‌های شخصی (مانند AdID) جلب کنید. برای ارائه تبلیغات این سیاست منعکس کننده الزامات دستورالعمل حریم خصوصی الکترونیک اتحادیه اروپا و مقررات عمومی حفاظت از داده ها (GDPR) است.

برای حمایت از ناشران در انجام وظایف خود تحت این خط‌مشی، Google یک SDK رضایت ارائه می‌دهد. Consent SDK یک کتابخانه منبع باز است که توابع ابزاری را برای جمع آوری رضایت از کاربران شما فراهم می کند. کد منبع کامل درGitHub موجود است.

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

این راهنما نحوه استفاده از Consent SDK برای کسب رضایت از کاربران را شرح می دهد. همچنین نحوه بازارسال رضایت به Google Mobile Ads SDK را پس از کسب رضایت شرح می دهد.

پیش نیازها

برنامه‌ها می‌توانند SDK رضایت را با وابستگی Gradle وارد کنند که به مخزن Maven Google اشاره می‌کند. برای استفاده از آن مخزن، باید آن را در فایل build.gradle در سطح پروژه برنامه ارجاع دهید. بخش خود را باز کنید و به دنبال بخش allprojects :

نمونه build.gradle در سطح پروژه (گزیده)

allprojects {
    repositories {
        google()
        jcenter()
    }
}

اگر دستورالعمل google() را در بالا وجود ندارد اضافه کنید.

در مرحله بعد، فایل build.gradle در سطح برنامه را برای برنامه خود باز کنید و به دنبال بخش "وابستگی ها" بگردید.

نمونه build.gradle در سطح برنامه (گزیده)

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.ads.consent:consent-library:1.0.6'
}

خطی را به صورت پررنگ در بالا اضافه کنید، که به Gradle دستور می دهد آخرین نسخه Consent SDK را وارد کند. پس از انجام این کار، فایل را ذخیره کرده و همگام سازی Gradle را انجام دهید.

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

اگر از میانجیگری استفاده نمی کنید

اگر از میانجی‌گری استفاده نمی‌کنید، دو گزینه برای اجرای Consent SDK برای جمع‌آوری رضایت دارید.

یک گزینه این است که از کیت توسعه نرم افزار رضایت برای ارائه فرم رضایت ارائه شده توسط Google به کاربران خود استفاده کنید. فرم رضایت فهرستی از ارائه‌دهندگان فناوری تبلیغاتی را که در رابط کاربری AdMobانتخاب کرده‌اید نشان می‌دهد. Consent SDK پاسخ رضایت کاربر را ذخیره می کند.

گزینه دیگر استفاده از Consent SDK برای بازیابی پویا لیست کامل ارائه دهندگان فناوری تبلیغات از AdMobاست، همانطور که در مجموعه رضایت مدیریت شده توسط ناشر توضیح داده شده است. با این حال، در این مورد باید تعیین کنید که چگونه لیست ارائه دهندگان باید در دسترس کاربران شما قرار گیرد و فرم رضایت خود را به کاربران خود ارائه دهید.

هنگامی که کاربر رضایت خود را انتخاب کرد، می‌توانید از کیت توسعه نرم‌افزار رضایت بخواهید تا انتخاب رضایت کاربر را همانطور که در ذخیره‌سازی رضایت مدیریت شده ناشر توضیح داده شده ذخیره کند.

پس از جمع‌آوری رضایت، اگر کاربری فقط با دریافت تبلیغات غیرشخصی موافقت کرده است، باید رضایت خود را به Google Mobile Ads SDK بازارسال کنید .

اگر از میانجیگری AdMob استفاده می کنید

می‌توانید از Consent SDK برای بازیابی پویا فهرست کامل ارائه‌دهندگان فناوری تبلیغات از AdMobکنید، همانطور که در مجموعه رضایت مدیریت شده توسط ناشر توضیح داده شده است. شما باید تعیین کنید که کدام ارائه دهندگان فناوری تبلیغات اضافی از سایر شبکه های تبلیغاتی باید برای رضایت به کاربران شما ارائه شوند.

به‌عنوان یک توسعه‌دهنده برنامه، باید رضایت کاربر را هم برای ارائه‌دهندگان فناوری تبلیغاتی که توسط SDK رضایت بازگردانده شده‌اند و هم برای ارائه‌دهندگان شبکه‌های تبلیغاتی دیگر جمع‌آوری کنید. همچنین باید پاسخ‌های رضایت کاربر را به‌صورت دستی ذخیره کنید و رضایت خود را به Google Mobile Ads SDK بفرستید ، اگر کاربر فقط به دریافت تبلیغات غیرشخصی رضایت داد.

Google در حال حاضر قادر به دریافت و رسیدگی به رضایت شبکه‌های میانجی نیست، بنابراین باید رضایت هر شبکه تبلیغاتی را جداگانه دریافت کرده و مدیریت کنید. لطفاً برای جزئیات پیاده سازی به راهنمای ادغام هر شریک میانجی مراجعه کنید.

به روز رسانی وضعیت رضایت

هنگام استفاده از Consent SDK، توصیه می‌شود در هر راه‌اندازی برنامه ، وضعیت رضایت کاربر را تعیین کنید. برای انجام این کار، درخواست requestConsentInfoUpdate() را در نمونه ای از ConsentInformation کنید.

import com.google.ads.consent.*;

public class MainActivity extends Activity {
    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        ConsentInformation consentInformation = ConsentInformation.getInstance(context);
        String[] publisherIds = {"pub-0123456789012345"};
        consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
            @Override
            public void onConsentInfoUpdated(ConsentStatus consentStatus) {
                 // User's consent status successfully updated.
            }

            @Override
            public void onFailedToUpdateConsentInfo(String errorDescription) {
                 // User's consent status failed to update.
            }
        });
        ...
    }
    ...
}

فراخوانی requestConsentInfoUpdate() به دو آرگومان نیاز دارد:

  • مجموعه‌ای از شناسه‌های ناشر معتبر و کاملاً فعال که برنامه شما از آنها درخواست تبلیغات می‌کند.شناسه ناشر خود را پیدا کنید .

  • نمونه ای از ConsentInfoUpdateListener .

اگر اطلاعات رضایت با موفقیت به‌روزرسانی شود، وضعیت رضایت به‌روزرسانی شده از طریق روش onConsentInfoUpdated() ConsentInfoUpdateListener . ConsentStatus ممکن است دارای مقادیر ذکر شده در زیر باشد:

وضعیت رضایت تعریف
ConsentStatus.PERSONALIZED کاربر برای تبلیغات شخصی رضایت داده است.
ConsentStatus.NON_PERSONALIZED کاربر برای تبلیغات غیرشخصی رضایت داده است.
ConsentStatus.UNKNOWN کاربر برای تبلیغات شخصی یا غیرشخصی رضایت خود را نداده و رد نکرده است.

هنگامی که اطلاعات رضایت با موفقیت به‌روزرسانی شد، می‌توانید ConsentInformation.getInstance(context).isRequestLocationInEeaOrUnknown() را نیز بررسی کنید تا ببینید آیا کاربر در منطقه اقتصادی اروپا قرار دارد یا مکان درخواست ناشناخته است.

اگر isRequestLocationInEeaOrUnknown() false را برگرداند، کاربر در منطقه اقتصادی اروپا قرار ندارد و طبق سیاست رضایت کاربر اتحادیه اروپا رضایت لازم نیست. می‌توانید درخواست‌های تبلیغاتی را به Google Mobile Ads SDK ارسال کنید.

اگر isRequestLocationInEeaOrUnknown() true برمی گرداند:

  • اگر وضعیت رضایت بازگردانده شده PERSONALIZED یا ConsentStatus NON_PERSONALIZED ، کاربر قبلاً رضایت خود را ارائه کرده است. اکنون می‌توانید رضایت خود را به Google Mobile Ads SDK بازارسال کنید .

  • اگر وضعیت رضایت بازگشتی ConsentStatus است، به بخش جمع آوری رضایت در زیر مراجعه UNKNOWN ، که استفاده از روش های کاربردی برای جمع آوری رضایت را توضیح می دهد.

Google'sConsent SDK .دو روش برای جمع آوری رضایت از کاربر ارائه می دهد:

به خاطر داشته باشید که گزینه تغییر یا لغو رضایت را در اختیار کاربران قرار دهید.

فرم رضایت ارائه شده توسط Google یک فرم قابل تنظیم تمام صفحه است که روی محتوای برنامه شما نمایش داده می شود. می توانید فرم را طوری پیکربندی کنید که ترکیبی از گزینه های زیر را به کاربر ارائه دهد:

  • رضایت برای مشاهده تبلیغات شخصی سازی شده
  • رضایت برای مشاهده تبلیغات غیر شخصی
  • به جای مشاهده تبلیغات، از نسخه پولی برنامه استفاده کنید

باید متن رضایت را به دقت بررسی کنید: آنچه به طور پیش‌فرض ظاهر می‌شود پیامی است که اگر از Google برای کسب درآمد از برنامه خود استفاده کنید، ممکن است مناسب باشد. اما ما نمی توانیم مشاوره حقوقی در مورد متن رضایت که برای شما مناسب است ارائه دهیم. برای به‌روزرسانی متن رضایت فرم رضایت ارائه‌شده توسط Google، فایل consentform.html موجود در کیت توسعه نرم‌افزار رضایت را در صورت نیاز تغییر دهید.

فرم رضایت ارائه شده توسط Google با استفاده از کلاس ConsentForm پیکربندی و نمایش داده می شود. کد زیر نحوه ساخت یک ConsentForm با هر سه گزینه رضایت را نشان می دهد:

URL privacyUrl = null;
try {
    // TODO: Replace with your app's privacy policy URL.
    privacyUrl = new URL("https://www.your.com/privacyurl");
} catch (MalformedURLException e) {
    e.printStackTrace();
    // Handle error.
}
ConsentForm form = new ConsentForm.Builder(context, privacyUrl)
    .withListener(new ConsentFormListener() {
        @Override
        public void onConsentFormLoaded() {
            // Consent form loaded successfully.
        }

        @Override
        public void onConsentFormOpened() {
            // Consent form was displayed.
        }

        @Override
        public void onConsentFormClosed(
                ConsentStatus consentStatus, Boolean userPrefersAdFree) {
            // Consent form was closed.
        }

        @Override
        public void onConsentFormError(String errorDescription) {
            // Consent form error.
        }
    })
    .withPersonalizedAdsOption()
    .withNonPersonalizedAdsOption()
    .withAdFreeOption()
    .build();

روش های بالا فرم رضایت ارائه شده توسط Google را با گزینه های زیر آماده می کنند:

withListener()
یک شنونده را برای ConsentForm ثبت می کند. هر یک از روش‌های قابل جبران در ConsentFormListener مربوط به یک رویداد در چرخه حیات فرم رضایت است.
روش های غلبه پذیر
onConsentFormLoaded فرم رضایت با موفقیت بارگیری شد.
onConsentFormError فرم رضایت بارگیری نشد. پارامتر errorDescription شرحی از خطا را ارائه می دهد.
onConsentFormOpened فرم رضایت نامه باز شد.
onConsentFormClosed فرم رضایت بسته شد. پارامترهای روش اطلاعات زیر را ارائه می دهد:
  • consentStatus یک مقدار ConsentStatus است که وضعیت رضایت به روز شده کاربر را توصیف می کند.
  • زمانی که کاربر استفاده از نسخه پولی برنامه را به جای مشاهده تبلیغات انتخاب کند، userPrefersAdFree دارای مقدار true .
withPersonalizedAdsOption()
نشان می دهد که فرم رضایت باید یک گزینه آگهی شخصی سازی شده را نشان دهد.
withNonPersonalizedAdsOption()
نشان می دهد که فرم رضایت باید یک گزینه تبلیغاتی غیرشخصی را نشان دهد.
withAdFreeOption()
نشان می دهد که فرم رضایت باید گزینه برنامه بدون آگهی را نشان دهد.

هنگامی که یک شی ConsentForm ایجاد کردید، فرم رضایت را با فراخوانی متد load() ConsentForm ، همانطور که در زیر نشان داده شده است:

form.load();

برای ارائه فرم رضایت ارائه شده توسط Google به کاربر، در نمونه‌ای از ConsentForm show() را فراخوانی کنید، همانطور که در زیر نشان داده شده است:

form.show();

پس از اینکه کاربر یک گزینه را انتخاب کرد و فرم را ببندد، Consent SDK انتخاب کاربر را ذخیره می کند و رویداد onConsentFormClosed را فعال می کند. می‌توانید برای این رویداد گوش دهید و رضایت خود را به کیت توسعه نرم‌افزار تبلیغات تلفن همراه Google ارسال کنید.

مجموعه رضایت مدیریت شده توسط ناشر

اگر تصمیم گرفتید خودتان رضایت خود را جمع‌آوری کنید، می‌توانید از روش getAdProviders() از کلاس ConsentInformation برای دریافت ارائه‌دهندگان فناوری تبلیغات مرتبط با شناسه‌های ناشر استفاده شده در برنامه‌تان استفاده کنید. توجه داشته باشید که برای فهرست کامل ارائه‌دهندگان فناوری تبلیغات که برای شناسه‌های ناشر شما پیکربندی شده‌اند، رضایت لازم است.

قبل از اینکه بتوانید getAdProviders() را فراخوانی کنید، باید منتظر onConsentInfoUpdate() ConsentInfoUpdateListener که در بخش وضعیت رضایت به‌روزرسانی توضیح داده شده است.

List<AdProvider> adProviders =
    ConsentInformation.getInstance(context).getAdProviders();

سپس می توانید از لیست ارائه دهندگان فناوری تبلیغات برای کسب رضایت خود استفاده کنید.

پس از دریافت رضایت، ConsentStatus مربوط به پاسخ کاربر را با استفاده از setConsentStatus() از کلاس ConsentInformation کنید.

ConsentInformation.getInstance(context)
    .setConsentStatus(ConsentStatus.PERSONALIZED);

پس از گزارش رضایت به SDK رضایت، می‌توانید رضایت خود را به کیت توسعه نرم‌افزار تبلیغات موبایل Google بازارسال کنید .

برای اینکه به کاربران اجازه دهید رضایت خود را به روز کنند، به سادگی مراحل ذکر شده در بخش جمع آوری رضایت را هنگامی که کاربر تصمیم به به روز رسانی وضعیت رضایت خود را انتخاب می کند، تکرار کنید.

اگر ناشر آگاه باشد که کاربر زیر سن رضایت است، همه درخواست‌های آگهی باید TFUA (برچسب برای کاربران زیر سن رضایت در اروپا) را تنظیم کنند. برای گنجاندن این برچسب در همه درخواست‌های تبلیغاتی که از برنامه شما انجام می‌شود،با setTagForUnderAgeOfConsent(true) تماس بگیرید. این تنظیم برای همه درخواست‌های تبلیغاتی آینده اعمال می‌شود.

ConsentInformation.getInstance(context).setTagForUnderAgeOfConsent(true);

هنگامی که تنظیم TFUA فعال شود، فرم رضایت ارائه شده توسط Google بارگیری نمی شود. همه درخواست‌های تبلیغاتی که شامل TFUA می‌شوند برای تبلیغات شخصی و بازاریابی مجدد واجد شرایط نیستند. TFUA درخواست های ارائه دهندگان فناوری تبلیغات شخص ثالث، مانند پیکسل های اندازه گیری تبلیغات و سرورهای تبلیغات شخص ثالث را غیرفعال می کند.

برای حذف TFUA از درخواست‌های تبلیغات،با setTagForUnderAgeOfConsent(false) تماس بگیرید.

آزمایش کردن

بسته به مقدارConsentInformation.getInstance(context).isRequestLocationInEeaOrUnknown() Consent SDK رفتارهای متفاوتی دارد.برای مثال، اگر کاربر در منطقه اقتصادی اروپا واقع نشده باشد، فرم رضایت بارگیری نمی شود.

برای فعال کردن آزمایش آسان‌تر برنامه شما در داخل و خارج از EEA، Consent SDK از گزینه‌های اشکال‌زدایی پشتیبانی می‌کند که می‌توانید قبل از فراخوانی هر روش دیگری در SDK رضایت تنظیم کنید.

  1. دستورالعمل‌های بخش وضعیت رضایت به‌روزرسانی را برای فراخوانی requestConsentInfoUpdate دنبال کنید. سپس برنامه خود را اجرا کنید. خروجی logcat را برای گزارش زیر بررسی کنید:

    I/ConsentInformation: Use
    ConsentInformation.getInstance(context).addTestDevice("33BE2250B43518CCDA7DE426D04EE231")
    to get test ads on this device.
  2. دستگاه خود را با استفاده از شناسه تبلیغاتی logcat به عنوان یک دستگاه آزمایشی تعیین کنید:

    ConsentInformation.getInstance(context).addTestDevice("33BE2250B43518CCDA7DE426D04EE231");
  3. در نهایت، با setDebugGeography تماس بگیرید تا جغرافیای مورد نظر خود را برای اهداف آزمایشی تنظیم کنید.

    // Geography appears as in EEA for test devices.
    ConsentInformation.getInstance(context).
        setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_EEA);
    // Geography appears as not in EEA for debug devices.
    ConsentInformation.getInstance(context).
        setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_NOT_EEA);

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

کد موجود در این بخش را می توان با هر نسخه از Google Mobile Ads SDK استفاده کرد. همچنین می‌تواند بدون توجه به اینکه آیا از Consent SDK برای جمع‌آوری رضایت استفاده کرده‌اید، استفاده شود.

رفتار پیش‌فرض Google Mobile Ads SDK ارائه تبلیغات شخصی‌شده است. اگر کاربر رضایت داده است که فقط تبلیغات غیرشخصی دریافت کند، می توانید یک شی AdRequest را پیکربندی کنید تا مشخص کنید که فقط تبلیغات غیرشخصی درخواست شود. کد زیر باعث می شود بدون توجه به اینکه کاربر در منطقه اقتصادی اروپا باشد یا نه، تبلیغات غیرشخصی درخواست شود:

جاوا

Bundle extras = new Bundle();
extras.putString("npa", "1");

AdRequest request = new AdRequest.Builder()
    .addNetworkExtrasBundle(AdMobAdapter.class, extras)
    .build();

کاتلین

val extras = Bundle()
extras.putString("npa", "1")

val request = AdRequest.Builder()
    .addNetworkExtrasBundle(AdMobAdapter::class.java, extras)
    .build()

اگر تبلیغات غیرشخصی درخواست شود، URL درخواست آگهی در حال حاضر شامل &npa=1 است. با این حال، توجه داشته باشید که این جزئیات پیاده‌سازی داخلی Google Mobile Ads SDK است و ممکن است تغییر کند.

تأخیر اندازه‌گیری برنامه (اختیاری)

به طور پیش‌فرض، Google Mobile Ads SDK اندازه‌گیری برنامه را راه‌اندازی می‌کند و بلافاصله پس از شروع برنامه، داده‌های رویداد در سطح کاربر را به Google ارسال می‌کند.این رفتار مقداردهی اولیه تضمین می کند که می توانید معیارهای کاربر AdMob را بدون ایجاد تغییرات اضافی در کد فعال کنید.

با این حال، اگر برنامه شما قبل از ارسال این رویدادها به رضایت کاربر نیاز دارد، می‌توانید اندازه‌گیری برنامه را تا زمانی که صریحاً SDK تبلیغات تلفن همراه را راه‌اندازی نکنید یا آگهی بارگیری کنید، به تأخیر بیاندازید.

برای به تاخیر انداختن اندازه‌گیری برنامه، <meta-data> زیر را در AndroidManifest.xml خود اضافه کنید.

<manifest>
     <application>
        <!-- Delay app measurement until MobileAds.initialize() is called. -->
        <meta-data
            android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT"
            android:value="true"/>
    </application>
</manifest>

سوالات متداول

Consent SDK از چند ارائه دهنده فناوری تبلیغات پشتیبانی می کند؟
Consent SDK محدودیتی بر تعداد ارائه دهندگان فناوری تبلیغاتی که ناشر برای فعال کردن انتخاب می کند، اعمال نمی کند.
اگر من انتخاب خود را در رابط کاربری AdMob تغییر دهم، فهرست ارائه‌دهندگان فناوری تبلیغاتی که توسط SDK بازگردانده می‌شوند، به‌طور خودکار به‌روزرسانی می‌شوند؟
بله، اگر تغییراتی را در لیست ارائه دهندگان فناوری تبلیغات در رابط کاربریAdMob ایجاد کنید، این تغییرات تقریباً در عرض یک ساعت به سرورهای تبلیغات Google منتشر می شود.