کسب رضایت با بستر پیام‌رسانی کاربر

پیش نیازها

بخوانید که چگونه الزامات IAB بر پیام‌های رضایت اتحادیه اروپا تأثیر می‌گذارد .

مقدمه

UMP SDK ابزارهایی را برای ناشران فراهم می‌کند تا برای تبلیغات شخصی‌سازی‌شده رضایت دهند و همچنین نیازهای شفافیت ردیابی برنامه (ATT) اپل را انجام دهند. ناشران می‌توانند از UMP SDK برای رسیدگی به یکی یا هر دوی این درخواست‌ها با نشان دادن یک فرم استفاده کنند، زیرا همه پیکربندی‌ها درAdMob Privacy & Messaging انجام می‌شود.

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

برای حمایت از ناشران در انجام وظایف خود تحت این خط‌مشی، Google پلتفرم پیام‌رسانی کاربر (UMP) SDK را ارائه می‌دهد که جایگزین کیت توسعه نرم‌افزار رضایت منبع باز قبلی می‌شود. UMP SDK برای پشتیبانی از آخرین استانداردهای IAB به روز شده است. ما همچنین فرآیند راه‌اندازی فرم‌های رضایت و فهرست کردن شرکای تبلیغاتی را ساده کرده‌ایم. همه این پیکربندی‌ها اکنون می‌توانند به راحتی درAdMob Privacy & Messaging مدیریت شوند.

این راهنما نحوه نصب SDK، پیاده سازی راه حل های IAB و فعال کردن ویژگی های تست را به شما آموزش می دهد.

SDK را وارد کنید

CocoaPods (ترجیحا)

UMP SDK به عنوان یک وابستگی از Google Mobile Ads SDK Pod که با Google Mobile Ads SDK 7.64.0 شروع می شود، گنجانده شده است.

ساده ترین راه برای وارد کردن SDK به پروژه iOS استفاده از CocoaPods است. Podfile پروژه خود را باز کنید و این خط را به هدف برنامه خود اضافه کنید:

pod 'Google-Mobile-Ads-SDK'

سپس از خط فرمان اجرا کنید:

pod install --repo-update

اگر با CocoaPods تازه کار هستید، برای اطلاعات در مورد نحوه ایجاد و استفاده از Podfiles به اسناد رسمی آنها مراجعه کنید.

دانلود دستی

SDK را دانلود کنید

سپس، چارچوب را به پروژه Xcode خود بکشید و مطمئن شوید که در صورت نیاز موارد کپی را انتخاب کنید.

سپس می توانید چارچوب را در هر فایلی که نیاز دارید با استفاده از:

سریع

import UserMessagingPlatform

هدف-C

#include <UserMessagingPlatform/UserMessagingPlatform.h>

Info.plist خود را به روز کنید

شناسه برنامه را به Info.plistاضافه کنید

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

شناسه برنامه خود را به Info.plistخود اضافه کنید:

<key>GADApplicationIdentifier</key>
<string>YOUR-APP-ID</string>

شفافیت ردیابی برنامه

اگر قصد دارید از UMP SDK برای رسیدگی به الزامات شفافیت ردیابی برنامه اپل استفاده کنید، مطمئن شوید که پیام ATT خود را با استفاده ازAdMob Privacy & Messaging ایجاد کرده، پیکربندی و منتشر کرده اید.

برای اینکه UMP SDK یک پیام هشدار سفارشی نمایش دهد، Info.plist خود را به‌روزرسانی کنید تا کلید NSUserTrackingUsageDescription را با یک رشته پیام سفارشی که استفاده شما را توصیف می‌کند، اضافه کنید.

<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>

هنگام ارائه فرم رضایت، توضیحات استفاده به عنوان بخشی از گفتگوی ATT ظاهر می شود:

در مرحله بعد، باید چارچوب AppTrackingTransparency را پیوند دهید:

در حین آزمایش، به یاد داشته باشید که بر اساس الزامات اپل، گفتگوی IDFA ATT تنها یک بار از زمانی که requestTrackingAuthorization: یک درخواست یک بار مصرف است، ظاهر می شود. برای نمایش هشدار برای بار دوم، باید برنامه خود را حذف نصب کرده و مجدداً در دستگاه آزمایشی خود نصب کنید.

