SDK taşıma

Bu sayfada mevcut ve önceki sürümlerle ilgili taşıma işlemleri ele alınmaktadır.

10'dan v11'e geçin

Minimum dağıtım hedefi

Minimum dağıtım hedefi, iOS 12'ye yükseltildi.

Minimum Xcode sürümü

Desteklenen minimum Xcode sürümü, 15.1'e yükseltildi.

iOS 12'de reklam yayını durdurulacak

Google Mobile Ads SDK'sının 11.0.0 sürümü, yalnızca iOS 13 ve sonraki sürümleri çalıştıran cihazlarda reklam sunar.

GoogleAppMeasurement bağımlılığı kaldırıldı

11.0.0 sürümünde GoogleAppMeasurement bağımlılığı kaldırıldı. AdMob'daki kullanıcı metriklerinin geçişini destekleyen bu bağımlılık, 2024'ün başlarında kullanımdan kaldırılacak. AdMob'da kullanıcı metriklerini toplamaya devam etmek için AdMob uygulamanızı Firebase'e bağlayın ve Firebase için Google Analytics SDK'sını uygulamanıza entegre edin.

Tam ekran reklam sunumundaki değişiklikler

Aşağıdaki değişiklikler çeşitli reklam biçimlerini etkilemektedir:

  • Uygulama açılışı
  • Geçişli
  • Ödül olarak verildi
  • Ödüllü geçiş reklamı

-canPresentFromRootViewController:error: ve -presentFromRootViewController: içindeki görüntüleme denetleyicisi parametresi boş değer atanabilir. Hiç boş değer geçerse reklam, görünüm denetleyicisi hiyerarşisinde en üstteki görünüm denetleyicisinden sunulur.

Kaldırılan yöntemler

Aşağıdaki yöntemler kaldırıldı.

Sürüm 11.0.0 Tür Yöntem Notlar
GADAppOpenAd load(withAdUnitID adUnitID: String, request: GADRequest?, orientation: UIInterfaceOrientation) Bunun yerine load(withAdUnitID adUnitID: String, request: GADRequest?) alanını kullanın.
GADMediationBannerAdEventDelegate willBackgroundApplication() Değişim yapılmaz.
GADMediationInterstitialAdEventDelegate willBackgroundApplication() Değişim yapılmaz.
GADMediationNativeAdEventDelegate willBackgroundApplication() Değişim yapılmaz.
GADMediationRewardedAdEventDelegate didRewardUser(with reward: GADAdReward) Bunun yerine didRewardUser() alanını kullanın.
GADMediatedUnifiedNativeAdNotificationSource mediatedNativeAdWillLeaveApplication(_ mediatedNativeAd: GADMediatedUnifiedNativeAd) Değişim yapılmaz.
GADRequestConfiguration setSameAppKeyEnabled(_ enabled: Bool) Bunun yerine setPublisherFirstPartyIDEnabled(_ enabled: Bool) politikasını kullanın.
tagForUnderAge(ofConsent underAgeOfConsent: Bool) Bunun yerine tagForUnderAgeOfConsent özelliğini kullanın.
tag(forChildDirectedTreatment childDirectedTreatment: Bool) Bunun yerine tagForChildDirectedTreatment özelliğini kullanın.

Mülkler kaldırıldı

Aşağıdaki özellikler kaldırıldı.

v11.0.0 Sınıfı Özellik Notlar
GADMediationAdConfiguration hasUserLocation Değişim yapılmaz.
userLatitude
userLongitude
userLocationAccuracyInMeters
childDirectedTreatment Bunun yerine GADMobileAds.sharedInstance.requestConfiguration.tagForChildDirectedTreatment alanını kullanın.
GADResponseInfo adNetworkClassName Bunun yerine loadedAdNetworkResponseInfo adlı satıcıdan adNetworkClassName kullanın.

GADAdFormatUnknown kaldırıldı

Değiştirilmeden GADAdFormatUnknown kaldırıldı.

Günlük kaydı SDK'sı sürümünde yapılan değişiklikler

11.0.0 sürümü, sdkVersion uygulamasını kaldırır. Google Mobile Ads SDK'sı sürümünü günlüğe kaydetmek için bunun yerine versionNumber biçimini kullanın.

Sürüm 10.0.0

GADMobileAds.sharedInstance().sdkVersion

Sürüm 11.0.0

GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber)

GADAdLoader hata işlemeyle ilgili değişiklikler

GADAdLoader, 11.0.0 sürümünden itibaren delegate, istenen reklam türlerinin yetki verme protokolüne uymuyorsa reklam isteği yapmaz. Daha önce, reklam isteği yapıldıktan sonra başarısız oluyordu.

Test davranışındaki değişiklikler

Aşağıdaki özelliklerin true değerini döndürdüğü durumlara ilişkin güncel koşulları gösteren tabloya bakın.

