Başlama

.

Google Kullanıcı Mesajlaşma Platformu (UMP) SDK'sı, gizlilik seçeneklerini yönetmenize yardımcı olur. Daha fazla bilgi için bkz. . Gizlilik ve Hakkında . .

Mesaj türü oluşturma

Kullanıcı mesajlarını . Kullanılabilir kullanıcı mesajı türleri Gizlilik ve mesajlaşma AdMob hesap. UMP SDK'sı bir uygulama kimliğinden oluşturulan AdMob gizlilik mesajı birçok yolu vardır.

Daha fazla bilgi için bkz. . Gizlilik ve mesajlaşma hakkında

SDK'yı içe aktarma

CocoaPods (tercih edilen)

SDK'yı bir iOS projesine aktarmanın en kolay yolu CocoaPods'da bulabilirsiniz. Projenizin Podfile'a gidin ve bu satırı uygulamanızın hedefine ekleyin:

pod 'GoogleUserMessagingPlatform'

Ardından aşağıdaki komutu çalıştırın:

pod install --repo-update

CocoaPods'u kullanmaya yeni başladıysanız Ayrıntılı bilgi için CocoaPods'a göz atın: ve Podfiles'i kullanın.

Swift Paket Yöneticisi

UMP SDK'sı, Swift Package Manager'ı da destekler. Aşağıdaki adımları uygulayarak içe aktaracağım.

  1. Xcode'da şuraya giderek UMP SDK Swift Paketini yükleyin: Dosya > Paket Ekle...

  2. Görüntülenen istemde UMP SDK Swift Package GitHub'ı arayın depo:

    https://github.com/googleads/swift-package-manager-google-user-messaging-platform.git
    
  3. Kullanmak istediğiniz UMP SDK Swift Paketi sürümünü seçin. Yeni Bir Sonraki Ana Sürüm'ü kullanmanızı öneririz.

Daha sonra Xcode, paket bağımlılıklarınızı çözer ve bunları arka plan. Paket bağımlılıkları ekleme hakkında daha fazla bilgi için Apple'ın makalesine bakın.

Manuel indirme

SDK'yı içe aktarmanın diğer yolu ise bu işlemi manuel olarak yapmaktır.

SDK'yı indir

Ardından çerçeveyi Xcode projenize sürükleyin ve Kopyala kontrol edin.

Ardından, aşağıdaki komutu kullanarak çerçeveyi ihtiyacınız olan herhangi bir dosyaya ekleyebilirsiniz:

Swift

import UserMessagingPlatform

Objective-C

#include <UserMessagingPlatform/UserMessagingPlatform.h>

Uygulama kimliğini ekleyin

Uygulama kimliğinizi şurada bulabilirsiniz: . AdMob kullanıcı arayüzü. . Kimliği Info.plist aşağıdaki kod snippet'i ile:

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

Her uygulamada kullanıcının rıza bilgilerinin güncellenmesini istemelisiniz. requestConsentInfoUpdateWithParameters:completionHandler:kullanarak başlat. Bu istek, şu:

  • İzin gerekip gerekmediği. Örneğin, veya önceki rıza kararının süresinin dolduğu anlamına gelir.
  • Gizlilik seçenekleri giriş noktasının gerekli olup olmadığı. Bazı gizlilik mesajları uygulamaların, kullanıcıların gizlilik seçeneklerini istedikleri zaman değiştirmesine izin vermesini zorunlu kılmak.

Şuradaki UIViewController durumunun nasıl kontrol edileceğine dair bir örnek: viewDidLoad() yöntemini çağırın.

Swift

override func viewDidLoad() {
  super.viewDidLoad()

  // Request an update for the consent information.
  UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: nil) {
    [weak self] requestConsentError in
    guard let self else { return }

    if let consentError = requestConsentError {
      // Consent gathering failed.
      return print("Error: \(consentError.localizedDescription)")
    }

    // TODO: Load and present the privacy message form.
  }
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];

  // Request an update for the consent information.
  [UMPConsentInformation.sharedInstance
      requestConsentInfoUpdateWithParameters:nil
          completionHandler:^(NSError *_Nullable requestConsentError) {
            if (requestConsentError) {
              // Consent gathering failed.
              NSLog(@"Error: %@", requestConsentError.localizedDescription);
              return;
            }

            // TODO: Load and present the privacy message form.
          }];
}

Gerekirse bir gizlilik mesajı formu yükleyin ve gösterin

En güncel izin durumunu aldıktan sonra loadAndPresentIfRequiredFromViewController:completionHandler: tüm formları kullanıcı izni almanız gerekir. Yüklemenin ardından formlar hemen görünür.

Swift

