شروع کنید

Google User Messaging Platform (UMP) SDK ابزاری برای حفظ حریم خصوصی و پیام‌رسانی است که به شما در مدیریت انتخاب‌های حریم خصوصی کمک می‌کند. برای اطلاعات بیشتر، درباره حریم خصوصی و پیام‌رسانی را ببینید. می‌توانید یک پیاده‌سازی کارآمد IMA با UMP SDK را در برنامه‌های نمونه Objective-C یا Swift UMP ببینید.

یک نوع پیام ایجاد کنید

پیام‌های کاربر را با یکی از انواع پیام‌های کاربری موجود در برگه حریم خصوصی و پیام‌رسانی حساب Ad Manager خود ایجاد کنید. UMP SDK سعی می کند یک پیام حریم خصوصی ایجاد شده از شناسه برنامه تبلیغاتی رسانه تعاملی را در پروژه شما نمایش دهد.

برای جزئیات بیشتر، درباره حریم خصوصی و پیام‌رسانی را ببینید.

SDK را وارد کنید

UMP SDK به عنوان یک وابستگی به IMA SDK گنجانده نشده است، بنابراین باید خودتان آن را به صراحت اضافه کنید.

CocoaPods (ترجیحا)

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

pod 'GoogleUserMessagingPlatform'

سپس دستور زیر را اجرا کنید:

pod install --repo-update

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

مدیر بسته سوئیفت

UMP SDK همچنین از مدیریت بسته Swift پشتیبانی می کند. برای وارد کردن بسته سوئیفت این مراحل را دنبال کنید.

  1. در Xcode، بسته UMP SDK Swift را با رفتن به File > Add Packages... نصب کنید.

  2. در اعلان ظاهر شده، مخزن UMP SDK Swift Package GitHub را جستجو کنید:

    https://github.com/googleads/swift-package-manager-google-user-messaging-platform.git
    
  3. نسخه UMP SDK Swift Package را که می خواهید استفاده کنید انتخاب کنید. برای پروژه‌های جدید، توصیه می‌کنیم از نسخه اصلی تا بعدی استفاده کنید.

سپس Xcode وابستگی های بسته شما را برطرف می کند و آنها را در پس زمینه دانلود می کند. برای جزئیات بیشتر در مورد نحوه افزودن وابستگی های بسته، به مقاله اپل مراجعه کنید.

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

می‌توانید شناسه برنامه خود را در رابط کاربری Ad Manager پیدا کنید. شناسه را با قطعه کد زیر به Info.plist خود اضافه کنید:

<key>UMPApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>

باید با استفاده از requestConsentInfoUpdateWithParameters:completionHandler: در هر راه‌اندازی برنامه، اطلاعات رضایت کاربر را به‌روزرسانی کنید. این درخواست موارد زیر را بررسی می کند:

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

سویفت


// Requesting an update to consent information should be called on every app launch.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
  requestConsentError in
  // ...
}

هدف-C


// Requesting an update to consent information should be called on every app launch.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable requestConsentError) {
                           // ...
                         }];

فرم پیام حریم خصوصی را بارگیری و ارائه کنید

پس از دریافت به‌روزترین وضعیت رضایت، با loadAndPresentIfRequiredFromViewController:completionHandler: تماس بگیرید تا فرم‌های مورد نیاز برای جمع‌آوری رضایت کاربر را بارگیری کنید. پس از بارگذاری، فرم ها بلافاصله ارائه می شوند.

سویفت


try await UMPConsentForm.loadAndPresentIfRequired(from: viewController)

هدف-C


[UMPConsentForm
    loadAndPresentIfRequiredFromViewController:viewController
                             completionHandler:^(NSError *_Nullable loadAndPresentError) {
                                 // Consent gathering process is complete.
                                }];

گزینه های حفظ حریم خصوصی

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

بررسی کنید که آیا یک نقطه ورود گزینه های حریم خصوصی مورد نیاز است یا خیر

بعد از اینکه requestConsentInfoUpdateWithParameters:completionHandler: را فراخوانی کردید، UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus را بررسی کنید تا مشخص کنید آیا یک نقطه ورودی گزینه های حریم خصوصی برای برنامه شما مورد نیاز است یا خیر. اگر یک نقطه ورودی مورد نیاز است، یک عنصر رابط کاربری قابل مشاهده و قابل تعامل به برنامه خود اضافه کنید که فرم گزینه های حریم خصوصی را ارائه می دهد. اگر نقطه ورود حریم خصوصی مورد نیاز نیست، عنصر UI خود را طوری پیکربندی کنید که قابل مشاهده و تعامل نباشد.

سویفت


var isPrivacyOptionsRequired: Bool {
  return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus == .required
}

هدف-C


- (BOOL)areGDPRConsentMessagesRequired {
  return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus ==
         UMPPrivacyOptionsRequirementStatusRequired;
}