Sınıf Özellik
GADMediationAdConfiguration isTestRequest
GADCustomEventRequest isTesting
v10.0.0 v11.0.0
  • Cihaz, testDeviceIdentifiers içinde açık bir şekilde test cihazı olarak beyan edilmiştir.
  • Cihaz, testDeviceIdentifiers içinde açık bir şekilde test cihazı olarak beyan edilmiştir.
  • Cihaz bir simülatör.
  • Cihaz, Ad Manager kullanıcı arayüzünde açık bir şekilde test cihazı olarak beyan edilmiştir.

v9'dan v10'a geçiş

iOS 11'de reklamların yayını durduruluyor

Google Mobile Ads SDK'sı 10.0.0 sürümü, yalnızca iOS 12 ve sonraki sürümleri çalıştıran cihazlarda reklam yayınlar.

Google Mobile Ads SDK'sının 10.0.0 sürümüne geçmeniz iOS 11 ve iOS 10 cihazlardaki uygulamanızı kesintiye uğratmaz, ancak bu cihazlarda hiçbir reklam sunulmaz.

Ad Manager Uygulama Kimliği koşulu

Ad Manager Uygulama Kimliği, artık tüm Ad Manager uygulamaları için Info.plist ürününde ve ca-app-pub-################~########## biçimini gerektirmektedir. Daha fazla bilgi için Info.plist dosyanızı güncelleme bölümüne bakın.

GoogleAppMeasurement.xcframework koşulu

GoogleAppMeasurement.xcframework artık tüm Ad Manager uygulamaları için zorunludur. Google Mobile Ads SDK'sını Cocoapods veya Swift Package Manager üzerinden yüklerseniz ek bir işlem yapmanız gerekmez. Çerçeveleri manuel olarak yüklüyorsanız daha ayrıntılı bilgi için Manuel İndirme bölümünü inceleyin.

Bit kodu ile derleme artık desteklenmiyor

Google Mobile Ads SDK'sını entegre etmek için artık mobil uygulamalarınızdaki bit kodunu devre dışı bırakmanız gerekmektedir.

Kaldırılan türler

Tür Notlar
GADGender Değişim yapılamaz.
GADMRewardBasedVideoAdNetworkAdapterProtocol Ağları Seçin bölümünde listelenen tüm ödüllü uyumlulaştırma bağdaştırıcıları bir yıldan uzun bir süredir bu protokolleri kullanmayı bıraktı. Uyumlulaştırma ve özel etkinlikler için GADMediationAdapter'ı kullanın.
GADMRewardBasedVideoAdNetworkConnectorProtocol

Mülkler kaldırıldı

Aşağıdaki özellikler değiştirilmeden kaldırılmıştır.

v10.0.0 Sınıfı Özellik
GADMediationAdRequest userBirthday
userGender
userHasLocation
userLatitude
userLongitude
userLocationAccuracyInMeters
userLocationDescription
GADCustomEventRequest userHasLocation
userLatitude
userLongitude
userLocationAccuracyInMeters
userLocationDescription

v8'den v9'a geçiş

iOS 10'da reklamların yayını durduruluyor

Google Mobile Ads SDK'sı 9.0.0 sürümünün desteklediği minimum iOS sürümü, iOS 11'dir.

Google Mobile Ads SDK'sının 9.0.0 sürümüne geçmeniz iOS 10 cihazlardaki uygulamanızı kesintiye uğratmaz, ancak bu cihazlarda reklam sunulmaz.

Durum çubuğu denetimleri için daha sıkı yaptırımlar

9.0.0 sürümünden itibaren, tam ekran biçimli reklamlar sunduğunuzda uygulamanız, reklamların durum çubuğunun sunumunu kontrol edebilmesini sağlamalıdır. Bunu yapmazsanız günlüklerde bir hata mesajı görürsünüz.

Uygulamanızdaki görünüm denetleyicilerinin düzenine bağlı olarak, bunu sağlamak için herhangi bir değişiklik yapmanız gerekmeyebilir. Reklamınızın rootViewController öğesinde childViewControllerForStatusBarHidden özelliğini ayarlamanız gerekip gerekmediğini düşünün.

adDidSunumFullScreenContent öğesinin adını adWillpresentFullScreenContent olarak değiştirin:

Herhangi bir davranış değişikliği olmaz. Yetki verme yöntemi, reklam sunulmadan hemen önce çağrılır. Böylece yeni yöntem adı, işlevselliğini daha iyi yansıtır.

GADRequest'te konum ayarı API'sini kaldırma

Konum verileri Google tarafından reklam hedeflemesi amacıyla kullanılmadığından, - (void)setLocationWithLatitude:longitude:accuracy:, GADRequest ürününden silindi. Gerekirse üçüncü taraf reklam ağlarına bilgi sağlamak için üçüncü taraf API'leri kullanın.

Özel etkinlik arayüzlerinin kullanımdan kaldırılması

Özel etkinlikler, Ad Manager Uyumlulaştırmayı kullanan yayıncıların desteklenen reklam ağlarından biri olmayan bir reklam ağı için şelale uyumlulaştırması eklemesini sağlar.

