Bu sayfada, iOS için Google Mobile Ads SDK'in mevcut ve önceki sürümlerine yönelik taşıma işlemleri ele alınmaktadır. 13.0.0 sürümünü Şubat 2026'da yayınlamayı planlıyoruz.
v12'den v13'e geçiş
Minimum dağıtım hedefi artırıldı
Minimum dağıtım hedefi iOS 13'e yükseltildi.
Sabit uyarlanabilir banner boyutu API'lerinde yapılan değişiklikler
13.0.0 sürümü, mevcut sabit uyarlanabilir banner boyutu API'lerinin desteğini sonlandırır ve büyük sabit uyarlanabilir banner reklamlar için boyut API'lerini kullanıma sunar. Google Mobile Ads SDK, yeni büyük sabit uyarlanabilir banner boyutu API'lerini kullanarak banner reklamlara video talebi sunabilir.
Aşağıdaki tabloda, desteği sonlandırılan boyutlandırma API'leri ve bunların yerine kullanılacak API'ler ayrıntılı olarak açıklanmıştır:
| v12 (Desteği sonlandırıldı) | v13 (Değiştirme) |
|---|---|
GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
GADLargeAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
GADLargeLandscapeAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
GADLargePortraitAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
Swift 6 eşzamanlılık desteği devam ediyor
13.0.0 sürümü, Swift 6 katı eşzamanlılık desteği eklemeye devam ediyor.
neighboringContentURLStrings dizisi için daha katı tür yaptırımı eklendi
13.0.0 sürümünden itibaren Google Mobile Ads SDK, neighboringContentURLStrings dizisinde String türünde olmayan bir nesne algılanırsa istisna oluşturur.
v11'den v12'ye geçiş
Xcode 16.0'ya yükseltme
Desteklenen minimum Xcode sürümü 16.0'ya yükseltildi.
Swift adlandırma desteği
12.0.0 sürümü, Swift API Tasarım Kuralları'ndaki adlandırma kurallarına uymak için yapılan değişiklikleri içerir. Bu değişiklikler yalnızca Swift'i etkiler. Objective-C API'lerinde adlandırma değişikliği yapılmadı.
Sınıf öneki değişiklikleri
Sınıf öneklerinde aşağıdaki değişiklikler yapılmıştır:
- Tüm türlerin adlarındaki
GADöneki kaldırıldı. GAMönekiAdManagerolarak yeniden adlandırıldı.GADMönekiMediationolarak yeniden adlandırıldı.
Hataları çözme
Bu değişikliklerden kaynaklanan hataları çözmenin en iyi yolu, düzeltme yapmaktır.
Adlandırma çakışmalarını çözme
Adlandırma çakışmalarını çözmek için modül tarafından sağlanan ad alanını kullanın. Örneğin, GADRequest artık Request olarak adlandırılıyor. Aşağıdaki örnek ad alanları
Google Mobile Ads SDK Request sınıfı:
import GoogleMobileAds
...
var request: GoogleMobileAds.Request?
Swift değişikliklerinin ayrıntılı listesi
Aşağıdaki tablolarda, Swift API'lerinde yapılan değişiklikler listelenmiştir:
| Sürüm 11 | Sürüm 12 |
|---|---|
GADAdapterInitializationState |
AdapterInitializationState |
GADAdChoicesPosition |
AdChoicesPosition |
GADAdChoicesView |
AdChoicesView |
GADAdFormat |
AdFormat |
GADAdLoader |
AdLoader |
GADAdLoaderAdType |
AdLoaderAdType |
GADAdLoaderDelegate |
AdLoaderDelegate |
GADAdMetadataDelegate |
AdMetadataDelegate |
GADAdMetadataProvider |
AdMetadataProvider |
GADAdNetworkExtras |
AdNetworkExtras |
GADAdNetworkResponseInfo |
AdNetworkResponseInfo |
GADAdReward |
AdReward |
GADAdSize |
AdSize |
GADAdSizeDelegate |
AdSizeDelegate |
GADAdValue |
AdValue |
GADAdValuePrecision |
AdValuePrecision |
GADAppEventDelegate |
AppEventDelegate |
GADAppOpenAd |
AppOpenAd |
GADAppOpenSignalRequest |
AppOpenSignalRequest |
GADAudioVideoManager |
AudioVideoManager |
GADAudioVideoManagerDelegate |
AudioVideoManagerDelegate |
GADBannerSignalRequest |
BannerSignalRequest |
GADBannerView |
BannerView |
GADBannerViewDelegate |
BannerViewDelegate |
GADCustomEventExtras |
CustomEventExtras |
GADCustomEventRequest |
CustomEventRequest |
GADCustomNativeAd |
CustomNativeAd |
GADCustomNativeAdLoaderDelegate |
CustomNativeAdLoaderDelegate |
GADCustomNativeAdDelegate |
CustomNativeAdDelegate |
GADDebugOptionsViewControllerDelegate |
DebugOptionsViewControllerDelegate |
GADDebugOptionsViewController |
DebugOptionsViewController |
GADDisplayAdMeasurement |
DisplayAdMeasurement |
GADExtras |
Extras |
GADFullScreenPresentingAd |
FullScreenPresentingAd |
GADFullScreenContentDelegate |
FullScreenContentDelegate |
GADAdapterStatus |
AdapterStatus |
GADInitializationStatus |
InitializationStatus |
GADInterstitialAd |
InterstitialAd |
GADInterstitialSignalRequest |
InterstitialSignalRequest |
GADMediaAspectRatio |
MediaAspectRatio |
GADMediaContent |
MediaContent |
GADMediaView |
MediaView |
GADMobileAds |
MobileAds |
GADMultipleAdsAdLoaderOptions |
MultipleAdsAdLoaderOptions |
GADMuteThisAdReason |
MuteThisAdReason |
GADNativeAd |
NativeAd |
GADNativeAdLoaderDelegate |
NativeAdLoaderDelegate |
GADNativeAdView |
NativeAdView |
GADNativeAdCustomClickGestureOptions |
NativeAdCustomClickGestureOptions |
GADNativeAdDelegate |
NativeAdDelegate |
GADNativeAdImage |
NativeAdImage |
GADNativeAdImageAdLoaderOptions |
NativeAdImageAdLoaderOptions |
GADNativeAdInlineBehavior |
NativeAdInlineBehavior |
GADNativeAdInlineBehaviorOptions |
NativeAdInlineBehaviorOptions |
GADNativeAdMediaAdLoaderOptions |
NativeAdMediaAdLoaderOptions |
GADNativeAdUnconfirmedClickDelegate |
NativeAdUnconfirmedClickDelegate |
GADNativeAdViewAdOptions |
NativeAdViewAdOptions |
GADNativeMuteThisAdLoaderOptions |
NativeMuteThisAdLoaderOptions |
GADNativeSignalRequest |
NativeSignalRequest |
GADPresentationError |
PresentationError |
GADPublisherPrivacyPersonalizationState |
PublisherPrivacyPersonalizationState |
GADQueryInfo |
QueryInfo |
GADRequest |
Request |
GADRequestError |
RequestError |
GADRequestConfiguration |
RequestConfiguration |
GADResponseInfo |
ResponseInfo |
GADRewardedAd |
RewardedAd |
GADRewardedSignalRequest |
RewardedSignalRequest |
GADRewardedInterstitialAd |
RewardedInterstitialAd |
GADRewardedInterstitialSignalRequest |
RewardedInterstitialSignalRequest |
GADSearchBannerView |
SearchBannerView |
GADServerSideVerificationOptions |
ServerSideVerificationOptions |
GADSignal |
Signal |
GADSignalRequest |
SignalRequest |
GADVersionNumber |
VersionNumber |
GADVideoController |
VideoController |
GADVideoControllerDelegate |
VideoControllerDelegate |
| Ad Manager | |
GAMBannerAdLoaderDelegate |
AdManagerBannerAdLoaderDelegate |
GAMBannerView |
AdManagerBannerView |
GAMBannerViewOptions |
AdManagerBannerViewOptions |
GAMInterstitialAd |
AdManagerInterstitialAd |
GAMRequest |
AdManagerRequest |
| Uyumlulaştırma | |
GADMAdNetworkAdapter |
MediationAdNetworkAdapter |
GADMAdNetworkConnector |
MediationAdNetworkConnector |
GADMBannerAnimationType |
MediationBannerAnimationType |
GADMediatedUnifiedNativeAd |
MediationUnifiedNativeAd |
GADMediatedUnifiedNativeAdNotificationSource |
MediationUnifiedNativeAdNotificationSource |
GADMediationAd |
MediationAd |
GADMediationAdConfiguration |
MediationAdConfiguration |
GADMediationAdEventDelegate |
MediationAdEventDelegate |
GADMediationAdRequest |
MediationAdRequest |
GADMediationAdapter |
MediationAdapter |
GADMediationAppOpenAd |
MediationAppOpenAd |
GADMediationAppOpenAdEventDelegate |
MediationAppOpenAdEventDelegate |
GADMediationBannerAd |
MediationBannerAd |
GADMediationBannerAdConfiguration |
MediationBannerAdConfiguration |
GADMediationBannerAdEventDelegate |
MediationBannerAdEventDelegate |
GADMediationCredentials |
MediationCredentials |
GADMediationInterstitialAd |
MediationInterstitialAd |
GADMediationInterstitialAdConfiguration |
MediationInterstitialAdConfiguration |
GADMediationInterstitialAdEventDelegate |
MediationInterstitialAdEventDelegate |
GADMediationNativeAd |
MediationNativeAd |
GADMediationNativeAdConfiguration |
MediationNativeAdConfiguration |
GADMediationNativeAdEventDelegate |
MediationNativeAdEventDelegate |
GADMediationRewardedAd |
MediationRewardedAd |
GADMediationRewardedAdConfiguration |
MediationRewardedAdConfiguration |
GADMediationRewardedAdEventDelegate |
MediationRewardedAdEventDelegate |
GADMediationServerConfiguration |
MediationServerConfiguration |
| Gerçek zamanlı teklif verme | |
GADRTBAdapter |
RTBAdapter |
GADRTBMediationSignalsConfiguration |
RTBMediationSignalsConfiguration |
GADRTBRequestParameters |
RTBRequestParameters |
Sabitler
| Sürüm 11 | Sürüm 12 |
|---|---|
GADAdLoaderAdType.gamBanner |
AdLoaderAdType.adManagerBanner |
GADAdSizeBanner |
AdSizeBanner |
GADAdSizeFluid |
AdSizeFluid |
GADAdSizeFullBanner |
AdSizeFullBanner |
GADAdSizeInvalid |
AdSizeInvalid |
GADAdSizeLargeBanner |
AdSizeLargeBanner |
GADAdSizeLeaderboard |
AdSizeLeaderboard |
GADAdSizeMediumRectangle |
AdSizeMediumRectangle |
GADAdSizeSkyscraper |
AdSizeSkyscraper |
GoogleMobileAdsVersionString |
GoogleMobileAdsVersion |
Özellikler
| Tür | Sürüm 11 | Sürüm 12 |
|---|---|---|
| GADAdLoader | loading |
isLoading |
| GADAudioVideoManager | audioSessionApplicationManaged |
isAudioSessionApplicationManaged |
| GADBannerView | autoloadEnabled |
isAutoloadEnabled |
| GADMobileAds | sharedInstance |
shared |
applicationMuted |
isApplicationMuted |
|
| GADMuteThisAdReason | reasonDescription |
reason |
| GADNativeAd | customMuteThisAdAvailable |
isCustomMuteThisAdAvailable |
| GADNativeAdCustomClickGestureOptions | tapsAllowed |
areTapsAllowed |
| GADNativeAdImageAdLoaderOptions | imageLoadingDisabled |
isImageLoadingDisabled |
| GADNativeMuteThisAdLoaderOptions | customMuteThisAdRequested |
isCustomMuteThisAdRequested |
| GADNativeSignalRequest | imageLoadingDisabled |
isImageLoadingDisabled |
customMuteThisAdRequested |
isCustomMuteThisAdRequested |
|
| GADRequest | neighboringContentURLStrings |
neighboringContentURLs |
| GADResponseInfo | extrasDictionary |
extras |
| GADServerSideVerificationOptions | customRewardString |
customRewardText |
| GADSignal | signalString |
signal |
| GADSignalRequest | neighboringContentURLStrings |
neighboringContentURLs |
| GADVideoController | customControlsRequested |
areCustomControlsRequested |
clickToExpandEnabled |
isClickToExpandEnabled |
|
| GADVideoOptions | startMuted |
shouldStartMuted |
customControlsRequested |
areCustomControlsRequested |
|
clickToExpandRequested |
isClickToExpandRequested |
İşlevler
| Tür | Sürüm 11 | Sürüm 12 |
|---|---|---|
| GADAdSize | GADPortraitInlineAdaptiveBannerAdSizeWithWidth(_:) |
portraitInlineAdaptiveBanner(width:) |
GADLandscapeInlineAdaptiveBannerAdSizeWithWidth(_:) |
landscapeInlineAdaptiveBanner(width:) |
|
GADCurrentOrientationInlineAdaptiveBannerAdSizeWithWidth(_:) |
currentOrientationInlineAdaptiveBanner(width:) |
|
GADInlineAdaptiveBannerAdSizeWithWidthAndMaxHeight(_:, _:) |
inlineAdaptiveBanner(width:maxHeight:) |
|
GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(_:) |
portraitAnchoredAdaptiveBanner(width:) |
|
GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth(_:) |
landscapeAnchoredAdaptiveBanner(width:) |
|
GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(_:) |
currentOrientationAnchoredAdaptiveBanner(width:) |
|
GADAdSizeFromCGSize(_:) |
adSizeFor(cgSize:) |
|
GADAdSizeFullWidthPortraitWithHeight(_:) |
fullWidthPortrait(height:) |
|
GADAdSizeFullWidthLandscapeWithHeight(_:) |
fullWidthLandscape(height:) |
|
GADAdSizeEqualToSize(_:, _:) |
isAdSizeEqualToSize(size1:size2:) |
|
IsGADAdSizeValid(_:) |
isAdSizeValid(size:) |
|
GADAdSizeIsFluid(_:) |
isAdSizeFluid(size:) |
|
CGSizeFromGADAdSize(_:) |
cgSize(for:) |
|
NSStringFromGADAdSize(_:) |
string(for:) |
|
NSValueFromGADAdSize(_:) |
nsValue(for:) |
|
GADAdSizeFromNSValue(_:) |
adSizeFor(nsValue:) |
|
GADClosestValidSizeForAdSizes(_:_:) |
closestValidSizeForAdSizes(original:possibleAdSizes:) |
|
| GADAppEventDelegate | adView(_:didReceiveAppEvent:withInfo:) |
adView(_:didReceiveAppEvent:with:) |
interstitialAd(_:didReceiveAppEvent:withInfo:) |
adView(_:didReceiveAppEvent:with:) |
|
| GADAppOpenAd | load(withAdResponseString:) |
load(with:) |
load(withAdUnitID:request:completionHandler:) |
load(with:request:completionHandler:) |
|
canPresent(fromRootViewController:) |
canPresent(from:) |
|
present(fromRootViewController:) |
present(from:) |
|
| GADBannerView | load(withAdResponseString:) |
load(with:) |
| GADInterstitial | load(withAdResponseString:) |
load(with:) |
load(withAdUnitID:request:completionHandler:) |
load(with:request:completionHandler:) |
|
canPresent(fromRootViewController:) |
canPresent(from:) |
|
present(fromRootViewController:) |
present(from:) |
|
| GADRewardedAd | load(withAdResponseString:) |
load(with:) |
load(withAdUnitID:request:completionHandler:) |
load(with:request:completionHandler:) |
|
canPresent(fromRootViewController:) |
canPresent(from:) |
|
present(fromRootViewController:userDidEarnRewardHandler:) |
present(from:userDidEarnRewardHandler:) |
|
| GADRewardedInterstitialAd | load(withAdResponseString:) |
load(with:) |
load(withAdUnitID:request:completionHandler:) |
load(with:request:completionHandler:) |
|
canPresent(fromRootViewController:) |
canPresent(from:) |
|
present(fromRootViewController:userDidEarnRewardHandler:) |
present(from:userDidEarnRewardHandler:) |
|
| GADVersionNumber | GADGetStringFromVersionNumber(_ version: GADVersionNumber) |
string(for:) |
| Uyumlulaştırma | ||
| GADMAdNetworkAdapter | getBannerWith(_:) |
getBanner(with:) |
presentInterstitial(fromRootViewController:) |
presentInterstitial(from:) |
|
getNativeAd(withAdTypes:options:) |
getNativeAd(with:options:) |
|
| GADMediatedUnifiedNativeAd | didRecordClickOnAsset(withName:view:viewController:) |
didRecordClickOnAsset(with:view:viewController:) |
| GADMediationAdapter | setUpWith(_:completionHandler:) |
setUp(with:completionHandler:) |
| GADMediationAdSize | present(fromRootViewController:) |
present(from:) |
| GADMediationAppOpenAd | present(fromRootViewController:) |
present(from:) |
| GADMediationInterstitialAd | present(fromRootViewController:) |
present(from:) |
| GADMediationRewardedAd | present(fromRootViewController:) |
present(from:) |
| GAMInterstitialAd | load(withAdManagerAdUnitID:request:completionHandler:) |
load(with:request:completionHandler:) |
Özel hedefleme parametrelerini ayarlama
Bir reklam isteğinde özel hedefleme ayarlamak için customTargeting kullanın.
Videonun sesini kapatma durumunu kontrol etmeyle ilgili API değişiklikleri
GADVideoController üzerindeki isMuted özelliği ve setMute: yöntemi, muted özelliğiyle değiştirildi.
Satır içi uyarlanabilir reklamlarda yapılan değişiklikler
Satır içi uyarlanabilir reklamlar, alan kullanımını optimize etmek için başlangıçta çerçevede yer kaplamaz. Satır içi uyarlanabilir reklam boyutuyla CGSizeFromGADAdSize(_:) çağrıldığında, Google Mobile Ads SDK'sı bir reklam döndürene kadar 0 yüksekliği döndürülür.
Özel Arama Reklamları kaldırıldı
Aşağıdaki sınıflar kaldırıldı ve yerlerine yeni sınıf eklenmedi:
GADDynamicHeightSearchBannerViewGADDynamicHeightSearchRequestGADSearchBannerView
Hata kodlarında yapılan değişiklikler
Aşağıdaki hata kodları değiştirildi:
| Sınıf | Notlar |
|---|---|
GADErrorMediationNoFill |
Hatalar artık GADErrorNoFill olarak döndürülüyor. |
GADErrorReceivedInvalidResponse |
GADErrorReceivedInvalidAdString ile değiştirildi. |
GADSimulatorID kaldırıldı
GADSimulatorID kaldırıldı. Simülatörler varsayılan olarak test modundadır.
Özel hedeflemede yapılan değişiklikler
GADRequest üzerindeki customTargeting sözlüğü artık değer türü olarak String yerine Any kullanıyor. Bu sayede API'ye sayısal değerler iletebilirsiniz.
Ekstra parametrelerde yapılan değişiklikler
- Anahtarları
additionalParametersiçine iletmek artık Ad Manager reklam isteklerine özel hedefleme uygulamıyor. Özel hedefleme uygulamak için özel hedefleme konusuna bakın.
max_ad_content_ratinganahtarınınadditionalParametersiçine aktarılması artık desteklenmiyor. Maksimum reklam içeriği derecelendirmesi ayarlamak için reklam içeriği filtreleme bölümüne bakın.
v10'dan v11'e geçiş
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ı durduruluyor
Google Mobile Ads SDK 11.0.0 sürümü, yalnızca iOS 13 ve sonraki sürümlerin yüklü olduğu cihazlarda reklam yayınlar.
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ı metrikleri açma/kapatma düğmesini 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 sunumunda yapılan değişiklikler
Aşağıdaki değişiklikler çeşitli reklam biçimlerini etkiler:
- Uygulama açılışı
- Geçiş reklamı
- Ödüllü
- Ödüllü geçiş reklamı
-canPresentFromRootViewController:error: ve -presentFromRootViewController: içindeki görünüm denetleyici parametresi null değer alabilir. Nil değeri iletilirse reklam, görünüm denetleyici hiyerarşisindeki en üst görünüm denetleyiciden sunulur.
Yöntemler kaldırıldı
Aşağıdaki yöntemler kaldırıldı.
| v11.0.0 Türü | Yöntem | Notlar |
|---|---|---|
| GADAppOpenAd | load(withAdUnitID adUnitID: String, request: GADRequest?, orientation: UIInterfaceOrientation) |
Bunun yerine load(withAdUnitID adUnitID: String, request: GADRequest?) kullanın. |
| GADMediationBannerAdEventDelegate | willBackgroundApplication() |
Değişiklik yok. |
| GADMediationInterstitialAdEventDelegate | willBackgroundApplication() |
Değişiklik yok. |
| GADMediationNativeAdEventDelegate | willBackgroundApplication() |
Değişiklik yok. |
| GADMediationRewardedAdEventDelegate | didRewardUser(with reward: GADAdReward) |
Bunun yerine didRewardUser() kullanın. |
| GADMediatedUnifiedNativeAdNotificationSource | mediatedNativeAdWillLeaveApplication(_ mediatedNativeAd: GADMediatedUnifiedNativeAd) |
Değişiklik yok. |
| 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. |
Kaldırılan özellikler
Aşağıdaki özellikler kaldırıldı.
| v11.0.0 Sınıfı | Mülk | Notlar |
|---|---|---|
| GADMediationAdConfiguration | hasUserLocation | Değişiklik yok. |
| userLatitude | ||
| userLongitude | ||
| userLocationAccuracyInMeters | ||
| childDirectedTreatment | Bunun yerine GADMobileAds.sharedInstance.requestConfiguration.tagForChildDirectedTreatment kullanın. |
|
| GADResponseInfo | adNetworkClassName | Bunun yerine loadedAdNetworkResponseInfo'den adNetworkClassName kullanın. |
GADAdFormatUnknown kaldırıldı
GADAdFormatUnknown kaldırıldı ve yerine başka bir öğe eklenmedi.
SDK sürümünü günlüğe kaydetme ile ilgili değişiklikler
11.0.0 sürümü sdkVersion öğesini kaldırır. Google Mobile Ads SDK sürümünü günlüğe kaydetmek için bunun yerine versionNumber kullanın.
Sürüm 10.0.0
GADMobileAds.sharedInstance().sdkVersion
Sürüm 11.0.0
GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber)
GADAdLoader hata işleme ile ilgili değişiklikler
11.0.0 sürümünden itibaren GADAdLoader, delegate değeri istenen reklam türlerinin temsilci protokolüne uymuyorsa reklam isteğinde bulunmaz. 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 döndürdüğü güncellenmiş koşulları gösteren tabloya bakın.
| Sınıf | Mülk |
|---|---|
| GADMediationAdConfiguration | isTestRequest |
| GADCustomEventRequest | isTesting |
| v10.0.0 | v11.0.0 |
|
|
9. sürümden 10. sürüme geçiş
iOS 11'de reklam yayını durduruluyor
Google Mobile Ads SDK 10.0.0 sürümü, yalnızca iOS 12 ve sonraki sürümlerin yüklü olduğu cihazlarda reklam yayınlar.
Google Mobile Ads SDK 10.0.0 sürümüne yükseltme yapmak, iOS 11 ve iOS 10 cihazlarda uygulamanızın çalışmasını engellemez ancak bu cihazlarda reklam yayınlanmaz.
Ad Manager uygulama kimliği şartı
Ad Manager uygulama kimliği artık tüm Ad Manager uygulamaları için Info.plist dosyasında zorunludur ve ca-app-pub-################~########## biçiminde olmalıdır. Daha fazla bilgi için Info.plist dosyanızı güncelleme bölümüne bakın.
GoogleAppMeasurement.xcframework şartı
GoogleAppMeasurement.xcframework artık tüm Ad Manager uygulamaları için zorunludur. Google Mobile Ads SDK uygulamasını Cocoapods veya Swift Package Manager üzerinden yüklerseniz başka bir işlem yapmanız gerekmez. Çerçeveleri manuel olarak yüklüyorsanız daha fazla bilgi için Manuel İndirme bölümüne bakın.
Bit koduyla derleme artık desteklenmiyor
Google Mobile Ads SDK entegrasyonu için artık mobil uygulamalarınızda bit kodunu devre dışı bırakmanız gerekiyor.
Kaldırılan türler
| Tür | Notlar |
|---|---|
| GADGender | Değişiklik yok. |
| 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ılı aşkın süredir bu protokolleri kullanmayı bırakmıştır. Uyumlulaştırma ve özel etkinlikler için GADMediationAdapter'ı kullanın. |
| GADMRewardBasedVideoAdNetworkConnectorProtocol |
Kaldırılan özellikler
Aşağıdaki özellikler kaldırılmıştır ve yerlerine yeni özellikler eklenmemiştir.
| v10.0.0 Sınıfı | Mülk |
|---|---|
| GADMediationAdRequest | userBirthday |
| userGender | |
| userHasLocation | |
| userLatitude | |
| userLongitude | |
| userLocationAccuracyInMeters | |
| userLocationDescription | |
| GADCustomEventRequest | userHasLocation |
| userLatitude | |
| userLongitude | |
| userLocationAccuracyInMeters | |
| userLocationDescription |
v8'den v9'a geçiş
iOS 10'da reklam sunumu durduruluyor
Google Mobile Ads SDK 9.0.0 sürümünün desteklediği minimum iOS sürümü iOS 11'dir.
Google Mobile Ads SDK 9.0.0 sürümüne yükseltme yapmak, uygulamanızın iOS 10 cihazlarda çalışmasını engellemez ancak bu cihazlarda reklam yayınlanmaz.
Durum çubuğu kontrollerinin daha sıkı uygulanması
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 denetleyicilerin 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 değerlendirin.
adDidPresentFullScreenContent: adını adWillPresentFullScreenContent: olarak değiştirin.
Davranışta değişiklik yoktur. Temsilci yöntemi, reklam sunulmadan hemen önce çağrılır. Bu nedenle, yeni yöntem adı işlevini daha iyi yansıtır.
GADRequest'te konum ayarı API'sini kaldırma
Google, reklamları hedeflemek için konum verilerini kullanmadığından - (void)setLocationWithLatitude:longitude:accuracy:, GADRequest uygulamasından silindi. Gerekirse bilgileri üçüncü taraf reklam ağlarına sağlamak için üçüncü taraf API'lerini kullanın.
Özel etkinlik arayüzlerinin desteğinin sonlandırılması
Özel etkinlikler, Ad Manager Uyumlulaştırması'nı kullanan yayıncıların, desteklenen reklam ağlarından biri olmayan bir reklam ağı için şelale uyumlulaştırması eklemesine olanak tanır.
Tüm özel etkinlik protokollerinin desteği sonlandırıldı. Bunun yerine, aynı işlevleri elde etmek için mevcut GADMediationAdapter ve GADMediationAdEventDelegate protokollerini kullanın. Bu değişiklik, netliği artırır ve daha önce mevcut olmayan ödüllü reklamlar ve interscroller reklamlar için ö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'lerine karşılık gelen uyumlulaştırma bağdaştırıcısı API'leri listelenmiştir.
| v8 | v9 | |
|---|---|---|
| GADCustomEventBanner GADCustomEventInterstitial GADCustomEventNativeAd |
GADMediationAdapter | GADMediationBannerAd GADMediationInterstitialAd GADMediationInterscrollerAd GADMediationRewardedAd GADMediationNativeAd |
delegate
|
Temsilci, GADMediationAdapter sınıfının her bir yükleme işlevinin yükleme tamamlama işleyicisi tarafından döndürülür.
|
|
-init |
-init |
|
-requestBannerAd:parameter: |
-loadBannerForAdConfiguration: |
|
-requestInterstitialAdWith |
-loadInterstitialFor |
|
-requestNativeAdWithParameter:
|
-loadNativeAdFor |
|
| Yok | -loadInterscrollerAdFor |
|
| Yok | -loadRewardedAdFor |
|
-presentFromRootViewController:
|
-presentFromViewController: |
|
-handlesUserClicks |
-handlesUserClicks |
|
-handlesUserImpressions |
-handlesUserImpressions |
|
Temsilci yöntemleri
Aşağıdaki tabloda, 9.0.0 sürümünden itibaren kullanılması gereken özel etkinlik temsilci yöntemlerine karşılık gelen uyumlulaştırma reklam etkinliği temsilci yöntemleri listelenmiştir.
| v8 | v9 | |
|---|---|---|
GADCustomEventBannerDelegate GADCustomEventInterstitialDelegate GADCustomEventNativeAdDelegate |
GADMediationAdEventDelegate | GADMediationAd |
-customEventBanner:didReceiveAd:-customEventInterstitialDidReceiveAd:
|
Reklam yükleme durumu, GADMediationAdapter sınıfındaki her bir yükleme işlevinin yükleme tamamlama işleyicisine dahil edilir.
|
|
-customEventBanner:didFailAd:-customEventInterstitial:didFailAd:
|
||
-customEventBannerWasClicked:-customEventInterstitialWasClicked:
|
-reportClick |
|
-customEventBannerWill-customEventInterstitialWill
|
-willPresentFullScreenView |
|
-customEventBannerWill-customEventInterstitialWill
|
-willDismissFullScreenView |
|
-customEventBannerDid-customEventInterstitialDid
|
-didDismissFullScreenView |
|
-customEventBannerWill-customEventInterstitialWill
|
-willBackgroundApplication |
|
viewControllerFor |
-[GADMediationBannerAd view] |
|
Kaldırılan/değiştirilen diğer yöntemler ve sabitler
| Yöntem, sabit veya mülkte yapılan değişiklikler | |
|---|---|
kGAD- önekli sabitler
|
Kaldırıldı. GAD- ön ekli sabitleri 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ındaki uygulama içi satın alma API'leri |
GoogleMobileAds içindeki inAppPurchase API'leri kaldırıldı.
|
v7'den v8'e geçiş
Google Mobile Ads SDK 8.0.0 sürümü, bazı önemli değişikliklerin yanı sıra API'lerin yeniden adlandırılması ve kaldırılması gibi değişiklikler içerir.
Tam ekran biçimi API güncellemeleri
Sürüm 8.0.0'dan 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:
Statik sınıf yöntemi
load.Tam ekran reklam yüklemek/göstermek için daha önce kullanılan yaklaşım aşağıdaki gibidir:
- Bir reklam nesnesi örneği oluşturun ve buna bir referans ekleyin.
- Yükleme ve gösterme geri çağırmalarını işleyen bir temsilci atayın.
- Reklam yükleyin.
isReadykullanarak reklamın yüklenip yüklenmediğini kontrol edin.- Reklamı gösterin.
8. sürümde yaklaşım biraz değişir. Yükleme geri çağırmaları artık bir temsilcinin parçası değildir. Bunun yerine,
loadyöntemine tamamlama işleyici olarak iletilirler:- Reklam sınıfında statik bir yükleme yöntemi çağırın ve yükleme tamamlama işleyicisi sağlayın.
- Yükleme tamamlama geri çağırma işlevinde, döndürülen yüklü reklamın referansını saklayın.
- Gösterim geri çağırmalarını işleyen bir yetki verilmiş kullanıcı atayın.
- Reklamı gösterin.
Yeni yaklaşım şu avantajları sağlar:
- Yüklenmemiş bir reklama hiçbir zaman referansınız olmaz.
- Yüklenirken reklam nesnesini tutmanız gerekmez.
Tutarlı reklam etkinlikleri.
Etkinlik türü Mevcut API v8 API Yükleme etkinlikleri GADInterstitialDelegateveyaGADRewardedAdDelegateGAMInterstitialAdLoadCompletionHandlerveyaGADRewardedAdLoadCompletionHandlerSunu etkinlikleri GADFullScreenContentDelegateDaha önce, reklam etkinliklerini dinlemek için kullandığınız biçime bağlı olarak, geçiş reklamının temsilci özelliğine
GADInterstitialDelegateprotokolünü uygulayan bir sınıfı veya ödüllü reklamın temsilci özelliğineGADRewardedAdDelegateprotokolünü uygulayan bir sınıfı kaydetmeniz gerekiyordu. Bu temsilci, bir reklamın hem yükleme hem de sunum yaşam döngüsüyle ilgili yöntemlere sahipti.8. sürümde yükleme ve sunum etkinlikleri ayrıdır. Artık reklamı yüklemeden önce tek bir temsilci ayarlamak zorunda kalmadan, reklam göstermeden önce dilediğiniz zaman
GADFullScreenContentDelegatekaydedebilirsiniz. Her biçime özel olan reklam yükleme etkinlikleri, yükleme yönteminde iletilen tek bir yükleme tamamlama işleyicisine taşınır.
Geçiş reklamı
Reklam yükleme
Aşağıdaki kod snippet'leri, geçiş reklamının nasıl yükleneceğini ve reklamın yüklenmesi başarılı veya başarısız olduğunda etkinliklerin nasıl dinleneceğini gösterir.
sürüm 7
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADInterstitialDelegate { var interstitial: DFPInterstitial! override func viewDidLoad() { super.viewDidLoad() interstitial = DFPInterstitial(adUnitID: "/21775744923/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:@"/21775744923/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:@"/21775744923/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
sürüm 7
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"); } }
Sunum reklam etkinlikleri
Aşağıdaki kod snippet'leri, reklam gösterildiğinde (başarılı veya başarısız bir şekilde) ve kapatıldığında geri çağırmaların nasıl işleneceğini gösterir.
sürüm 7
Swift
override func viewDidLoad() { super.viewDidLoad() interstitial = DFPInterstitial(adUnitID: "/21775744923/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:"/21775744923/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:@"/21775744923/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üllü
Reklam yükleme
sürüm 7
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ı gösterme ve ödülü işleme
Ödüllü reklamlarda, kullanıcı ödül kazandığında etkinliği işlemeniz gerekir. GADRewardedAd API'sinin 7. sürümüyle, GADRewardedAdDelegate protokolünün bir parçası olarak rewardedAd:userDidEarnReward: uygulayabilirsiniz.
8. sürümde, reklamı sunmak için GADUserDidEarnRewardHandler uygulamanız gerekir.
sürüm 7
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"); } }
Sunum reklam etkinlikleri
GADRewardedAd API'si ile reklamı sunan yönteme bir GADRewardedAdDelegate iletirsiniz. GADRewardedAd API'si ile reklamı sunmadan önce reklamda bir özellik olarak GADFullscreenContentDelegate ayarlarsınız.
sürüm 7
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'sinin kaldırılması
Daha yeni olan GADRewardedAd API, ilk olarak Mart 2019'da kullanıma sunuldu ve 18 aydan uzun süredir tercih edilen ödüllü API oldu. Eski GADRewardedBasedVideoAd API'ye kıyasla daha fazla iyileştirme yapılmıştır. Bu iyileştirmeler arasında, aynı anda birden fazla ödüllü reklam yükleme özelliği de yer alır.
Eski GADRewardedBasedVideoAd API'si, SDK 8.0.0 sürümünde kaldırılmıştır.
Akıllı banner'ın kullanımdan kaldırılması ve uyarlanabilir banner'ın kullanılması
Akıllı banner reklamlar, uyarlanabilir banner reklamlar lehine kullanımdan kaldırılmıştır. Uyarlanabilir banner'lar, reklam genişliğini ayarlama konusunda üstün performans ve daha fazla esneklik sağlar. Tam genişlikte banner'lar kullanmaya devam etmek isterseniz aşağıdaki kod snippet'inde gösterildiği gibi uyarlanabilir banner'ı kullanabilirsiniz:
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
Uygulama geri çağırma kaldırma işleminden çıkma
Tüm reklam biçimleri için willLeaveApplication geri çağırma işlevi, applicationDidEnterBackground: ve sceneDidEnterBackground: yöntemleri lehine kaldırıldı. İşletim sistemi düzeyindeki API'leri kullanmak, kullanıcıların uygulamanızdan ayrılma nedeni reklam etkileşimi olsun veya olmasın, bu durumdan haberdar olmanızı sağlar.
willLeaveApplication geri çağırma işlevinin hiçbir zaman reklam tıklama işleyicisi olarak tasarlanmadığını ve tıklamaları raporlamak için bu geri çağırma işlevine güvenmenin doğru bir metrik sağlamadığını unutmayın. Örneğin, harici bir tarayıcıyı başlatan Reklam Seçenekleri simgesinin tıklanması geri çağırmayı tetikledi ancak tıklama sayılmadı.
Sınıf yeniden adlandırmaları
Aşağıdaki tabloda, 8. sürümde değiştirilen veya kaldırılan belirli sınıf adları listelenmektedir. Özet olarak:
GADUnifiedNativeAdile ilgili tüm sınıflarGADNativeAdolarak yeniden adlandırıldı.GADRewardBasedVideoAd,GADNativeExpressAdViewveGADInstreamAdkaldırıldı.DFPön ekine sahip tüm sınıflarGAMön ekiyle değiştirildi.
| v7.68.0 Sınıf | v8.0.0 Sınıfı |
|---|---|
| DFPBannerView | GAMBannerView |
| DFPBannerViewOptions | GAMBannerViewOptions |
| DFPInterstitial | GAMInterstitialAd |
| DFPRequest | GAMRequest |
| GADRequestError | NSError |
| GADUnifiedNativeAdView | GADNativeAdView |
| GADUnifiedNativeAd | GADNativeAd |
| GADUnifiedNativeAdAssetIdentifiers | GADNativeAdAssetIdentifiers |
| GADUnifiedNativeAdDelegate | GADNativeAdDelegate |
| GADUnifiedNativeAdUnconfirmedClickDelegate | GADNativeAdUnconfirmedClickDelegate |
| GADNativeCustomTemplateAd | GADCustomNativeAd |
| GADNativeCustomTemplateAdLoaderDelegate | GADCustomNativeAdLoaderDelegate |
| GADNativeAdDelegate | GADCustomNativeAdDelegate |
| GADInAppPurchase | Kaldırıldı |
| GADInterstitial | GADInterstitialAd |
| GADNativeExpressAdView | Kaldırıldı |
| GADRewardBasedVideoAd | Kaldırıldı |
| GADInstreamAd | Kaldırıldı |
| GADInstreamAdView | Kaldırıldı |
Kaldırılan/değiştirilen yöntemler
Aşağıdaki tabloda, 8. sürümdeki belirli değişiklikler listelenmektedir. Özet olarak:
- Daha önce desteği sonlandırılan yöntemler ve özellikler kaldırıldı.
-willLeaveApplication:temsilci yöntemleri tüm biçimler için kaldırıldı.- Reklam ağı sınıf adı,
GADResponseInfoözelliğine taşındı. - Test cihazı tanımlayıcısı
GADRequestConfigurationmülküne taşındı.
| v7.68.0 Sınıf | v7.68.0 API | v8.0.0 API | Notlar |
|---|---|---|---|
| GADMobileAds | +configureWithApplicationID: | -startWithCompletionHandler: | Uygulama kimliği Info.plist'te ayarlanmıştır. |
| +disableAutomatedInApp |
-disableAutomatedInApp |
||
| +disableSDKCrashReporting | -disableSDKCrashReporting | ||
| GADRequest | testDevices | GADRequestConfiguration |
testDeviceIdentifiers özelliği tüm reklam istekleri için geçerliyken eski testDevices özelliği istek başına ayarlanıyordu. |
| gender | Kaldırıldı | ||
| doğum günü | Kaldırıldı | ||
| +sdkVersion | GADMobileAds.sharedInstance |
||
| -setBirthday |
Kaldırıldı | ||
| -setLocationWithDescription: | -setLocationWith |
||
| -tagForChildDirectedTreatment: | [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment] | ||
| GADErrorCode | kGADError* | GADError* | k ön eki tüm hata kodu sabitlerinden kaldırıldı.
|
| GADBannerView | hasAutoRefreshed | autoloadEnabled | |
| inAppPurchaseDelegate | Kaldırıldı | ||
| mediatedAdView | Kaldırıldı | ||
| adNetworkClassName | responseInfo |
||
| DFPBannerView | -setValidAdSizesWithSizes: | -setValidAdSizes: | |
| DFPBannerViewOptions | -adSizeDelegate | Kaldırıldı | |
| GADBannerViewDelegate | -adViewDidReceiveAd: | -bannerViewDidReceiveAd: | |
| -adView:didFailToReceive |
-bannerView:didFailToReceive |
||
| -adViewWillPresentScreen: | -bannerViewWillPresentScreen: | ||
| -adViewWillDismissScreen: | -bannerViewWillDismissScreen: | ||
| -adViewDidDismissScreen: | -bannerViewDidDismissScreen: | ||
| -adViewWillLeaveApplication: | Kaldırıldı | ||
| GADNativeCustomTemplateAd | templateID | GADCustomNativeAd.formatID | |
| -performClickOnAssetWithKey: |
-performClickOnAssetWithKey: | ||
| GADNativeAdImageAd |
preferredImageOrientation | GADNativeAdMediaAdOptions |
|
| GADInterstitial | inAppPurchaseDelegate | Kaldırıldı | |
| isReady | Kaldırıldı | Bunun yerine canPresentFrom |
|
| hasBeenUsed | Kaldırıldı | ||
| -init | -initWithAdUnitID: | ||
| -setAdUnitID: | -initWithAdUnitID: | ||
| adNetworkClassName | responseInfo |
||
| -interstitialWill |
Kaldırıldı | ||
| GADUnifiedNativeAd | videoController | mediaContent.videoController | |
| adNetworkClassName | responseInfo |