Auf dieser Seite werden Migrationen für aktuelle und vorherige Versionen des Google Mobile Ads SDK für iOS beschrieben. Version 11.0.0 wird voraussichtlich im Januar 2024 veröffentlicht.
Von SDK-Version v10 zu v11 migrieren
Minimales Bereitstellungsziel
Das Mindestbereitstellungsziel wurde auf iOS 12 erhöht.
Xcode-Mindestversion
Die mindestens unterstützte Xcode-Version wurde auf 15.1 erhöht.
Unter iOS 12 werden keine Anzeigen mehr ausgeliefert
Mit Version 11.0.0 des Google Mobile Ads SDK werden Anzeigen nur auf Geräten mit iOS 13 oder höher ausgeliefert.
GoogleAppMeasurement-Abhängigkeit entfernt
In Version 11.0.0 wurde die Abhängigkeit von GoogleAppMeasurement
entfernt. Diese Abhängigkeit, die auf der Ein/Aus-Schaltfläche für Nutzermesswerte in AdMob basiert, wird Anfang 2024 eingestellt. Damit weiterhin Nutzermesswerte in AdMob erfasst werden, müssen Sie Ihre AdMob-App mit Firebase verknüpfen und das Google Analytics for Firebase SDK in Ihre App einbinden.
Änderungen bei der Vollbildanzeigenpräsentation
Die folgenden Änderungen wirken sich auf die verschiedenen Anzeigenformate aus:
- App-Start-Anzeige
- Interstitial
- Verfügbar
- Interstitial mit Prämie
Für den Ansichts-Controller-Parameter in -canPresentFromRootViewController:error:
und -presentFromRootViewController:
sind Nullwerte zulässig. Falls der Wert nil übergeben wird, wird die Anzeige vom obersten View-Controller in der Ansicht-Controller-Hierarchie ausgeliefert.
Entfernte Methoden
Die folgenden Methoden werden entfernt.
v11.0.0 Typ | Methode | Hinweise |
---|---|---|
GADAppOpenAd | load(withAdUnitID adUnitID: String, request: GADRequest?, orientation: UIInterfaceOrientation) |
Verwenden Sie stattdessen load(withAdUnitID adUnitID: String, request: GADRequest?) . |
GADMediationBannerAdEventDelegate | willBackgroundApplication() |
Kein Ersatz. |
GADMediationInterstitialAdEventDelegate | willBackgroundApplication() |
Kein Ersatz. |
GADMediationNativeAdEventDelegate | willBackgroundApplication() |
Kein Ersatz. |
GADMediationRewardedAdEventDelegate | didRewardUser(with reward: GADAdReward) |
Verwenden Sie stattdessen didRewardUser() . |
GADMediatedUnifiedNativeAdNotificationSource | mediatedNativeAdWillLeaveApplication(_ mediatedNativeAd: GADMediatedUnifiedNativeAd) |
Kein Ersatz. |
GADRequestConfiguration | setSameAppKeyEnabled(_ enabled: Bool) |
Verwenden Sie stattdessen setPublisherFirstPartyIDEnabled(_ enabled: Bool) . |
tagForUnderAge(ofConsent underAgeOfConsent: Bool) |
Verwenden Sie stattdessen die Property tagForUnderAgeOfConsent . |
|
tag(forChildDirectedTreatment childDirectedTreatment: Bool) |
Verwenden Sie stattdessen die Property tagForChildDirectedTreatment . |
Unterkünfte entfernt
Die folgenden Eigenschaften werden entfernt.
v11.0.0-Klasse | Property | Hinweise |
---|---|---|
GADMediationAdConfiguration | hasUserLocation | Kein Ersatz. |
userLatitude | ||
userLongitude | ||
userLocationAccuracyInMeters | ||
childDirectedTreatment | Verwenden Sie stattdessen GADMobileAds.sharedInstance.requestConfiguration.tagForChildDirectedTreatment . |
|
GADResponseInfo | adNetworkClassName | Verwende stattdessen adNetworkClassName von loadedAdNetworkResponseInfo . |
GADAdFormatUnknown wurde entfernt
„GADAdFormatUnknown
“ wurde ohne Ersatz entfernt.
Änderungen an der Logging SDK-Version
In Version 11.0.0 wird sdkVersion
entfernt. Verwenden Sie zum Protokollieren der Version des Google Mobile Ads SDK stattdessen versionNumber
.
Version 10.0.0
GADMobileAds.sharedInstance().sdkVersion
Version 11.0.0
GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber)
Änderungen an der Fehlerbehandlung von GADAdLoader
Ab Version 11.0.0 sendet GADAdLoader
keine Anzeigenanfrage, wenn die zugehörige delegate
nicht dem Delegierungsprotokoll des angeforderten Anzeigentyps entspricht. Bisher ist die Anfrage nach der Anzeigenanfrage fehlgeschlagen.
Änderungen am Testverhalten
In der Tabelle finden Sie die aktualisierten Bedingungen für den Fall, dass die folgenden Attribute true
zurückgeben.
Klasse | Property |
---|---|
GADMediationAdConfiguration | isTestRequest |
GADCustomEventRequest | isTesting |
v10.0.0 | v11.0.0 |
|
|
Von Version 9 zu Version 10 migrieren
Unter iOS 11 werden keine Anzeigen mehr ausgeliefert
Mit Version 10.0.0 des Google Mobile Ads SDK werden Anzeigen nur auf Geräten mit iOS 12 oder höher ausgeliefert.
Ein Upgrade auf Version 10.0.0 des Google Mobile Ads SDK hat keine Auswirkungen auf Ihre App auf Geräten mit iOS 11 und iOS 10, auf diesen Geräten werden jedoch keine Anzeigen ausgeliefert.
Das Erstellen mit Bitcode wird nicht mehr unterstützt
Das Deaktivieren von Bitcode in Ihren mobilen Apps ist jetzt erforderlich, um das Google Mobile Ads SDK einzubinden.
Typen entfernt
Typ | Hinweise |
---|---|
GADGender | Kein Ersatz. |
GADMRewardBasedVideoAdNetworkAdapterProtocol | Für alle unter Werbenetzwerke auswählen aufgeführten Adapter für die Vermittlung mit Prämie werden diese Protokolle seit über einem Jahr nicht mehr verwendet. Verwenden Sie GADMediationAdapter für die Vermittlung und benutzerdefinierte Ereignisse. |
GADMRewardBasedVideoAdNetworkConnectorProtocol |
Eigenschaften entfernt
Die folgenden Eigenschaften werden ersatzlos entfernt.
v10.0.0-Klasse | Property |
---|---|
GADMediationAdRequest | userBirthday |
userGender | |
userHasLocation | |
userLatitude | |
userLongitude | |
userLocationAccuracyInMeters | |
userLocationDescription | |
GADCustomEventRequest | userHasLocation |
userLatitude | |
userLongitude | |
userLocationAccuracyInMeters | |
userLocationDescription |
Von Version 8 zu Version 9 migrieren
Unter iOS 10 werden keine Anzeigen mehr ausgeliefert
iOS 11 ist die mindestens erforderliche iOS-Version, die vom Google Mobile Ads SDK 9.0.0 unterstützt wird.
Wenn Sie ein Upgrade auf Version 9.0.0 des Google Mobile Ads SDK ausführen, funktioniert Ihre App auf iOS 10-Geräten zwar weiterhin, auf diesen Geräten werden jedoch keine Anzeigen ausgeliefert.
Strengere Erzwingung von Steuerelementen in der Statusleiste
Ab Version 9.0.0 sollte bei der Präsentation von Vollbildanzeigen in Ihrer App sichergestellt sein, dass durch die Anzeigen die Darstellung der Statusleiste gesteuert werden kann. Andernfalls wird in den Protokollen eine Fehlermeldung angezeigt.
Abhängig vom jeweiligen Layout der Ansichts-Controller in Ihrer App müssen Sie möglicherweise keine Änderungen vornehmen, um dies zu gewährleisten. Sie sollten die Property childViewControllerForStatusBarHidden
in der rootViewController
der Anzeige festlegen.
Benennen Sie "ad DidPresentFullScreenContent:" in "adWillPresentFullScreenContent" um:
Es gibt keine Verhaltensänderung. Die Delegatmethode wird aufgerufen, bevor die Anzeige präsentiert werden soll. Der neue Methodenname spiegelt daher die Funktionalität besser wider.
API zur Standorteinstellung von GADRequest entfernen
- (void)setLocationWithLatitude:longitude:accuracy:
wurde aus GADRequest
gelöscht, da Google Standortdaten nicht für die Anzeigenausrichtung verwendet. Nutzen Sie bei Bedarf APIs von Drittanbietern, um die Informationen für Drittanbieter-Werbenetzwerke bereitzustellen.
Einstellung von Benutzeroberflächen für benutzerdefinierte Ereignisse
Mithilfe von benutzerdefinierten Ereignissen können Publisher, die die AdMob Vermittlung verwenden, die abfolgebasierte Vermittlung für ein Werbenetzwerk hinzufügen, das nicht zu den unterstützten Werbenetzwerken gehört.
Alle benutzerdefinierten Ereignisprotokolle wurden eingestellt. Verwenden Sie stattdessen die vorhandenen Protokolle GADMediationAdapter
und GADMediationAdEventDelegate
, um dieselben Funktionen zu erreichen. Durch diese Änderung wird die Verständlichkeit verbessert und Sie können benutzerdefinierte Ereignisse für Anzeigen mit Prämie und Interscroller-Anzeigen erstellen, die zuvor nicht verfügbar waren.
APIs
In der folgenden Tabelle sind die entsprechenden APIs für den Vermittlungsadapter für benutzerdefinierte Ereignis-APIs aufgeführt, die ab Version 9.0.0 verwendet werden sollten.
v8 | v9 | |
---|---|---|
GADCustomEventBanner GADCustomEventInterstitial GADCustomEventNativeAd |
GADMediationAdapter | GADMediationBannerAd GADMediationInterstitialAd GADMediationInterscrollerAd GADMediationPrämieAd GADMediationNativeAd |
delegate
|
Delegate wird vom Handler für den Ladeabschluss aller Ladefunktionen der Klasse GADMediationAdapter zurückgegeben.
|
|
-init |
-init |
|
-requestBannerAd:parameter: |
-loadBannerForAdConfiguration: |
|
-requestInterstitialAdWith |
-loadInterstitialFor |
|
-requestNativeAdWithParameter:
|
-loadNativeAdFor |
|
– | -loadInterscrollerAdFor |
|
– | -loadRewardedAdFor |
|
-presentFromRootViewController:
|
-presentFromViewController: |
|
-handlesUserClicks |
-handlesUserClicks |
|
-handlesUserImpressions |
-handlesUserImpressions |
Methoden delegieren
In der folgenden Tabelle sind die Delegationsmethoden von Vermittlungsanzeigenereignissen für benutzerdefinierte Ereignisse aufgeführt, die ab Version 9.0.0 verwendet werden sollten.
v8 | v9 | |
---|---|---|
GADCustomEventBannerDelegate GADCustomEventInterstitialDelegate GADCustomEventNativeAdDelegate |
GADMediationAdEventDelegate | GADMediationAd |
-customEventBanner:didReceiveAd: -customEventInterstitialDidReceiveAd:
|
Der Ladestatus von Anzeigen ist im Handler für den Ladevorgang der einzelnen Ladefunktionen in der Klasse GADMediationAdapter enthalten.
|
|
-customEventBanner:didFailAd: -customEventInterstitial:didFailAd:
|
||
-customEventBannerWasClicked: -customEventInterstitialWasClicked:
|
-reportClick |
|
-customEventBannerWill -customEventInterstitialWill
|
-willPresentFullScreenView |
|
-customEventBannerWill -customEventInterstitialWill
|
-willDismissFullScreenView |
|
-customEventBannerDid -customEventInterstitialDid
|
-didDismissFullScreenView |
|
-customEventBannerWill -customEventInterstitialWill
|
-willBackgroundApplication |
|
viewControllerFor |
-[GADMediationBannerAd view] |
Andere entfernte/ersetzte Methoden und Konstanten
Änderungen an Methode, Konstante oder Eigenschaft | |
---|---|
kGAD- -Präfix-Konstanten
|
Entfernt. Verwenden Sie GAD- -Konstanten.
|
GADAdNetworkResponseInfo
|
credentials wurden entfernt. Verwenden Sie stattdessen adUnitMapping .
|
GAMRequest
|
kGAMSimulatorID in GAMRequest wurde eingestellt.
Verwenden Sie stattdessen GADSimulatorID in GADRequestConfiguration .
|
GADCustomNativeAd
|
mediaView in GADCustomNativeAd wurde eingestellt.
Verwenden Sie stattdessen mediaContent .
|
APIs für In-App Purchases in GoogleMobileAds |
inAppPurchase APIs in GoogleMobileAds wurden entfernt.
|
Von Version 7 zu Version 8 migrieren
In Version 8.0.0 des Google Mobile Ads SDK wurden einige größere Änderungen eingeführt und APIs umbenannt.
API-Updates für das Vollbildformat
Ab Version 8.0.0 wird für Interstitial-Anzeigen und Anzeigen mit Prämie aus Gründen der Einheitlichkeit ein allgemeines Vollbildanzeigendesign verwendet. Die neuen APIs für Vollbildanzeigen unterscheiden sich von den Vollbildanzeigen-APIs in Version 7 im Wesentlichen in zweierlei Hinsicht:
Statische Klassenmethode
load
.Der bisherige Ansatz zum Laden/Einblenden einer Vollbildanzeige sieht so aus:
- Erstellen Sie eine Anzeigenobjektinstanz und weisen Sie einen Verweis darauf zu.
- Weisen Sie einen Bevollmächtigten zu, der den Ladevorgang verarbeitet und Callbacks anzeigt.
- Laden Sie eine Anzeige.
- Prüfen Sie mit
isReady
, ob die Anzeige geladen wird. - Schalten Sie die Anzeige.
In Version 8 ändert sich der Ansatz geringfügig. Lade-Callbacks sind nicht mehr Teil eines Delegaten. Stattdessen werden sie als Vervollständigungs-Handler an die Methode
load
übergeben:- Rufen Sie eine statische Lademethode für die Anzeigenklasse auf und geben Sie einen Handler für den Ladevorgang an.
- Behalten Sie im Callback für den Ladeabschluss einen Verweis auf die geladene Anzeige, die zurückgegeben wird.
- Weisen Sie einen Bevollmächtigten zu, der Show-Callbacks verarbeitet.
- Schalten Sie die Anzeige.
Der neue Ansatz bietet folgende Vorteile:
- Sie haben niemals einen Verweis auf eine Anzeige, die nicht geladen ist.
- Sie müssen sich während des Ladevorgangs nicht an ein Anzeigenobjekt halten.
Konsistente Anzeigenereignisse:
Ereignistyp Vorhandene API API Version 8 Ladeereignisse GADInterstitialDelegate
oderGADRewardedAdDelegate
GADInterstitialAdLoadCompletionHandler
oderGADRewardedAdLoadCompletionHandler
Präsentationsveranstaltungen GADFullScreenContentDelegate
Um auf Anzeigenereignisse zu warten, haben Sie bisher je nach verwendetem Format eine Klasse registriert, die das
GADInterstitialDelegate
-Protokoll in der Delegate-Eigenschaft einer Interstitial-Anzeige implementiert, oder eine Klasse registriert, die dasGADRewardedAdDelegate
-Protokoll in der Delegate-Eigenschaft einer Anzeige mit Prämie implementiert. Derselbe Bevollmächtigte hatte Methoden, die sich sowohl auf den Lade- als auch den Präsentationszyklus einer Anzeige bezogen.Bei Version 8 sind Lade- und Präsentationsereignisse getrennt. Sie können jetzt jederzeit ein
GADFullScreenContentDelegate
registrieren, bevor eine Anzeige ausgeliefert wird, anstatt vor dem Laden der Anzeige einen einzelnen Bevollmächtigten festlegen zu müssen. Für jedes Format spezifische Ladeereignisse für Anzeigen werden zu einem einzelnen Handler für den Ladeabschluss verschoben, der in der Lademethode übergeben wird.
Interstitial
Anzeige laden
Die folgenden Code-Snippets zeigen, wie Sie eine Interstitial-Anzeige laden und auf Ereignisse warten, wenn die Anzeige erfolgreich ist oder nicht geladen werden kann.
v7
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADInterstitialDelegate { var interstitial: GADInterstitial! override func viewDidLoad() { super.viewDidLoad() interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/44118910") interstitial.delegate = self let request = GADRequest() interstitial.load(request) } /// Tells the delegate an ad request succeeded. func interstitialDidReceiveAd(_ ad: GADInterstitial) { print("Interstitial ad loaded.") } /// Tells the delegate an ad request failed. func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) { print("Interstitial ad failed to load with error: \(error.localizedDescription)") } }
Objective-C
@import GoogleMobileAds; @import UIKit; @interface ViewController ()@property(nonatomic, strong) GADInterstitial *interstitial; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.interstitial = [[GADInterstitial alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/44118910"]; self.interstitial.delegate = self; GADRequest *request = [GADRequest request]; [self.interstitial loadRequest:request]; } /// Tells the delegate an ad request succeeded. - (void)interstitialDidReceiveAd:(GADInterstitial *)ad { NSLog(@"Insterstitial ad loaded."); } /// Tells the delegate an ad request failed. - (void)interstitial:(GADInterstitial *)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: GADInterstitialAd? override func viewDidLoad() { super.viewDidLoad() let request = GADRequest() GADInterstitialAd.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) GADInterstitialAd *interstitial; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; GADRequest *request = [GADRequest request]; [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/44118910" request:request completionHandler:^(GADInterstitialAd *ad, NSError *error) { if (error) { NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]); return; } self.interstitial = ad; self.interstitial.fullScreenContentDelegate = self; }]; }
Displayanzeige
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"); } }
Ereignisse für Präsentationsanzeigen
Die folgenden Code-Snippets zeigen, wie mit Callbacks verfahren werden soll, die auftreten, wenn die Anzeige eingeblendet (erfolgreich oder nicht erfolgreich) oder geschlossen wird.
v7
Swift
override func viewDidLoad() { super.viewDidLoad() interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/44118910") interstitial.delegate = self ... } /// Tells the delegate that an interstitial will be presented. func interstitialWillPresentScreen(_ ad: GADInterstitial) { print("Interstitial ad will be presented.") } /// Tells the delegate the interstitial is to be animated off the screen. func interstitialWillDismissScreen(_ ad: GADInterstitial) { print("Interstitial ad will be dismissed.") } /// Tells the delegate the interstitial had been animated off the screen. func interstitialDidDismissScreen(_ ad: GADInterstitial) { 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: GADInterstitial) { print("Interstitial ad will leave application.") }
Objective-C
- (void)viewDidLoad { [super viewDidLoad]; self.interstitial = [[GADInterstitial alloc] initWithAdUnitID:"ca-app-pub-3940256099942544/44118910"]; self.interstitial.delegate = self; ... } /// Tells the delegate that an interstitial will be presented. - (void)interstitialWillPresentScreen:(GADInterstitial *)ad { NSLog(@"Interstitial ad will be presented."); } /// Tells the delegate the interstitial is to be animated off the screen. - (void)interstitialWillDismissScreen:(GADInterstitial *)ad { NSLog(@"Interstitial ad will be dismissed."); } /// Tells the delegate the interstitial had been animated off the screen. - (void)interstitialDidDismissScreen:(GADInterstitial *)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:(GADInterstitial *)ad { NSLog(@"Interstitial ad will leave application."); }
v8
Swift
override func viewDidLoad() { super.viewDidLoad() let request = GADRequest() GADInterstitialAd.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]; GADRequest *request = [GADRequest request]; [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/44118910" request:request completionHandler:^(GADInterstitialAd *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."); }
Verfügbar
Anzeige laden
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(GADRequest()) { 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; GADRequest *request = [GADRequest 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 = GADRequest() 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]; GADRequest *request = [GADRequest 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; }
Anzeige schalten und Prämie erhalten
Bei Anzeigen mit Prämie muss das Ereignis selbst ausgeführt werden, wenn ein Nutzer eine Prämie erhält. Bei Version 7 der GADRewardedAd
API implementieren Sie rewardedAd:userDidEarnReward:
als Teil des GADRewardedAdDelegate
-Protokolls.
In Version 8 implementieren Sie GADUserDidEarnRewardHandler
, um die Anzeige zu präsentieren.
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"); } }
Ereignisse für Präsentationsanzeigen
Mit der GADRewardedAd
API übergeben Sie ein GADRewardedAdDelegate
an die Methode, die die Anzeige präsentiert. Mit der GADRewardedAd
API legen Sie ein GADFullscreenContentDelegate
als Attribut für die Anzeige fest, bevor Sie sie präsentieren.
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 = GADRequest() 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]; GADRequest *request = [GADRequest 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."); }
Bisherige GADRewardBasedVideoAd API entfernen
Die neue GADRewardedAd
API wurde erstmals im März 2019 eingeführt und ist seit über 18 Monaten die bevorzugte API mit Prämie. Sie verfügte im Vergleich zur alten GADRewardedBasedVideoAd
API über mehr Verbesserungen, u. a. die Möglichkeit, mehrere Anzeigen mit Prämie gleichzeitig zu laden.
Die alte GADRewardedBasedVideoAd
API wurde in SDK-Version 8.0.0 entfernt.
Einstellung von Smart-Bannern durch adaptive Banner
Smart-Banneranzeigen werden eingestellt und durch adaptive Banneranzeigen ersetzt. Adaptive Banner bieten eine bessere Leistung und mehr Flexibilität bei der Festlegung der Anzeigenbreite. Wenn Sie weiterhin Banner in voller Breite verwenden möchten, können Sie dennoch adaptive Banner verwenden, wie im folgenden Code-Snippet gezeigt:
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
Entfernung des Anwendungs-Callbacks verlassen
Der Callback willLeaveApplication
wurde für alle Anzeigenformate zugunsten der Methoden applicationDidEnterBackground:
und sceneDidEnterBackground:
entfernt. Wenn Sie APIs auf Betriebssystemebene verwenden, werden Sie immer informiert, wenn Nutzer Ihre App verlassen. Dabei spielt es keine Rolle, ob dies auf eine Anzeigeninteraktion zurückzuführen ist oder nicht.
Der willLeaveApplication
-Callback war nie als Anzeigenklick-Handler vorgesehen. Die Verwendung dieses Callbacks zum Erfassen von Klicks hat zu keinen präzisen Messwerten geführt. Beispiel: Ein Klick auf das Datenschutzinfo-Symbol, mit dem ein externer Browser zwar den Callback aufgerufen, aber keinen Klick gezählt hat.
Klassenumbenennungen
In der folgenden Tabelle sind bestimmte Klassennamen aufgeführt, die in Version 8 geändert oder entfernt wurden. Zusammenfassung:
- Alle Klassen, die sich auf
GADUnifiedNativeAd
beziehen, wurden inGADNativeAd
umbenannt. GADRewardBasedVideoAd
,GADNativeExpressAdView
undGADInstreamAd
wurden entfernt.- Alle Klassen mit dem Präfix
DFP
wurden durch das PräfixGAM
ersetzt.
v7.68.0-Klasse | v8.0.0-Klasse |
---|---|
DFPBannerView | GAMBannerView |
DFPBannerViewOptions | GAMBannerViewOptions |
DFPInterstitial | GAMInterstitialAnzeige |
DFPRequest | GAMRequest |
GADRequestError | NSError |
GADUnifiedNativeAdView | GADNativeAdView |
GADUnifiedNativeAd | GADNativeAd |
GADUnifiedNativeAdAssetIdentifiers | GADNativeAdAssetIdentifiers |
GADUnifiedNativeAdDelegate | GADNativeAdDelegate |
GADUnifiedNativeAdUnconfirmedClickDelegate | GADNativeAdUnconfirmedClickDelegate |
GADNativeCustomTemplateAd | GADCustomNativeAd |
GADNativeCustomTemplateAdLoaderDelegate | GADCustomNativeAdLoaderDelegate |
GADNativeAdDelegate | GADCustomNativeAdDelegate |
GADInAppPurchase | Entfernt |
GADInterstitial | GADInterstitialAd |
GADNativeExpressAdView | Entfernt |
GADRewardBasedVideoAd | Entfernt |
GADInStreamAd | Entfernt |
GADInstreamAdView | Entfernt |
Methoden entfernt/ersetzt
In der folgenden Tabelle sind die spezifischen Änderungen in Version 8 aufgeführt. Zusammenfassung:
- Zuvor eingestellte Methoden und Eigenschaften wurden entfernt.
-willLeaveApplication:
Delegationsmethoden wurden für alle Formate entfernt.- Der Name der Werbenetzwerkklasse wurde in die Property
GADResponseInfo
verschoben. - Die Testgeräte-ID wurde in das Attribut
GADRequestConfiguration
verschoben.
v7.68.0-Klasse | Version 7.68.0 API | API-Version 8.0.0 | Hinweise |
---|---|---|---|
GADMobileAnzeigen | +configureWithApplicationID: | -startWithCompletionHandler: | Die App-ID ist jetzt in Info.plist festgelegt. |
+disableAutomatedInApp |
-disableAutomatedInApp |
||
+disableSDKCrashReporting | -disableSDKCrashReporting | ||
GADRequest | testDevices | GADRequestConfiguration |
Die Eigenschaft testDeviceIdentifiers gilt für alle Anzeigenanfragen, während die alte Eigenschaft testGeräte für jede Anfrage festgelegt wurde. |
gender | Entfernt | ||
Geburtstag | Entfernt | ||
+sdkVersion | GADMobileAds.sharedInstance |
||
-setBirthday |
Entfernt | ||
-setLocationWithDescription: | -setLocationWith |
||
TagForChildDirectedTreatment: | [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment] | ||
GADErrorCode | kGADError* | GADError* | Das Präfix k wird aus allen Fehlercodekonstanten entfernt.
|
GADBannerView | hasAutoRefreshed | autoloadEnabled | |
inAppPurchaseDelegate | Entfernt | ||
mediatedAdView | Entfernt | ||
adNetworkClassName | ResponseInfo |
||
DFPBannerView | -setValidAdSizesWithSizes: | -setValidAdSizes: | |
DFPBannerViewOptions | -adSizeDelegate | Entfernt | |
GADBannerViewDelegate | -adViewDidReceiveAd: | -bannerViewDidReceiveAd: | |
-adView:didFailToReceive |
-bannerView:didFailToReceive |
||
-adViewWillPresentScreen: | -bannerViewWillPresentScreen: | ||
-adViewWillDismissScreen: | -bannerViewWillDismissScreen: | ||
-adViewDidDismissScreen: | -bannerViewDidDismissScreen: | ||
-adViewWillLeaveApplication: | Entfernt | ||
GADNativeCustomTemplateAd | templateID | GADCustomNativeAd.formatID | |
-performClickOnAssetWithKey: |
-performClickOnAssetWithKey: | ||
GADNativeAdImageAd |
preferredImageOrientation | GADNativeAdMediaAdOptions |
|
GADInterstitial | inAppPurchaseDelegate | Entfernt | |
isReady | Entfernt | Verwenden Sie stattdessen canPresentFrom |
|
hasBeenUsed | Entfernt | ||
-init | -initWithAdUnitID: | ||
-setAdUnitID: | -initWithAdUnitID: | ||
adNetworkClassName | ResponseInfo |
||
– InterstitialWill |
Entfernt | ||
GADUnifiedNativeAd | videoController | mediaContent.videoController | |
adNetworkClassName | ResponseInfo |