Tüm özel etkinlik protokolleri kullanımdan kaldırılmıştır. Bunun yerine, aynı işlevlere ulaşmak için mevcut GADMediationAdapter ve GADMediationAdEventDelegate protokollerini kullanın. Bu değişiklik, anlaşılırlığı artırır ve ödüllü reklamlar ile interscroller reklamlar için daha önce mevcut olmayan özel etkinlikler oluşturmanıza olanak tanır.

API'ler

Aşağıdaki tabloda, 9.0.0 sürümünden itibaren kullanılması gereken özel etkinlik API'leriyle ilgili uyumlulaştırma bağdaştırıcısı API'leri listelenmiştir.

v8 v9
GADCustomEventBanner
GADCustomEventInterstitial
GADCustomEventNativeAd
GADMediationAdapter GADMediationBannerAd
GADMediationRelayAd
GADMediationInterscrollerAd
GADMediationRewardedAd
GADMediationNativeAd
delegate Temsilci, GADMediationAdapter sınıfındaki her yükleme işlevinin yükleme tamamlama işleyicisi tarafından döndürülür
-init -init
-requestBannerAd:parameter:label:request: -loadBannerForAdConfiguration:completionHandler:
-requestInterstitialAdWithParameter:label:request: -loadInterstitialForAdConfiguration:completionHandler:
-requestNativeAdWithParameter:request:adTypes:options:rootViewController: -loadNativeAdForAdConfiguration:completionHandler:
Yok -loadInterscrollerAdForAdConfiguration:completionHandler:
Yok -loadRewardedAdForAdConfiguration:completionHandler:
-presentFromRootViewController: -presentFromViewController:
-handlesUserClicks -handlesUserClicks
-handlesUserImpressions -handlesUserImpressions

Temsilcileme yöntemleri

Aşağıdaki tabloda, 9.0.0 sürümünden itibaren kullanılması gereken özel etkinlik yetkilendirme yöntemlerine karşılık gelen uyumlulaştırma reklam etkinliği yetkilendirme yöntemleri listelenmiştir.

v8 v9
GADCustomEventBannerStatus
GADCustomEventInterstitialEvents
GADCustomEventNativeAd bitirme
GADMediationAdEventDelegate GADUyumlulaştırmaReklam
-customEventBanner:didReceiveAd:
-customEventInterstitialDidReceiveAd:
Reklam sayısı durumu, GADMediationAdapter sınıfındaki her yükleme işlevinin yükleme tamamlama işleyicisine eklenir
-customEventBanner:didFailAd:
-customEventInterstitial:didFailAd:
-customEventBannerWasClicked:
-customEventInterstitialWasClicked:
-reportClick
-customEventBannerWillPresentModal:
-customEventInterstitialWillPresentModal:
-willPresentFullScreenView
-customEventBannerWillDismissModal:
-customEventInterstitialWillDismissModal:
-willDismissFullScreenView
-customEventBannerDidDismissModal:
-customEventInterstitialDidDismissModal:
-didDismissFullScreenView
-customEventBannerWillLeaveApplication:
-customEventInterstitialWillLeaveApplication:
-willBackgroundApplication
viewControllerForPresentingModalView -[GADMediationBannerAd view]

Kaldırılan/değiştirilen diğer yöntemler ve sabit değerler

Yöntem, sabit veya özellik değişiklikleri
kGAD- ön ekli sabit değer Kaldırıldı. GAD- ön ekli sabit değerler kullanın.
GADAdNetworkResponseInfo credentials kaldırıldı. Bunun yerine adUnitMapping kullanın.
GAMRequest GAMRequest içindeki kGAMSimulatorID desteği sonlandırıldı. Bunun yerine GADRequestConfiguration içinde GADSimulatorID kullanın.
GADCustomNativeAd GADCustomNativeAd içindeki mediaView desteği sonlandırıldı. Bunun yerine mediaContent politikasını kullanın.
GoogleMobileAds Uygulamasında Uygulama İçi Satın Alma API'ları GoogleMobileAds içindeki inAppPurchase API kaldırıldı.

v7'den v8'e geçiş

Google Mobile Ads SDK'sının 8.0.0 sürümü, bazı API'ler yeniden adlandırma ve kaldırma işlemlerinin yanı sıra birkaç önemli değişikliği kullanıma sundu.

Tam ekran biçimindeki API güncellemeleri