- (void)gatherConsentFromConsentPresentationViewController:(UIViewController *)viewController
                                  consentGatheringComplete:
                                      (void (^)(NSError *_Nullable))consentGatheringComplete {
  UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
  // Set tag for under age of consent. Use NO constant to indicate that the user is not under age.
  parameters.tagForUnderAgeOfConsent = NO;

  UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
  // Uncomment the following line to simulate a consent request from users in the
  // European Economic Area (EEA) for testing purposes.
  // debugSettings.geography = UMPDebugGeographyEEA;
  parameters.debugSettings = debugSettings;

  // Requesting an update to consent information should be called on every app launch.
  [UMPConsentInformation.sharedInstance
      requestConsentInfoUpdateWithParameters:parameters
                           completionHandler:^(NSError *_Nullable requestConsentError) {
                             // ...
                           }];
}

- (void)loadAndPresentIfRequiredFromViewController:(UIViewController *)viewController
                           completionHandler:(void (^)(NSError *_Nullable))completionHandler {
  [UMPConsentForm
      loadAndPresentIfRequiredFromViewController:viewController
                               completionHandler:^(NSError *_Nullable loadAndPresentError) {
                                   // Consent gathering process is complete.
                                  }];
}

- (void)presentPrivacyOptionsFormFromViewController:(UIViewController *)viewController
                                  completionHandler:
                                      (void (^)(NSError *_Nullable))completionHandler {
  [UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
                                            completionHandler:completionHandler];
}

@end

برای فهرست کامل وضعیت‌های مورد نیاز گزینه‌های حریم خصوصی، به UMPPrivacyOptionsRequirementStatus مراجعه کنید.

فرم گزینه های حریم خصوصی را ارائه دهید

هنگامی که کاربر با عنصر شما تعامل دارد، فرم گزینه های حریم خصوصی را ارائه دهید:

سویفت


UMPConsentForm.presentPrivacyOptionsForm(
  from: viewController, completionHandler: completionHandler)

هدف-C


[UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
                                          completionHandler:completionHandler];

درخواست تبلیغات با رضایت کاربر

قبل از درخواست تبلیغات، از UMPConsentInformation.sharedInstance.canRequestAds استفاده کنید تا بررسی کنید آیا رضایت کاربر را دریافت کرده اید یا خیر:

سویفت

UMPConsentInformation.sharedInstance.canRequestAds

هدف-C

UMPConsentInformation.sharedInstance.canRequestAds;

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

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

از کار اضافی درخواست آگهی جلوگیری کنید

همانطور که UMPConsentInformation.sharedInstance.canRequestAds پس از جمع‌آوری رضایت و پس از فراخوانی requestConsentInfoUpdateWithParameters:completionHandler: بررسی می‌کنید، مطمئن شوید که منطق شما از درخواست‌های اضافی تبلیغاتی جلوگیری می‌کند که ممکن است منجر به بازگشت true هر دو بررسی شود. به عنوان مثال، با یک متغیر بولی.

تست کردن

اگر می‌خواهید یکپارچه‌سازی برنامه خود را در حین توسعه آزمایش کنید، این مراحل را دنبال کنید تا دستگاه آزمایشی خود را به صورت برنامه‌نویسی ثبت کنید. قبل از انتشار برنامه، حتماً کدی را که این شناسه‌های دستگاه آزمایشی را تنظیم می‌کند حذف کنید.

  1. درخواست requestConsentInfoUpdateWithParameters:completionHandler: .
  2. خروجی گزارش را برای پیامی شبیه به مثال زیر بررسی کنید، که شناسه دستگاه شما و نحوه افزودن آن را به عنوان یک دستگاه آزمایشی نشان می دهد:

    <UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
    
  3. شناسه دستگاه آزمایشی خود را در کلیپ بورد خود کپی کنید.

  4. کد خود را برای فراخوانی UMPDebugSettings().testDeviceIdentifiers تغییر دهید و لیستی از شناسه های دستگاه آزمایشی خود را ارسال کنید.

    سویفت

    let parameters = UMPRequestParameters()
    let debugSettings = UMPDebugSettings()
    
    debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
    parameters.debugSettings = debugSettings
    
    // Include the UMPRequestParameters in your consent request.
    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" ];
    parameters.debugSettings = debugSettings;
    
    // Include the UMPRequestParameters in your consent request.
    [UMPConsentInformation.sharedInstance
        requestConsentInfoUpdateWithParameters:parameters
                            completionHandler:^(NSError *_Nullable error){
                              // ...
    }];
    

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

UMP SDK با استفاده از UMPDebugGeography راهی برای آزمایش رفتار برنامه شما ارائه می‌کند که گویی دستگاه در مناطق مختلفی مانند EEA یا بریتانیا قرار دارد. توجه داشته باشید که تنظیمات اشکال زدایی فقط در دستگاه های آزمایشی کار می کند.

سویفت

let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()

debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = .EEA
parameters.debugSettings = debugSettings

// Include the UMPRequestParameters in your consent request.
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;

// Include the UMPRequestParameters in your consent request.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error){
                           // ...
}];

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

سویفت

UMPConsentInformation.sharedInstance.reset()

هدف-C

[UMPConsentInformation.sharedInstance reset];

نمونه هایی در GitHub

نمونه کاملی از ادغام UMP SDK که در این صفحه در Swift UmpExample و Objective-C UmpExample پوشش داده شده است را ببینید.