با استفاده از SDK

SDK برای استفاده به صورت خطی طراحی شده است. مراحل استفاده از SDK عبارتند از:

  1. آخرین اطلاعات رضایت را درخواست کنید.
  2. بررسی کنید که آیا رضایت لازم است یا خیر.
  3. بررسی کنید که آیا فرمی در دسترس است یا خیر و اگر چنین است فرمی را بارگیری کنید.
  4. فرم را ارائه دهید.
  5. راهی برای تغییر رضایت کاربران ارائه دهید.

توصیه می شود در هر راه اندازی برنامه درخواست به روز رسانی اطلاعات رضایت دهید. این مشخص می کند که آیا کاربر شما نیاز به ارائه رضایت دارد یا خیر.

این روش فقط باید از موضوع اصلی فراخوانی شود.

سریع

// Create a UMPRequestParameters object.
let parameters = UMPRequestParameters()
// Set tag for under age of consent. Here false means users are not under age.
parameters.tagForUnderAgeOfConsent = false

// Request an update to the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    with: parameters,
    completionHandler: { error in
      if error != nil {
        // Handle the error.
      } else {
        // The consent information state was updated.
        // You are now ready to check if a form is
        // available.
      }
    })

هدف-C

// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Set tag for under age of consent. Here NO means users are not under age.
parameters.tagForUnderAgeOfConsent = NO;

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error) {
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to check if a form is
                             // available.
                           }
                         }];

در صورت موجود بودن فرم را بارگیری کنید

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

فرم های کسب رضایت در UI AdMobایجاد شده است. وقتی مشخص کردید که از یک کاربر رضایت می‌خواهید، گام بعدی این است که تعیین کنید آیا یک فرم در دسترس است یا خیر. دلایل مختلفی وجود دارد که یک فرم ممکن است در دسترس نباشد، مانند:

  • کاربر محدودیت ردیابی تبلیغات را فعال کرده است.
  • شما کاربر را زیر سن رضایت تگ کردید.

برای بررسی اینکه آیا یک فرم در دسترس است، از ویژگی formStatus در UMPConsentInformation استفاده کنید، که یک عدد از نوع UMPFormStatus را برمی گرداند. سه مقدار ممکن برای UMPFormStatus وجود دارد:

  • UMPFormStatusUnknown : وضعیت فرم ناشناخته است. در این مورد باید requestConsentInfoUpdateWithParameters:completionHandler: را فراخوانی کنید.
  • UMPFormStatusAvailable : یک فرم رضایت در دسترس است و می توان آن را بارگیری کرد.
  • UMPFormStatusUnavailable : فرم رضایت در دسترس نیست.

یک روش wrapper برای بارگیری فرمی مانند این اضافه کنید:

سریع

// Request an update to the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    withParameters: parameters,
    completionHandler: { [self] error in

      // The consent information has updated.
      if error != nil {
        // Handle the error.
      } else {
        // The consent information state was updated.
        // You are now ready to see if a form is available.
        let formStatus = UMPConsentInformation.sharedInstance.formStatus
        if formStatus == UMPFormStatus.available {
          loadForm()
        }
      }
    })
...
func loadForm() {

}

هدف-C

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError* _Nullable error) {

                           // The consent information has updated.
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to see if a form is available.
                             UMPFormStatus formStatus =
                                 UMPConsentInformation.sharedInstance
                                     .formStatus;
                             if (formStatus == UMPFormStatusAvailable) {
                               [self loadForm];
                             }
                           }
                         }];
...
- (void) loadForm {

}

برای بارگذاری فرم از متد استاتیک loadWithCompletionHandler: در کلاس UMPConsentForm استفاده خواهید کرد. این متد فقط باید از thread اصلی فراخوانی شود. روش loadForm خود را به این صورت تغییر دهید:

سریع

func loadForm() {
  UMPConsentForm.load(
      withCompletionHandler: { form, loadError in
        if loadError != nil {
          // Handle the error
        } else {
          // Present the form
        }
      })
}

هدف-C