8.0.0 sürümünden itibaren geçiş reklamları ve ödüllü reklamlar, daha fazla tutarlılık için genel bir tam ekran reklam stilini paylaşır. Bu yeni tam ekran reklam API'leri, sürüm 7 tam ekran reklam API'lerinden iki önemli farka sahiptir:

  1. load statik sınıf yöntemi.

    Tam ekran reklam yükleme/göstermeyle ilgili önceki yaklaşım aşağıdaki gibidir:

    1. Bir reklam nesnesi örneği oluşturun ve buna bir referans tutun.
    2. Yükü işleyen ve geri çağırmaları gösteren bir temsilci atayın.
    3. Reklam yükleyin.
    4. Reklamın isReady kullanılarak yüklenip yüklenmediğini kontrol edin.
    5. Reklamı gösterin.

    Sürüm 8'de yaklaşım biraz değişiyor. Yükleme geri çağırmaları artık yetki verilmiş kullanıcıların parçası değil. Bunun yerine, load yöntemine tamamlama işleyicisi olarak aktarılırlar:

    1. Reklam sınıfında bir statik yükleme yöntemi çağırın ve bir yükleme tamamlama işleyicisi sağlayın.
    2. Yükleme tamamlama geri çağırmasında, döndürülen yüklü reklama bir referans tutun.
    3. Program geri çağırmalarıyla ilgilenen bir yetki verilmiş kullanıcı atayın.
    4. Reklamı gösterin.

    Yeni yaklaşım aşağıdaki avantajları sağlar:

    • Hiçbir zaman yüklenmemiş bir reklama referansınız olmaz.
    • Bir reklam nesnesini yüklenirken tutmanız gerekmez.
  2. Tutarlı reklam etkinlikleri.

    Etkinlik türü Mevcut API v8 API'sı
    Etkinlikleri yükleme GADInterstitialDelegate veya GADRewardedAdDelegate GAMInterstitialAdLoadCompletionHandler veya GADRewardedAdLoadCompletionHandler
    Sunu etkinlikleri GADFullScreenContentDelegate

    Daha önce, herhangi bir reklam etkinliğini dinlemek için bir geçiş reklamının temsilci özelliğine GADInterstitialDelegate protokolünü uygulayan bir sınıfı veya kullandığınız biçime bağlı olarak ödüllü reklamın yetki veren mülküne GADRewardedAdDelegate protokolünü uygulayan bir sınıfı kaydediyordunuz. Aynı temsilcinin, bir reklamın hem yükleme hem de sunum yaşam döngüsüyle ilgili yöntemleri vardı.

    Sürüm 8'de yükleme ve sunu etkinlikleri ayrıdır. Artık reklamı yüklemeden önce tek bir yetki verilmiş kullanıcı ayarlamak yerine, reklamı göstermeden önce istediğiniz zaman GADFullScreenContentDelegate kaydedebilirsiniz. Her biçime özgü reklam yükleme etkinlikleri, yükleme yönteminde iletilen tek bir yükleme tamamlama işleyicisine taşınır.

Geçişli

Reklam yükle

Aşağıdaki kod snippet'leri, bir geçiş reklamını nasıl yükleyeceğinizi ve reklam başarılı veya yüklenemediğinde meydana gelen etkinlikleri nasıl dinleyeceğinizi göstermektedir.

v7

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADInterstitialDelegate {

  var interstitial: DFPInterstitial!

  override func viewDidLoad() {
    super.viewDidLoad()
    interstitial = DFPInterstitial(adUnitID: "/6499/example/interstitial")
    interstitial.delegate = self
    let request = GAMRequest()
    interstitial.load(request)
  }

  /// Tells the delegate an ad request succeeded.
  func interstitialDidReceiveAd(_ ad: DFPInterstitial) {
    print("Interstitial ad loaded.")
  }

  /// Tells the delegate an ad request failed.
  func interstitial(_ ad: DFPInterstitial, didFailToReceiveAdWithError error: GADRequestError) {
    print("Interstitial ad failed to load with error: \(error.localizedDescription)")
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () 

@property(nonatomic, strong) DFPInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [[DFPInterstitial alloc]
      initWithAdUnitID:@"/6499/example/interstitial"];
  self.interstitial.delegate = self;
  GAMRequest *request = [GAMRequest request];
  [self.interstitial loadRequest:request];
}

/// Tells the delegate an ad request succeeded.
- (void)interstitialDidReceiveAd:(DFPInterstitial *)ad {
  NSLog(@"Insterstitial ad loaded.");
}

/// Tells the delegate an ad request failed.
- (void)interstitial:(DFPInterstitial *)ad
    didFailToReceiveAdWithError:(GADRequestError *)error {
  NSLog(@"Interstitial ad failed to load with error: %@", [error localizedDescription]);
}

v8

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  var interstitial: GAMInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GAMRequest()
    GAMInterstitialAd.load(withAdUnitID:"ca-app-pub-8123415297019784/4985798738",
                                request: request,
                      completionHandler: { (ad, error) in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        self.interstitial = ad
                        self.interstitial.fullScreenContentDelegate = self
                      }
    )
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () 

@property(nonatomic, strong) GAMInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GAMRequest *request = [GAMRequest request];
  [GAMInterstitialAd loadWithAdUnitID:@"/6499/example/interstitial"
                              request:request
                    completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
    self.interstitial.fullScreenContentDelegate = self;
  }];
}

Görüntülü reklam

v7

Swift

func showInterstitial() {
  ...
  if interstitial.isReady {
    interstitial.present(fromRootViewController: self)
  } else {
    print("Ad wasn't ready")
  }
}

Objective-C

