Bu sayfada, mevcut ve önceki sürümlere yönelik taşıma işlemleri ele alınmaktadır.
10 sürümünden v11 sürümüne taşıma
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ı durduruldu
Google Mobile Ads SDK'sı 11.0.0 sürümü yalnızca iOS 13 çalıştıran cihazlarda reklam sunar ve daha yüksek olabilir.
GoogleAppMeasurement bağımlılığı kaldırıldı
11.0.0 sürümünde,
GoogleAppMeasurement
adlı kullanıcılar
emin olun. AdMob'daki kullanıcı metriklerini açma/kapatma düğmesini destekleyen bu bağımlılık
kullanımdan kaldırıldı. Alıcı:
AdMob'da kullanıcı metriklerini toplamaya devam etmek,
AdMob uygulamanızı Firebase'e bağlayın ve
entegre etmek için
Firebase için Google Analytics SDK'sını
en iyi şekilde yararlanabilirsiniz.
Tam ekran reklam sunumunda yapılan değişiklikler
Aşağıdaki değişiklikler çeşitli reklam biçimlerini etkilemektedir:
- Uygulama açılışı
- Geçiş reklamı
- Ödüllü
- Ödüllü geçiş reklamı
-canPresentFromRootViewController:error:
ve
-presentFromRootViewController:
boş değerlidir. nil iletilirse reklam
görünüm denetleyicisi hiyerarşisinde en üstteki görünüm denetleyicisinden sunulur.
Yöntemler kaldırıldı
Aşağıdaki yöntemler kaldırılır.
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?) alanını kullanın. |
GADMediationBannerAdEventDelegate | willBackgroundApplication() |
Yerine geçmez. |
GADMediationInterstitialAdEventDelegate | willBackgroundApplication() |
Yerine geçmez. |
GADMediationNativeAdEventDelegate | willBackgroundApplication() |
Yerine geçmez. |
GADMediationRewardedAdEventDelegate | didRewardUser(with reward: GADAdReward) |
Bunun yerine didRewardUser() alanını kullanın. |
GADMediatedUnifiedNativeAdNotificationSource | mediatedNativeAdWillLeaveApplication(_ mediatedNativeAd: GADMediatedUnifiedNativeAd) |
Yerine geçmez. |
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 | Yerine geçmez. |
userLatitude | ||
userLongitude | ||
userLocationAccuracyInMeters | ||
childDirectedTreatment | Bunun yerine GADMobileAds.sharedInstance.requestConfiguration.tagForChildDirectedTreatment alanını kullanın. |
|
GADResponseInfo | adNetworkClassName | Bunun yerine loadedAdNetworkResponseInfo tarafından sağlanan adNetworkClassName öğesini kullanın. |
GADAdFormatUnknown
GADAdFormatUnknown
yerine yenisi koyulmadan kaldırıldı.
Günlük kaydı SDK sürümünde yapılan değişiklikler
Sürüm 11.0.0 sdkVersion
ürününü kaldırıyor. Google Mobile Ads SDK'sı sürümünü günlüğe kaydetmek için
versionNumber
kullanılır
.
Sürüm 10.0.0
GADMobileAds.sharedInstance().sdkVersion
Sürüm 11.0.0
GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber)
GADAdLoader hata işleme değişiklikleri
11.0.0 sürümünden itibaren, GADAdLoader
aşağıdaki durumlarda reklam isteğinde bulunmaz
delegate
istenen reklam türlerine uygun değil yetki protokolüdür. Daha önce
başarısız oldu.
Test davranışındaki değişiklikler
Aşağıdaki durumlarda güncel koşulları gösteren tabloya bakın.
mülkler true
değerini döndürür.
Sınıf | Özellik |
---|---|
GADMediationAdConfiguration | isTestRequest |
GADCustomEventRequest | isTesting |
v10.0.0 | v11.0.0 |
|
|
v9'dan v10'a taşıma
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 taşıma
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: |
-loadBannerForAdConfiguration: |
|
-requestInterstitialAdWith |
-loadInterstitialFor |
|
-requestNativeAdWithParameter:
|
-loadNativeAdFor |
|
Yok | -loadInterscrollerAdFor |
|
Yok | -loadRewardedAdFor |
|
-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 |
|
-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 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 taşıma
Google Mobile Ads SDK'sının 8.0.0 sürümünde, ve API'lerin kaldırılması konusunda ısrarcı olduk.
Tam ekran biçim API güncellemeleri
8.0.0 sürümünden itibaren, geçiş reklamları ve ödüllü reklamlar genel bir tam ekran reklam stilini kullanın. Bu yeni tam ekran reklam API'lerinde iki sürüm 7 tam ekran reklam API'lerinden önemli farkları vardır:
Statik sınıf yöntemi
load
.Tam ekran reklam yüklemeye/göstermeye yönelik önceki yaklaşım şu şekildedir:
- Reklam nesnesi örneği oluşturun ve buna referans verin.
- Yükleme ve geri çağırma işlevleriyle ilgilenen bir temsilci atayın.
- Bir reklam yükleyin.
- Reklamın
isReady
ile yüklenip yüklenmediğini kontrol edin. - Reklamı gösterin.
8. sürümde yaklaşım biraz değişiyor. Geri çağırmaları yükleme özelliği artık kullanılmıyor görevi görür. Bunun yerine,
load
yöntemine tamamlama işleyici:- Reklam sınıfında bir statik yükleme yöntemi çağırın ve yükleme tamamlama sağlayın gösterir.
- Yükleme tamamlama geri çağırmasında geri döndü.
- Program geri çağırmalarıyla ilgilenen bir temsilci atayın.
- Reklamı gösterin.
Yeni yaklaşım şu avantajları sağlar:
- Yüklenmeyen bir reklama asla atıfta bulunamazsınız.
- Yükleme sırasında bir reklam nesnesini basılı tutmanız gerekmez.
Tutarlı reklam etkinlikleri.
Etkinlik türü Mevcut API v8 API'sı Yükleme etkinlikleri GADInterstitialDelegate
veyaGADRewardedAdDelegate
GAMInterstitialAdLoadCompletionHandler
veyaGADRewardedAdLoadCompletionHandler
Sunu etkinlikleri GADFullScreenContentDelegate
Önceden, reklam etkinliklerini dinlemek için, bu durumda olan ,
GADInterstitialDelegate
protokolüne eklemeli veya ,GADRewardedAdDelegate
hangi biçime bağlı olarak ödüllü reklamın yetki verilen mülküne protokol protokolü gösterir. Aynı yetki verilen kullanıcının hem yükleme hem de yüklemeyle ilgili bir reklamın sunu yaşam döngüsüSürüm 8'de, yükleme ve sunu etkinlikleri ayrıdır. Artık şunları yapabilirsiniz: bir kaydettirmek
GADFullScreenContentDelegate
tek bir anahtar kelime ayarlamanız yerine, bir reklam göstermeden önce yetki vermeniz gerekir. Her birine özel reklam sayısı etkinlikleri biçiminde, yükleme yönteminde iletilen tek bir yükleme tamamlama işleyiciye geçin.
Geçiş reklamı
Reklam yükle
Aşağıdaki kod snippet'leri, bir geçiş reklamını nasıl yükleyeceğinizi ve reklamlar başarıyla yüklenemediğinde veya yüklenemediğinde gerçekleşen etkinlikleri ifade eder.
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"); } }
Sunu reklamı etkinlikleri
Aşağıdaki kod snippet'leri, reklamınızın gösterildiği ve sonuç gösterilir (başarıyla veya başarısız bir şekilde) ve kapatıldığında.
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ükle
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 ve ödülü kullan
Ödüllü reklamlar, bir kullanıcı ödül kazandığında etkinliği gerçekleştirmenizi gerektirir. Entegre
GADRewardedAd
API'nin 7. sürümünü kullanıyorsanız
GADRewardedAdDelegate
protokolünün bir parçası olarak rewardedAd:userDidEarnReward:
.
Sürüm 8'de, aşağıdakileri yapmak için GADUserDidEarnRewardHandler
'yı uygularsınız:
reklamı sunun.
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"); } }
Sunu reklamı etkinlikleri
GADRewardedAd
API ile yönteme bir GADRewardedAdDelegate
iletirsiniz
reklam öğesidir. GADRewardedAd
API ile
Sunumdan önce reklamda bir özellik olarak GADFullscreenContentDelegate
reklam.
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 GADÖdüllü TabanlıVideoAd API'nin kaldırılması
Daha yeni
GADRewardedAd
İlk olarak Mart 2019'da kullanıma sunulan API,
18 aydan uzun süredir API'de. Eski sürüme kıyasla daha fazla iyileştirme yapıldı
Birden fazla GADRewardedBasedVideoAd
API yükleme özelliği dahil
ödüllü reklam örneğidir.
Eski GADRewardedBasedVideoAd
API, SDK 8.0.0 sürümünde kaldırılmıştır.
Uyarlanabilir banner'ın yaygınlaşması için akıllı banner'ın kullanımdan kaldırılması
Akıllı banner reklamların desteği sonlandırılıyor uyarlanabilir banner'ın yerine reklam. Uyarlanabilir banner'lar, tüm reklam çalışmalarında daha iyi performans ve daha fazla reklam genişliğini ayarlayabilirsiniz. Tam genişlikte banner'lar kullanmaya devam etmeyi tercih ederseniz aşağıdaki kod snippet'inde gösterildiği gibi uyarlanabilir banner kullanılarak yapılabilir:
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 arama kaldırma işleminden çık
Tüm reklam biçimleri için willLeaveApplication
geri çağırma
lehinehasına çıkarıp
applicationDidEnterBackground:
ve
sceneDidEnterBackground:
yöntemlerine göz atın. OS düzeyinde API'lerin kullanılması, hangisi olursa olsun kullanıcılar uygulamanızdan ayrıldığında sizi bilgilendirir
bir reklam etkileşiminden kaynaklanıp kaynaklanmadığını gösterir.
Geri çağırma işlevinin willLeaveApplication
hiçbir zaman tasarlanmadığını unutmayın
ve tıklamaları raporlamak için bu geri çağırmaya dayanarak
ve doğru bir metrik üretmenizi sağlar. Örneğin, Reklam Seçenekleri'nin tıklanması
harici bir tarayıcı başlatan simge
tıklayın.
Sınıfları yeniden adlandırma
Aşağıdaki tabloda, şurada değiştirilmiş veya kaldırılmış belirli sınıf adları listelenmiştir: 8. sürüm olduğundan emin olun. Özet olarak:
GADUnifiedNativeAd
ile ilgili tüm sınıflar şu şekilde yeniden adlandırıldı:GADNativeAd
.GADRewardBasedVideoAd
,GADNativeExpressAdView
veGADInstreamAd
kaldırıldı.DFP
ön ekine sahip tüm sınıflar birGAM
önekiyle 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 |
GADBirleşikYerelReklam | 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, sürüm 8'deki değişiklikler listelenmiştir. Özet olarak:
- Daha önce kullanımdan kaldırılan yöntemler ve özellikler kaldırıldı.
-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
alanına taşındı
v7.68.0 Sınıfı | sürüm 7.68.0 API | sürüm 8.0.0 API | Notlar |
---|---|---|---|
GADMobileAds | +configureWithApplicationID: | -startWithCompletionHandler: | Uygulama kimliği Info.plist dosyasında ayarlanır. |
+disableAutomatedInApp |
-disableAutomatedInApp |
||
+disableSDKCrashReporting | -disableSDKCrashReporting | ||
GADRequest | testDevices | GADRequestConfiguration |
testDeviceIdentifiers özelliği tüm reklam istekleri için geçerlidir, eski testDevices özelliği istek başına ayarlandı. |
gender | Kaldırıldı | ||
doğum günü | Kaldırıldı | ||
+sdkVersion | GADMobileAds.sharedInstance |
||
-setBirthday |
Kaldırıldı | ||
-setLocationWithDescription: | -setLocationWith |
||
-Çocuklara yönelik-Yönelik Değerlendirme: | [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment] | ||
GADErrorCode | kGADError* | GAD Hatası* | k öneki tüm hata kodu sabit değerlerinden çıkarılır.
|
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 canServeFrom |
|
hasBeenUsed | Kaldırıldı | ||
-init | -initWithAdUnitID: | ||
-setAdUnitID: | -initWithAdUnitID: | ||
adNetworkClassName | responseInfo |
||
-interstitialWill |
Kaldırıldı | ||
GADBirleşikYerelReklam | videoController | mediaContent.videoController | |
adNetworkClassName | responseInfo |