Geri bildiriminizi paylaşın ve Google Mobile Ads SDK'sı yol haritasının şekillendirilmesine yardımcı olun. 5 Mayıs 2023'te sona ermeden önce 2023 Google Mobile Ads SDK'sı Yıllık Anketi'ne katılın.

Başlayın

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Google AB Kullanıcı Rızası Politikası uyarınca Avrupa Ekonomik Alanı'ndaki (AEA) kullanıcılarınızla Birleşik Krallık genelinde belirli açıklamalar yapmanız ve yasal olarak gerekli olduğu durumlarda çerez veya başka yerel depolama bilgilerinin yanı sıra reklam yayınlamak için kişisel verileri (AdID gibi) kullanma konusunda izin almanız gerekir. Bu politika AB eGizlilik Yönergesi ve Genel Veri Koruma Yönetmeliği'nin (GDPR) şartlarını yansıtmaktadır.

Google, yayıncıları bu politika kapsamındaki gereksinimleri yerine getirmeleri konusunda desteklemek için User Messaging Platform (UMP) SDK'sını sunar. UMP SDK'sı en son IAB standartlarını destekleyecek şekilde güncellendi. Tüm bu yapılandırmalar artık gizlilik ve mesajlaşma AdMob özelliğiyle kolayca yönetilebilir.

Ön koşullar

Kullanıcı mesajı türleri

Desteklenen mesajların tam listesi için Kullanıcı mesajı türleri başlıklı makaleyi inceleyin. Her mesaj türünün uygulanmasıyla ilgili özel talimatlar için soldaki gezinme çubuğuna bakın.

SDK'yı içe aktarın

CocoaPods (tercih edilen)

UMP SDK'sı, Google Mobile Ads SDK'sı 7.64.0 sürümünden itibaren Google Mobile Ads SDK'sı bağımlılığına dahil edilmiştir.

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

pod 'Google-Mobile-Ads-SDK'

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

pod install --repo-update

CocoaPods'da yeniyseniz Podfile oluşturma ve kullanma ile ilgili ayrıntılar için CocoaPods'u kullanma sayfasına bakın.

Manuel olarak indir

SDK'yı içe aktarmanın diğer bir yolu da SDK'yı manuel olarak oluşturmaktır.

SDK'yı indir

Ardından, çerçeveyi Xcode projenize sürükleyin ve Gerekirse öğeleri kopyalayın'ı seçin.

Ardından, aşağıdakileri kullanarak çerçeveyi istediğiniz dosyaya ekleyebilirsiniz:

Swift

import UserMessagingPlatform

Objective-C

#include <UserMessagingPlatform/UserMessagingPlatform.h>

Info.plist dosyanızı güncelleyin

Uygulama kimliğinizi bulun ve Info.plist cihazınıza ekleyin:

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

Bir mesajın gösterilmesi gerekip gerekmediğini belirleme

Her uygulama başlatmada bir form yüklemeden önce requestConsentInfoUpdateWithParameters:completionHandler: kullanarak kullanıcının izin bilgilerinin güncellenmesini istemeniz gerekir. Kullanıcılarınızın daha önce izin vermemiş olması veya izinlerinin süresinin dolması durumunda bu kullanıcıların izin vermesi gerekip gerekmediğini belirleyebilirsiniz.

Gerekirse daha sonra formu sunabilirsiniz.

Uygulama başlangıcında durumun nasıl kontrol edileceğine ilişkin bir örnek aşağıda verilmiştir:

Swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
   // 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.
        }
       })
}

Objective-C

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

// 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.
                           }
                         }];
}

Varsa form yükleyin

Bir formu görüntülemeden önce, kullanılabilir bir form olup olmadığını belirlemeniz gerekir. Kullanılamayan formlar, kullanıcının sınırlı reklam izlemeyi etkinleştirmesi veya reşit olma yaşının altında olarak etiketlemiş olmasından kaynaklanabilir.

Bir formun kullanılabilirliğini kontrol etmek için daha öncethe formStatus property on the UMPConsentInformation instance oluşturduğunuz formu kullanın.

Ardından, formu yüklemek için bir sarmalayıcı yöntemi ekleyin:

Swift

// 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() {

}

Objective-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 {

}

Formu yüklemek için the static loadWithCompletionHandler: method on the UMPConsentForm classkodunu kullanın.

Swift

func loadForm() {
  // Loads a consent form. Must be called on the main thread.
  UMPConsentForm.load(
      withCompletionHandler: { form, loadError in
        if loadError != nil {
          // Handle the error
        } else {
          // Present the form
        }
      })
}

Objective-C

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

Gerekirse formu gönderin

Formun kullanılabilirliğini belirledikten ve yükledikten sonraUMPConsentForm örneğindekipresentFromViewController:completionHandler: yöntemini kullanarak formu sunun.

Daha öncekiUMPConsentInformation nesneyi kullanarakconsent status loadForm yönteminizi güncelleyin:

Swift

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.
              }
                // Handle dismissal by reloading form.
                loadForm();
            })
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  })
}

Objective-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.
                      }
                        // Handle dismissal by reloading form.
                        [self loadForm];
                    }];
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  }];
}

Kullanıcı bir seçim yaptıktan veya formu kapattıktan sonra herhangi bir işlem yapmanız gerekirse bu mantığı formunuzun tamamlanma işleyicisine veya geri çağırmasına yerleştirin.

Test

Coğrafi konumu zorunlu kılın

UMP SDK'sı, cihaz the debugGeography property of type UMPDebugGeography on UMPDebugSettingskullanarak AEA veya Birleşik Krallık'taymış gibi uygulamanızın davranışını test etmenin bir yolunu sunar.

Hata ayıklama işlevini kullanmak için uygulamanızın hata ayıklama ayarlarında test cihazınızın karma kimliğini sağlamanız gerekir. Bu değeri ayarlamadanrequestConsentInfoUpdateWithParameters:completionHandler: yöntemini çağırırsanız uygulamanız çalıştırıldığında gerekli kimlik karmasını günlüğe kaydeder.

Swift

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

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

UMPDebugGeographyile aşağıdaki seçeneklerden birini zorunlu kılabilirsiniz:

Hata Ayıklama Coğrafyası Açıklama
UMPDebugGeographyDisabled Hata ayıklama konumu devre dışı bırakıldı.
UMPDebugGeographyEEA Coğrafya, hata ayıklama cihazları için AEA'da olduğu gibi görünür.
UMPDebugGeographyNotEEA Hata ayıklama cihazları için bu bölgenin AEA'da olmadığı anlaşılıyor.

Hata ayıklama ayarlarının yalnızca test cihazlarında çalıştığını unutmayın. Testler varsayılan olarak zaten etkinleştirildiğinden, emülatörlerin cihaz kimliği listenize eklenmesi gerekmez.

UMP SDK'sıyla uygulamanızı test ederken, bir kullanıcının ilk yükleme deneyimini simüle etmek için SDK durumunu sıfırlamanız yararlı olabilir. SDK, bunu yapmanın reset yöntemini sunar.

Swift

UMPConsentInformation.sharedInstance.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

UMP SDK'sını projenizden tamamen kaldırmaya karar verirseniz reset yöntemini de çağırmanız gerekir.