- (void)loadForm {
  [UMPConsentForm
      loadWithCompletionHandler:^(UMPConsentForm *form, NSError *loadError) {
        if (loadError) {
          // Handle the error
        } else {
          // Present the form
        }
      }];
}

در صورت نیاز فرم را ارائه دهید

برای ارائه فرم رضایت، از presentFromViewController:completionHandler: در کلاس UMPConsentForm استفاده کنید. شما باید تعیین کنید که آیا کاربر قبل از ارائه فرم به رضایت نیاز دارد یا خیر. برای بررسی اینکه آیا رضایت لازم است، ویژگی consentStatus شی UMPConsentInformation را بررسی کنید، که یک عدد از نوع UMPConsentStatus . چهار مقدار ممکن برای UMPConsentStatus وجود دارد:

  • UMPConsentStatusUnknown : وضعیت رضایت نامشخص.
  • UMPConsentStatusRequired : رضایت کاربر مورد نیاز است اما هنوز کسب نشده است.
  • UMPConsentStatusNotRequired : رضایت کاربر لازم نیست. به عنوان مثال، کاربر در EEA یا انگلستان نیست.
  • UMPConsentStatusObtained : رضایت کاربر به دست آمده است. شخصی سازی تعریف نشده است.

روش loadForm خود را به این صورت تغییر دهید:

سریع

func loadForm() {
  UMPConsentForm.load(withCompletionHandler: { form, loadError in
    if loadError != nil {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.required {
        form?.present(
            from: self,
            completionHandler: { dismissError in
              if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.obtained {
                // App can start requesting ads.
              }

            })
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  })
}

هدف-C

- (void)loadForm {
  [UMPConsentForm loadWithCompletionHandler:^(UMPConsentForm *form,
                                              NSError *loadError) {
    if (loadError) {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if (UMPConsentInformation.sharedInstance.consentStatus ==
          UMPConsentStatusRequired) {
        [form
            presentFromViewController:self
                    completionHandler:^(NSError *_Nullable dismissError) {
                      if (UMPConsentInformation.sharedInstance.consentStatus ==
                          UMPConsentStatusObtained) {
                        // App can start requesting ads.
                      }

                    }];
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  }];
}

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

آزمایش کردن

جغرافی اجباری

UMP SDK با استفاده از ویژگی debugGeography از نوع UMPDebugGeography در UMPDebugSettings ، روشی ساده برای آزمایش رفتار برنامه شما ارائه می‌کند، گویی دستگاه در منطقه اقتصادی اروپا یا بریتانیا واقع شده است.

برای استفاده از قابلیت اشکال زدایی باید شناسه هش شده دستگاه آزمایشی خود را در تنظیمات اشکال زدایی برنامه خود ارائه دهید. اگر درخواست requestConsentInfoUpdateWithParameters را بدون تنظیم این مقدار فراخوانی کنید، برنامه شما هنگام اجرا هش شناسه مورد نیاز را ثبت می‌کند.

سریع

let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = UMPDebugGeography.EEA
parameters.debugSettings = debugSettings
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    with: parameters,
    completionHandler: { error in
      ...
    })

هدف-C

UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
debugSettings.geography = UMPDebugGeographyEEA;
parameters.debugSettings = debugSettings;
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error){
                           ...
}];

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

در آزمایش برنامه خود با UMP SDK، ممکن است بازنشانی وضعیت SDK برای شما مفید باشد تا بتوانید اولین تجربه نصب کاربر را شبیه سازی کنید. SDK روش reset را برای انجام این کار ارائه می دهد.

سریع

UMPConsentInformation.sharedInstance.reset()

هدف-C

[UMPConsentInformation.sharedInstance reset];

همچنین اگر تصمیم دارید UMP SDK را به طور کامل از پروژه خود حذف کنید، باید Reset را فراخوانی کنید.

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

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

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

برای به تاخیر انداختن اندازه‌گیری برنامه، کلید GADDelayAppMeasurementInit را با مقدار بولی YES به Info.plist برنامه خود اضافه کنید. شما می توانید این تغییر را به صورت برنامه ای انجام دهید:

<key>GADDelayAppMeasurementInit</key>
<true/>

یا آن را در ویرایشگر لیست اموال ویرایش کنید:

پادرمیانی

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