override func viewDidLoad() {
  super.viewDidLoad()

  // Request an update for the consent information.
  UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: nil) {
    [weak self] requestConsentError in
    guard let self else { return }

    if let consentError = requestConsentError {
      // Consent gathering failed.
      return print("Error: \(consentError.localizedDescription)")
    }

    UMPConsentForm.loadAndPresentIfRequired(from: self) {
      [weak self] loadAndPresentError in
      guard let self else { return }

      if let consentError = loadAndPresentError {
        // Consent gathering failed.
        return print("Error: \(consentError.localizedDescription)")
      }

      // Consent has been gathered.
    }
  }
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];

  __weak __typeof__(self) weakSelf = self;
  // Request an update for the consent information.
  [UMPConsentInformation.sharedInstance
      requestConsentInfoUpdateWithParameters:nil
          completionHandler:^(NSError *_Nullable requestConsentError) {
            if (requestConsentError) {
              // Consent gathering failed.
              NSLog(@"Error: %@", requestConsentError.localizedDescription);
              return;
            }

            __strong __typeof__(self) strongSelf = weakSelf;
            if (!strongSelf) {
              return;
            }

            [UMPConsentForm loadAndPresentIfRequiredFromViewController:strongSelf
                completionHandler:^(NSError *loadAndPresentError) {
                  if (loadAndPresentError) {
                    // Consent gathering failed.
                    NSLog(@"Error: %@", loadAndPresentError.localizedDescription);
                    return;
                  }

                  // Consent has been gathered.
                }];
          }];
}

Kullanıcı seçim yaptıktan veya kapatıldıktan sonra herhangi bir işlem yapmanız gerekirse mantığını completion handlerbölümüne yerleştirin. seçin.

Gizlilik seçenekleri

Bazı gizlilik mesajı formları, yayıncı tarafından oluşturulan bir gizlilikten sunulur seçenekleri giriş noktasından yararlanarak kullanıcıların gizlilik seçeneklerini istedikleri zaman yönetmelerine olanak tanıyor. Kullanıcılarınızın gizlilik seçeneklerinde hangi mesajı gördüğü hakkında daha fazla bilgi edinmek için giriş noktası, bkz. . Kullanılabilir kullanıcı mesajı türleri.

Gizlilik seçenekleri giriş noktası uygulamak için aşağıdaki adımları tamamlayın:

  1. Çek UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus.
  2. Gizlilik seçenekleri giriş noktası Uygulamanıza görünür ve etkileşimde bulunulabilir bir kullanıcı arayüzü öğesi ekleyin.
  3. Gizlilik seçenekleri formunu şu komutla tetikleyin: presentPrivacyOptionsFormFromViewController:completionHandler:

Aşağıdaki kod örneğinde bu adımlar gösterilmektedir:

Swift

@IBOutlet weak var privacySettingsButton: UIBarButtonItem!

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

override func viewDidLoad() {
  // ...

  // Request an update for the consent information.
  UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
    // ...

    UMPConsentForm.loadAndPresentIfRequired(from: self) {
      //...

      // Consent has been gathered.

      // Show the button if privacy options are required.
      self.privacySettingsButton.isEnabled = isPrivacyOptionsRequired
    }
  }
  // ...
}

// Present the privacy options form when a user interacts with the
// privacy settings button.
@IBAction func privacySettingsTapped(_ sender: UIBarButtonItem) {
  UMPConsentForm.presentPrivacyOptionsForm(from: self) {
    [weak self] formError in
    guard let self, let formError else { return }

    // Handle the error.
  }
}

Objective-C

@interface ViewController ()
@property(weak, nonatomic) IBOutlet UIBarButtonItem *privacySettingsButton;
@end

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

- (void)viewDidLoad {
  // ...

  __weak __typeof__(self) weakSelf = self;
  // Request an update for the consent information.
  [UMPConsentInformation.sharedInstance
      requestConsentInfoUpdateWithParameters:parameters
          completionHandler:^(NSError *_Nullable requestConsentError) {
            // ...

            [UMPConsentForm loadAndPresentIfRequiredFromViewController:strongSelf
                completionHandler:^(NSError *loadAndPresentError) {
                  // ...

                  // Consent has been gathered.

                  // Show the button if privacy options are required.
                  strongSelf.privacySettingsButton.enabled = isPrivacyOptionsRequired;
                }];
          }];
}

// Present the privacy options form when a user interacts with your
// privacy settings button.
- (IBAction)privacySettingsTapped:(UIBarButtonItem *)sender {
  [UMPConsentForm presentPrivacyOptionsFormFromViewController:self
                                completionHandler:^(NSError *_Nullable formError) {
                                  if (formError) {
                                    // Handle the error.
                                  }
                                }];
}

Reklam isteğinde bulun

Uygulamanızda reklam isteğinde bulunmadan önce izin alıp almadığınızı kontrol edin UMPConsentInformation.sharedInstance.canRequestAdskullanan kullanıcıdan. İki tür izin alınırken kontrol edilecek yerler:

  • Mevcut oturumda izin alındıktan sonra.
  • requestConsentInfoUpdateWithParameters:completionHandler:adlı kişiyi aramanızın hemen ardından. Önceki oturumda izin alınmış olabilir. Gecikme olarak en iyi uygulama olarak, geri arama işleminin tamamlanmasını beklememenizi öneririz. Uygulamanız kullanıma sunulduktan hemen sonra reklam yüklemeye başlamanızı öneririz.

İzin alma sürecinde bir hata oluşursa reklam isteğinde bulunmayı deneyin. UMP SDK'sı, Search Ads 360'ta önceki kabul edilir.