- (void)showInterstitial: {
  ...
  if (self.interstitial.isReady) {
    [self.interstitial presentFromRootViewController:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

v8

Swift

func showInterstitial() {
  ...
  if let ad = interstitial {
    ad.present(fromRootViewController: self)
  } else {
    print("Ad wasn't ready")
  }
}

Objective-C

- (void)showInterstitial: {
  ...
  if (self.interstitial) {
    [self.interstitial presentFromRootViewController:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

Sunu reklamı etkinlikleri

Aşağıdaki kod snippet'lerinde, reklam sunulduğunda (başarıyla veya başarısız olarak) ve reddedildiğinde geri çağırmaların nasıl ele alınacağı gösterilmektedir.

v7

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  interstitial = DFPInterstitial(adUnitID: "/6499/example/interstitial")
  interstitial.delegate = self
  ...
}

/// Tells the delegate that an interstitial will be presented.
func interstitialWillPresentScreen(_ ad: DFPInterstitial) {
  print("Interstitial ad will be presented.")
}

/// Tells the delegate the interstitial is to be animated off the screen.
func interstitialWillDismissScreen(_ ad: DFPInterstitial) {
  print("Interstitial ad will be dismissed.")
}

/// Tells the delegate the interstitial had been animated off the screen.
func interstitialDidDismissScreen(_ ad: DFPInterstitial) {
  print("Interstitial ad dismissed.")
}

/// Tells the delegate that a user click will open another app
/// (such as the App Store), backgrounding the current app.
///
/// This is not a reliable callback for an ad click event and is removed in
/// version 8. If you wish to listen to an ad causing a user to leave the app,
/// use applicationWillResignActive: or sceneWillResignActive: instead.
func interstitialWillLeaveApplication(_ ad: DFPInterstitial) {
  print("Interstitial ad will leave application.")
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [[DFPInterstitial alloc] initWithAdUnitID:"/6499/example/interstitial"];
  self.interstitial.delegate = self;
  ...
}

/// Tells the delegate that an interstitial will be presented.
- (void)interstitialWillPresentScreen:(DFPInterstitial *)ad {
  NSLog(@"Interstitial ad will be presented.");
}

/// Tells the delegate the interstitial is to be animated off the screen.
- (void)interstitialWillDismissScreen:(DFPInterstitial *)ad {
  NSLog(@"Interstitial ad will be dismissed.");
}

/// Tells the delegate the interstitial had been animated off the screen.
- (void)interstitialDidDismissScreen:(DFPInterstitial *)ad {
  NSLog(@"Interstitial ad dismissed.");
}

/// Tells the delegate that a user click will open another app
/// (such as the App Store), backgrounding the current app.
///
/// This is not a reliable callback for an ad click event and is removed in
/// version 8. If you wish to listen to an ad causing a user to leave the app,
/// use applicationWillResignActive: or sceneWillResignActive: instead.
- (void)interstitialWillLeaveApplication:(DFPInterstitial *)ad {
  NSLog(@"Interstitial ad will leave application.");
}

v8

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  let request = GAMRequest()
  GAMInterstitialAd.load(withAdUnitID:"ca-app-pub-8123415297019784/4985798738",
                              request: request,
                    completionHandler: { (ad, error) in
                      if let error = error {
                        print(error.localizedDescription)
                        return
                      }
                      self.interstitial = ad
                      self.interstitial.fullScreenContentDelegate = self
                    }
  )
}

func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("Ad did present full screen content.")
}

func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
  print("Ad failed to present full screen content with error \(error.localizedDescription).")
}

func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("Ad did dismiss full screen content.")
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];
  GAMRequest *request = [GAMRequest request];
  [GAMInterstitialAd loadWithAdUnitID:@"/6499/example/interstitial"
                              request:request
                    completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"interstitial:didFailToReceiveAdWithError: %@", [error localizedDescription])
      return;
    }
    self.interstitial = ad;
    self.interstitial.fullScreenContentDelegate = self;
  }];
}

- (void)adDidPresentFullScreenContent:(id)ad {
  NSLog(@"Ad did present full screen content.");
}

- (void)ad:(id)ad didFailToPresentFullScreenContentWithError:(NSError *)error {
  NSLog(@"Ad failed to present full screen content with error %@.", [error localizedDescription]);
}

- (void)adDidDismissFullScreenContent:(id)ad {
  NSLog(@"Ad did dismiss full screen content.");
}

Ödül olarak verildi

Reklam yükle