Swift

class ViewController: UIViewController {

  // Use a boolean to initialize the Google Mobile Ads SDK and load ads once.
  private var isMobileAdsStartCalled = false

  override func viewDidLoad() {
    super.viewDidLoad()

    // Request an update for the consent information.
    UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: nil) {
      [weak self] requestConsentError in
      guard let self else { return }

      if let consentError = requestConsentError {
        // Consent gathering failed.
        return print("Error: \(consentError.localizedDescription)")
      }

      UMPConsentForm.loadAndPresentIfRequired(from: self) {
        [weak self] loadAndPresentError in
        guard let self else { return }

        if let consentError = loadAndPresentError {
          // Consent gathering failed.
          return print("Error: \(consentError.localizedDescription)")
        }

        // Consent has been gathered.
        if UMPConsentInformation.sharedInstance.canRequestAds {
          self.startGoogleMobileAdsSDK()
        }
      }
    }
    
    // Check if you can initialize the Google Mobile Ads SDK in parallel
    // while checking for new consent information. Consent obtained in
    // the previous session can be used to request ads.
    if UMPConsentInformation.sharedInstance.canRequestAds {
      startGoogleMobileAdsSDK()
    }
  }
  
  private func startGoogleMobileAdsSDK() {
    DispatchQueue.main.async {
      guard !self.isMobileAdsStartCalled else { return }

      self.isMobileAdsStartCalled = true

      // Initialize the Google Mobile Ads SDK.
      GADMobileAds.sharedInstance().start()

      // TODO: Request an ad.
      // GADInterstitialAd.load(...)
    }
  }
}

Objective-C

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  __weak __typeof__(self) weakSelf = self;
  // Request an update for the consent information.
  [UMPConsentInformation.sharedInstance
      requestConsentInfoUpdateWithParameters:nil
          completionHandler:^(NSError *_Nullable requestConsentError) {
            if (requestConsentError) {
              // Consent gathering failed.
              NSLog(@"Error: %@", requestConsentError.localizedDescription);
              return;
            }
            __strong __typeof__(self) strongSelf = weakSelf;
            if (!strongSelf) {
              return;
            }

            [UMPConsentForm loadAndPresentIfRequiredFromViewController:strongSelf
                completionHandler:^(NSError *loadAndPresentError) {
                  if (loadAndPresentError) {
                    // Consent gathering failed.
                    NSLog(@"Error: %@", loadAndPresentError.localizedDescription);
                    return;
                  }

                  // Consent has been gathered.
                  __strong __typeof__(self) strongSelf = weakSelf;
                  if (!strongSelf) {
                    return;
                  }

                  if (UMPConsentInformation.sharedInstance.canRequestAds) {
                    [strongSelf startGoogleMobileAdsSDK];
                  }
                }];
          }];

  // Check if you can initialize the Google Mobile Ads SDK in parallel
  // while checking for new consent information. Consent obtained in
  // the previous session can be used to request ads.
  if (UMPConsentInformation.sharedInstance.canRequestAds) {
    [self startGoogleMobileAdsSDK];
  }
}

- (void)startGoogleMobileAdsSDK {
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    // Initialize the Google Mobile Ads SDK.
    [GADMobileAds.sharedInstance startWithCompletionHandler:nil];

    // TODO: Request an ad.
    // [GADInterstitialAd loadWithAdUnitID...];
  });
}

Test

Geliştirme sürecinde uygulamanızdaki entegrasyonu test etmek isterseniz bu adımları izleyerek test cihazınızı programlı olarak kaydedin. Etiketinizi kaldırdığınızda uygulamanızı yayınlamadan önce bu test cihazı kimliklerini belirleyen koddur.

.
  1. requestConsentInfoUpdateWithParameters:completionHandler:numaralı telefonu arayın.
  2. Aşağıdaki örneğe benzer bir mesaj için günlük çıkışını kontrol edin: cihaz kimliğinizi ve test cihazı olarak nasıl ekleyeceğinizi gösterir:

    <UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
    
  3. Test cihazınızın kimliğini panoya kopyalayın.

  4. Kodunuzu şu şekilde değiştirin: için UMPDebugSettings().testDeviceIdentifiers ve pas test cihazı kimliklerinizin listesi.

    Swift

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

    Objective-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){
                              ...
    }];
    

Bir coğrafi bölgeyi zorunlu kılın

UMP SDK'sı, uygulamanızın davranışını cihaz sanki AEA veya Birleşik Krallık'ta the debugGeography property of type UMPDebugGeography on UMPDebugSettingskullanarak bulabilirsiniz. Lütfen Hata ayıklama ayarları yalnızca test cihazlarında çalışır.

Swift

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

Objective-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){
                           ...
}];

Uygulamanızı UMP SDK'sı ile test ederken kullanıcının ilk yükleme deneyimini simüle edebilmek için SDK durumunu kontrol edin. SDK, bunu yapmak için reset yöntemini sağlar.

Swift

UMPConsentInformation.sharedInstance.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

GitHub'daki örnekler

. UMP SDK'sı entegrasyon örnekleri: Swift | Objective-C