v7

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADRewardedAdDelegate {
  /// The rewarded ad.
  var rewardedAd: GADRewardedAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    rewardedAd = GADRewardedAd(adUnitID: "ca-app-pub-3940256099942544/1712485313")
    rewardedAd.delegate = self
    rewardedAd?.load(GAMRequest()) { error in
      if let error = error {
        print("Rewarded ad failed to load with error: \(error.localizedDescription)")
      } else {
        print("Rewarded ad loaded.")
      }
    }
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () 

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  self.rewardedAd = [[GADRewardedAd alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];
  self.rewardedAd.delegate = self;
  GAMRequest *request = [GAMRequest request];
  [self.rewardedAd loadRequest:request completionHandler:^(GADRequestError * _Nullable error) {
    if (error) {
      NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
    } else {
      NSLog(@"Rewarded ad loaded.");
    }
  }];
}

v8

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {
  /// The rewarded ad.
  var rewardedAd: GADRewardedAd?

  override func viewDidLoad() {
  super.viewDidLoad()
  let request = GAMRequest()
  GADRewardedAd.load(withAdUnitID: "ca-app-pub-8123415297019784/9501821136",
                          request: request, completionHandler: { (ad, error) in
                            if let error = error {
                              print("Rewarded ad failed to load with error: \(error.localizedDescription)")
                              return
                            }
                            self.rewardedAd = ad
                            self.rewardedAd?.fullScreenContentDelegate = self
                          }
  )
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () 

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  GAMRequest *request = [GAMRequest request];
  [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"
                          request:request
                completionHandler:^(GADRewardedAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
      return;
    }
    self.rewardedAd = ad;
    NSLog(@"Rewarded ad loaded.");
    self.rewardedAd.fullScreenContentDelegate = self;
}

Görüntülü reklam ve herkese açık kullanıcı ödülü

Ödüllü reklamlar, bir kullanıcı ödül kazandığında etkinliği yönetmenizi gerektirir. GADRewardedAd API'nin 7 sürümüyle rewardedAd:userDidEarnReward:, GADRewardedAdDelegate protokolünün bir parçası olarak uygulanır. Sürüm 8'de reklamı sunmak için GADUserDidEarnRewardHandler uygulanır.

v7

Swift

func showRewardedAd() {
  ...
  if rewardedAd.isReady {
    rewardedAd.present(fromRootViewController: self delegate:self)
  } else {
    print("Ad wasn't ready")
  }
}

/// Tells the delegate that the user earned a reward.
func rewardedAd(_ rewardedAd: GADRewardedAd, userDidEarnReward: GADAdReward) {
  // TODO: Reward the user.
}

Objective-C

- (void)showRewardedAd: {
  ...
  if (self.rewardedAd.isReady) {
    [self.rewardedAd presentFromRootViewController:self delegate:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

/// Tells the delegate that the user earned a reward.
- (void)rewardedAd:(GADRewardedAd *)rewardedAd userDidEarnReward:(GADAdReward *)reward {
  // TODO: Reward the user.
}

v8

Swift

func showRewardedAd() {
  ...
  if let ad = rewardedAd {
      ad.present(fromRootViewController: self,
               userDidEarnRewardHandler: {
                 let reward = ad.adReward
                 // TODO: Reward the user.
               }
      )
  } else {
    print("Ad wasn't ready")
  }
}

Objective-C

- (void)showRewardedAd: {
  ...
  if (self.rewardedAd) {
    [self.rewardedAd presentFromRootViewController:self
                          userDidEarnRewardHandler:^ {
      GADAdReward *reward = self.rewardedAd.adReward;
      // TODO: Reward the user.
    }];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

Sunu reklamı etkinlikleri

GADRewardedAd API ile, reklamı sunan yönteme bir GADRewardedAdDelegate iletirsiniz. GADRewardedAd API ile, reklamı sunmadan önce reklamdaki bir özellik olarak GADFullscreenContentDelegate özelliğini ayarlarsınız.

v7

Swift

func showRewardedAd() {
  ...
  if rewardedAd.isReady {
    rewardedAd.present(fromRootViewController: self delegate:self)
  } else {
    print("Ad wasn't ready")
  }
}

/// Tells the delegate that the rewarded ad was presented.
func rewardedAdDidPresent(_ rewardedAd: GADRewardedAd) {
  print("Rewarded ad presented.")
}
/// Tells the delegate that the rewarded ad was dismissed.
func rewardedAdDidDismiss(_ rewardedAd: GADRewardedAd) {
  print("Rewarded ad dismissed.")
}
/// Tells the delegate that the rewarded ad failed to present.
func rewardedAd(_ rewardedAd: GADRewardedAd, didFailToPresentWithError error: Error) {
  print("Rewarded ad failed to present with error: \(error.localizedDescription).")
}

Objective-C

- (void)showRewardedAd: {
  ...
  if (self.rewardedAd.isReady) {
    [self.rewardedAd presentFromRootViewController:self delegate:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

/// Tells the delegate that the rewarded ad was presented.
- (void)rewardedAdDidPresent:(GADRewardedAd *)rewardedAd {
  NSLog(@"Rewarded ad presented.");
}

/// Tells the delegate that the rewarded ad failed to present.
- (void)rewardedAd:(GADRewardedAd *)rewardedAd didFailToPresentWithError:(NSError *)error {
  NSLog(@"Rewarded ad failed to present with error: %@",
        [error localizedDescription]);
}

/// Tells the delegate that the rewarded ad was dismissed.
- (void)rewardedAdDidDismiss:(GADRewardedAd *)rewardedAd {
  NSLog(@"Rewarded ad dismissed.");
}

v8

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  let request = GAMRequest()
  GADRewardedAd.load(withAdUnitID: "ca-app-pub-8123415297019784/9501821136",
                          request: request, completionHandler: { (ad, error) in
                            if let error = error {
                              print(error.localizedDescription)
                              return
                            }
                            self.rewardedAd = ad
                            self.rewardedAd?.fullScreenContentDelegate = self
                          }
  )
}

/// Tells the delegate that the rewarded ad was presented.
func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("Rewarded ad presented.")
}
/// Tells the delegate that the rewarded ad was dismissed.
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("Rewarded ad dismissed.")
}
/// Tells the delegate that the rewarded ad failed to present.
func ad(_ ad: GADFullScreenPresentingAd,
    didFailToPresentFullScreenContentWithError error: Error) {
  print("Rewarded ad failed to present with error: \(error.localizedDescription).")
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];

  GAMRequest *request = [GAMRequest request];
  [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"
                          request:request
                completionHandler:^(GADRewardedAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
      return;
    }
    self.rewardedAd = ad;
    NSLog(@"Rewarded ad loaded.");
    self.rewardedAd.fullScreenContentDelegate = self;
}

/// Tells the delegate that the rewarded ad was presented.
- (void)adDidPresentFullScreenContent:(id)ad {
  NSLog(@"Rewarded ad presented.");
}

/// Tells the delegate that the rewarded ad failed to present.
- (void)ad:(id)ad
    didFailToPresentFullScreenContentWithError:(NSError *)error {
  NSLog(@"Rewarded ad failed to present with error: %@",
       [error localizedDescription]);
}

/// Tells the delegate that the rewarded ad was dismissed.
- (void)adDidDismissFullScreenContent:(id)ad {
  NSLog(@"Rewarded ad dismissed.");
}

Eski GADRewardedBasedVideoAd API'nin kaldırılması

Yeni GADRewardedAd API, ilk olarak Mart 2019'da kullanıma sunuldu ve 18 aydan uzun süredir tercih edilen ödüllü API oldu. Bu özellik, eski GADRewardedBasedVideoAd API'ye kıyasla tek seferde birden fazla ödüllü reklam yükleme olanağı da dahil olmak üzere daha fazla iyileştirme içeriyor.

Eski GADRewardedBasedVideoAd API, SDK 8.0.0 sürümünde kaldırılmıştır.

Akıllı banner'ın kullanımdan kaldırılması ve yerini uyarlanabilir banner'ın alması

Akıllı banner reklamlar kullanımdan kaldırılarak yerini uyarlanabilir banner reklamlar aldı. Uyarlanabilir banner'lar, üst düzey performans ve reklam genişliğini ayarlama konusunda daha fazla esneklik sağlar. Tam genişlikli banner'ları kullanmaya devam etmeyi tercih ederseniz bunu aşağıdaki kod snippet'inde gösterildiği gibi uyarlanabilir banner kullanarak da yapabilirsiniz:

Swift

class ViewController: UIViewController {

  override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    // Note: The safe area is not known until viewWillAppear.
    let adSize = getFullWidthAdaptiveAdSize()
  }

  func getFullWidthAdaptiveAdSize() -> GADAdSize {
    // Here safe area is taken into account, hence the view frame is used after the
    // view has been laid out.
    let frame = { () -> CGRect in
      if #available(iOS 11.0, *) {
        return view.frame.inset(by: view.safeAreaInsets)
      } else {
        return view.frame
      }
    }()
    return GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(frame.size.width)
  }
}

Objective-C

@implementation ViewController

- (void)viewDidAppear:(BOOL)animated {
  [super viewDidAppear:animated];
  // Note: The safe area is not known until viewWillAppear.
  GADAdSize adSize = [self getFullWidthAdaptiveAdSize];
}

- (GADAdSize)getFullWidthAdaptiveAdSize {
  CGRect frame = self.view.frame;
  // Here safe area is taken into account, hence the view frame is used after
  // the view has been laid out.
  if (@available(iOS 11.0, *)) {
    frame = UIEdgeInsetsInsetRect(self.view.frame, self.view.safeAreaInsets);
  }
  return GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(frame.size.width);
}

@end

Uygulamayı geri çağırma işlemini kaldırma işleminden ayrıl

Tüm reklam biçimleri için willLeaveApplication geri çağırması kaldırıldı. Daha sonra applicationDidEnterBackground: ve sceneDidEnterBackground: yöntemlerinin yerini aldı. OS seviyesinde API'ler kullanıldığında, reklam etkileşiminden kaynaklanıp kaynaklanmadığından bağımsız olarak kullanıcılar uygulamanızdan her ayrıldığında bildirim alırsınız.

Geri çağırmanın willLeaveApplication hiçbir zaman bir reklam tıklama işleyicisi olarak tasarlanmadığını ve tıklamaları raporlamak için bu geri çağırmayı kullanmanın doğru bir metrik oluşturmadığını unutmayın. Örneğin, harici bir tarayıcı başlatan Reklam Seçenekleri simgesinin tıklanması, geri çağırmayı çağırmış ancak tıklama saymamıştır.

Sınıf yeniden adlandırmaları

Aşağıdaki tabloda, sürüm 8'de değiştirilen veya kaldırılan belirli sınıf adları listelenmektedir. Özet olarak:

  • GADUnifiedNativeAd ile ilgili tüm sınıflar GADNativeAd olarak yeniden adlandırıldı.
  • GADRewardBasedVideoAd, GADNativeExpressAdView ve GADInstreamAd kaldırıldı.
  • DFP önekine sahip tüm sınıflar GAM önekiyle değiştirildi.
Sürüm 7.68.0 Sınıfı Sürüm 8.0.0 Sınıfı
DFPBannerView GAMBannerView
DFPBannerViewOptions GAMBannerViewOptions
DFPInterstitial GAMGeçiş Reklamı
DFPRequest GAMRequest
GADRequestError NSError
GADUnifiedNativeAdView GADNativeAdView
GADBirleşikDoğalReklam GADDoğalReklam
GADUnifiedNativeAdAssetIdentifiers GADNativeAdAssetIdentifiers
GADUnifiedNativeAdDelegate GADNativeAdDelegate
GADUnifiedNativeAdUnconfirmedClickDelegate GADNativeAdUnconfirmedClickDelegate
GADNativeCustomTemplateReklam GADÖzelYerelReklam
GADNativeCustomTemplateAdLoaderDelegate GADCustomNativeAdLoaderDelegate
GADNativeAdDelegate GADCustomNativeAdDelegate
GADInAppPurchase Kaldırıldı
GADInterstitial GADGeçiş Reklamı
GADNativeExpressAdView Kaldırıldı
GADÖdül TabanlıVideoReklam Kaldırıldı
GADYayın İçiReklam Kaldırıldı
GADInstreamAdView Kaldırıldı

Kaldırılan/değiştirilen yöntemler

Sürüm 8'deki belirli değişiklikler aşağıdaki tabloda listelenmiştir. Özet olarak:

  • Daha önce desteği sonlandırılan yöntemler ve özellikler kaldırılmıştır.
  • -willLeaveApplication: yetki verme yöntemi tüm biçimler için kaldırıldı.
  • Reklam ağı sınıfı adı GADResponseInfo mülküne taşındı.
  • Test cihazı tanımlayıcısı GADRequestConfiguration mülküne taşındı.
Sürüm 7.68.0 Sınıfı sürüm 7.68.0 API'sı sürüm 8.0.0 API'sı Notlar
GADMobileAds +configureWithApplicationID: -startWithCompleteHandler: Uygulama kimliği artık Info.plist dosyasında ayarlandı.
+disableautoInAppPurchaseReporting -disableautoInAppPurchaseReporting
+devre dışı bırakSDKCrashReporting -disableSDKCrashReporting
GADRequest testDevices GADRequestConfiguration.testdeviceidentifiers testDeviceIdentifiers özelliği tüm reklam istekleri için geçerliyken eski testDevices özelliği istek başına ayarlıydı.
gender Kaldırıldı
doğum günü Kaldırıldı
+sdkVersion GADMobileAds.sharedInstance.sdkVersion
-setBirthdayWithMonth:day:year: Kaldırıldı
-setLocationWithDescription: -setLocationWithLatitude:longitude:accuracy:
-tagForChildDirectedTreatment: [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment]
GADErrorCode kGADHatası* GADError* k öneki tüm hata kodu sabitlerinden çıkarılır.
GADBannerView hasAutoRefreshed autoloadEnabled
inAppPurchaseDelegate Kaldırıldı
mediatedAdView Kaldırıldı
adNetworkClassName yanıtBilgisi.adNetworkClassName
DFPBannerView -setValidAdSizesWithSizes: -setValidAdSizes:
DFPBannerViewOptions -adSizeManager Kaldırıldı
GADBannerViewDelegate -adViewDidReceiveReklam: -bannerViewDidReceiveAd:
-adView:didFailToReceiveAdWithError: -bannerView:didFailToReceiveAdWithError:
-adViewWillpresentScreen: -bannerViewWillpresentScreen:
-adViewWillDismissScreen: -bannerViewWillDismissScreen:
-adViewDidClosedScreen: -bannerViewDidDismissScreen:
-adViewWillApplyApplication: Kaldırıldı
GADNativeCustomTemplateReklam templateID GADCustomNativeAd.formatID
-performClickOnAssetWithKey:customClickHandler: -PerformClickOnAssetWithKey:
GADNativeAdImageAdLoaderOptions preferredImageOrientation GADNativeAdMediaAdOptions.mediaAspectRatio
GADInterstitial inAppPurchaseDelegate Kaldırıldı
isReady Kaldırıldı Bunun yerine canpresentFromRootViewController:error: parametresini kullanın.
hasBeenUsed Kaldırıldı
-init -initWithAdUnitID:
-setAdUnitID: -initWithAdUnitID:
adNetworkClassName yanıtBilgisi.adNetworkClassName
-interstitialWillExitApplication: Kaldırıldı
GADBirleşikDoğalReklam videoController mediaContent.videoController
adNetworkClassName yanıtBilgisi.adNetworkClassName