Auf dieser Seite werden Migrationen für aktuelle und frühere Versionen von Google Mobile Ads SDK für iOS beschrieben. Wir planen, Version 13.0.0 im Februar 2026 zu veröffentlichen.
Von v12 zu v13 migrieren
Erhöhtes Mindestbereitstellungsziel
Das Mindestbereitstellungsziel wurde auf iOS 13 erhöht.
Änderungen an den APIs für die Größe adaptiver Ankerbanner
In Version 13.0.0 werden die vorhandenen APIs für die Größe adaptiver Ankerbanner eingestellt und APIs für die Größe großer adaptiver Ankerbanneranzeigen eingeführt. Google Mobile Ads SDK kann die Videonachfrage für Banneranzeigen über die neuen APIs für große adaptive Ankerbanner bedienen.
In der folgenden Tabelle sind die eingestellten Größen-APIs und ihre Ersatz-APIs aufgeführt:
| v12 (eingestellt) | v13 (Ersatz) |
|---|---|
GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
GADLargeAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
GADLargeLandscapeAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
GADLargePortraitAnchoredAdaptiveBannerAdSizeWithWidth(CGFloat width) |
Fortlaufende Unterstützung der Nebenläufigkeit in Swift 6
In Version 13.0.0 wird die Unterstützung für die strikte Nebenläufigkeit von Swift 6 weiter ausgebaut.
Strengere Typerzwingung für neighboringContentURLStrings-Array hinzugefügt
Ab Version 13.0.0 löst Google Mobile Ads SDK eine Ausnahme aus, wenn im Array neighboringContentURLStrings ein Objekt erkannt wird, das nicht vom Typ String ist.
Von v11 zu v12 migrieren
Upgrade auf Xcode 16.0
Die unterstützte Xcode-Mindestversion wurde auf 16.0 erhöht.
Unterstützung für Swift-Namen
Version 12.0.0 enthält Änderungen, die den Namenskonventionen in den API-Designrichtlinien für Swift entsprechen. Diese Änderungen betreffen nur Swift. An den Objective-C APIs wurden keine Namensänderungen vorgenommen.
Änderungen am Klassenpräfix
An den Klassenpräfixen wurden die folgenden Änderungen vorgenommen:
- Das Präfix
GADwurde aus den Namen aller Typen entfernt. - Das Präfix
GAMwurde inAdManagerumbenannt. - Das Präfix
GADMwurde inMediationumbenannt.
Fehler beheben
Am besten beheben Sie Fehler, die sich aus diesen Änderungen ergeben, indem Sie eine Korrektur vornehmen.
Namenskonflikte lösen
Verwenden Sie den vom Modul bereitgestellten Namespace, um Namenskonflikte zu beheben. Beispiel: GADRequest heißt jetzt Request. Im folgenden Beispiel wird die Klasse Request im Namespace Google Mobile Ads SDK verwendet:
import GoogleMobileAds
...
var request: GoogleMobileAds.Request?
Detaillierte Liste der Swift-Änderungen
In den folgenden Tabellen sind die Änderungen an den Swift APIs aufgeführt:
| Version 11 | Version 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 |
| Vermittlung | |
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 |
| Echtzeitgebote | |
GADRTBAdapter |
RTBAdapter |
GADRTBMediationSignalsConfiguration |
RTBMediationSignalsConfiguration |
GADRTBRequestParameters |
RTBRequestParameters |
Konstanten
| Version 11 | Version 12 |
|---|---|
GADAdLoaderAdType.gamBanner |
AdLoaderAdType.adManagerBanner |
GADAdSizeBanner |
AdSizeBanner |
GADAdSizeFluid |
AdSizeFluid |
GADAdSizeFullBanner |
AdSizeFullBanner |
GADAdSizeInvalid |
AdSizeInvalid |
GADAdSizeLargeBanner |
AdSizeLargeBanner |
GADAdSizeLeaderboard |
AdSizeLeaderboard |
GADAdSizeMediumRectangle |
AdSizeMediumRectangle |
GADAdSizeSkyscraper |
AdSizeSkyscraper |
GoogleMobileAdsVersionString |
GoogleMobileAdsVersion |
Attribute
| Typ | Version 11 | Version 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 |
Funktionen
| Typ | Version 11 | Version 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:) |
| Vermittlung | ||
| 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:) |
Benutzerdefinierte Targeting-Parameter festlegen
Verwenden Sie customTargeting, um benutzerdefiniertes Targeting für eine Anzeigenanfrage festzulegen.
API-Änderungen zur Steuerung der Videostummschaltung
Das Attribut isMuted und die Methode setMute: für GADVideoController werden durch das Attribut muted ersetzt.
Änderungen bei adaptiven Inline-Anzeigen
Zur Optimierung der Platznutzung belegen adaptive Inline-Anzeigen anfangs keinen Platz im Frame. Wenn Sie CGSizeFromGADAdSize(_:) mit einer adaptiven Inline-Anzeigengröße aufrufen, wird jetzt die Höhe 0 zurückgegeben, bis das Google Mobile Ads SDK eine Anzeige zurückgibt.
Benutzerdefinierte Suchanzeigen entfernt
Die folgenden Klassen werden ohne Ersatz entfernt:
GADDynamicHeightSearchBannerViewGADDynamicHeightSearchRequestGADSearchBannerView
Änderungen an Fehlercodes
Die folgenden Fehlercodes wurden geändert:
| Klasse | Hinweise |
|---|---|
GADErrorMediationNoFill |
Fehler werden jetzt als GADErrorNoFill zurückgegeben. |
GADErrorReceivedInvalidResponse |
Wurde durch GADErrorReceivedInvalidAdString ersetzt. |
GADSimulatorID entfernt
GADSimulatorID wurde entfernt. Simulatoren befinden sich standardmäßig im Testmodus.
Änderungen am benutzerdefinierten Targeting
Das Wörterbuch customTargeting in GADRequest verwendet jetzt Any anstelle von String als Werttyp. So können Sie numerische Werte an die API übergeben.
Änderungen an Extras-Parametern
- Wenn Sie Schlüssel an
additionalParametersübergeben, wird kein benutzerdefiniertes Targeting mehr auf Ad Manager-Anzeigenanfragen angewendet. Informationen zum Anwenden von benutzerdefiniertem Targeting finden Sie unter Benutzerdefiniertes Targeting.
- Die Übergabe des Schlüssels
max_ad_content_ratinganadditionalParameterswird nicht mehr unterstützt. Informationen zum Festlegen einer höchsten Altersfreigabe für Anzeigeninhalte finden Sie unter Filter für Anzeigeninhalte.
Von v10 zu v11 migrieren
Mindestbereitstellungsziel
Das Mindest-Deployment-Target wurde auf iOS 12 erhöht.
Xcode-Mindestversion
Die unterstützte Mindestversion von Xcode wurde auf 15.1 erhöht.
Anzeigen werden unter iOS 12 nicht mehr ausgeliefert
Mit der Google Mobile Ads SDK-Version 11.0.0 werden Anzeigen nur auf Geräten mit iOS 13 und höher ausgeliefert.
Die Abhängigkeit von GoogleAppMeasurement wurde entfernt.
In Version 11.0.0 wurde die Abhängigkeit von GoogleAppMeasurement entfernt. Diese Abhängigkeit, die den Ein/Aus-Button für Nutzermesswerte in AdMob unterstützt hat, wird Anfang 2024 eingestellt. Wenn Sie weiterhin Nutzermesswerte in AdMob erfassen möchten, können Sie Ihre AdMob-App mit Firebase verknüpfen und das Google Analytics for Firebase SDK in Ihre App einbinden.
Änderungen an der Präsentation von Vollbildanzeigen
Die folgenden Änderungen betreffen die verschiedenen Anzeigenformate:
- App-Start
- Interstitial
- Verfügbar
- Interstitial mit Prämie
Der Ansichtscontroller-Parameter in -canPresentFromRootViewController:error: und -presentFromRootViewController: kann null sein. Wenn „nil“ übergeben wird, wird die Anzeige über den obersten Ansichts-Controller in der Ansichts-Controller-Hierarchie präsentiert.
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) |
Verwende stattdessen die Property tagForUnderAgeOfConsent. |
|
tag(forChildDirectedTreatment childDirectedTreatment: Bool) |
Verwende stattdessen die Property tagForChildDirectedTreatment. |
Unterkünfte entfernt
Die folgenden Attribute werden entfernt.
| v11.0.0-Klasse | Attribut | Hinweise |
|---|---|---|
| GADMediationAdConfiguration | hasUserLocation | Kein Ersatz. |
| userLatitude | ||
| userLongitude | ||
| userLocationAccuracyInMeters | ||
| childDirectedTreatment | Verwenden Sie stattdessen GADMobileAds.sharedInstance.requestConfiguration.tagForChildDirectedTreatment. |
|
| GADResponseInfo | adNetworkClassName | Verwenden Sie stattdessen adNetworkClassName aus loadedAdNetworkResponseInfo. |
GADAdFormatUnknown entfernt
GADAdFormatUnknown wurde ohne Ersatz entfernt.
Änderungen am Logging der SDK-Version
In Version 11.0.0 wird sdkVersion entfernt. Verwenden Sie stattdessen versionNumber, um die Google Mobile Ads SDK-Version zu protokollieren.
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 wird von GADAdLoader keine Anzeigenanfrage gestellt, wenn das delegate nicht dem Delegatprotokoll der angeforderten Anzeigentypen entspricht. Zuvor ist sie nach der Anzeigenanfrage fehlgeschlagen.
Änderungen am Testverhalten
In der Tabelle unten sehen Sie die aktualisierten Bedingungen, unter denen die folgenden Properties true zurückgeben.
| Klasse | Attribut |
|---|---|
| GADMediationAdConfiguration | isTestRequest |
| GADCustomEventRequest | isTesting |
| v10.0.0 | v11.0.0 |
|
|
Von v9 zu v10 migrieren
Anzeigen werden unter iOS 11 nicht mehr ausgeliefert
Mit der Google Mobile Ads SDK-Version 10.0.0 werden Anzeigen nur auf Geräten mit iOS 12 und höher ausgeliefert.
Ein Upgrade auf Version 10.0.0 des Google Mobile Ads SDK führt nicht dazu, dass Ihre App auf iOS 11- und iOS 10-Geräten nicht mehr funktioniert. Auf diesen Geräten werden jedoch keine Anzeigen ausgeliefert.
Anforderung der Ad Manager-App-ID
Die Ad Manager-App-ID ist jetzt in Info.plist für alle Ad Manager-Apps erforderlich und muss das Format ca-app-pub-################~########## haben. Weitere Informationen finden Sie unter Info.plist aktualisieren.
Anforderung von GoogleAppMeasurement.xcframework
GoogleAppMeasurement.xcframework ist jetzt für alle Ad Manager-Apps erforderlich. Wenn Sie Google Mobile Ads SDK über Cocoapods oder Swift Package Manager installieren, sind keine weiteren Maßnahmen erforderlich. Wenn Sie Frameworks manuell installieren, finden Sie weitere Informationen unter Manueller Download.
Das Erstellen mit Bitcode wird nicht mehr unterstützt
Wenn Sie das Google Mobile Ads SDK einbinden möchten, müssen Sie Bitcode in Ihren mobilen Apps deaktivieren.
Typen entfernt
| Typ | Hinweise |
|---|---|
| GADGender | Kein Ersatz. |
| GADMRewardBasedVideoAdNetworkAdapterProtocol | Alle Adapter für die Vermittlung von Anzeigen mit Prämie, die unter Netzwerke auswählen aufgeführt sind, verwenden diese Protokolle seit über einem Jahr nicht mehr. Verwenden Sie GADMediationAdapter für die Vermittlung und benutzerdefinierte Ereignisse. |
| GADMRewardBasedVideoAdNetworkConnectorProtocol |
Unterkünfte entfernt
Die folgenden Attribute werden ohne Ersatz entfernt.
| v10.0.0-Klasse | Attribut |
|---|---|
| GADMediationAdRequest | userBirthday |
| userGender | |
| userHasLocation | |
| userLatitude | |
| userLongitude | |
| userLocationAccuracyInMeters | |
| userLocationDescription | |
| GADCustomEventRequest | userHasLocation |
| userLatitude | |
| userLongitude | |
| userLocationAccuracyInMeters | |
| userLocationDescription |
Von v8 zu v9 migrieren
Anzeigen werden unter iOS 10 nicht mehr ausgeliefert
Die niedrigste iOS-Version, die von Google Mobile Ads SDK Version 9.0.0 unterstützt wird, ist iOS 11.
Ein Upgrade auf Version 9.0.0 von Google Mobile Ads SDK führt nicht dazu, dass Ihre App auf iOS 10-Geräten nicht mehr funktioniert. Es werden jedoch keine Anzeigen mehr auf diesen Geräten ausgeliefert.
Strengere Durchsetzung von Statusleisten-Steuerelementen
Ab Version 9.0.0 müssen Sie bei der Präsentation von Vollbildanzeigen dafür sorgen, dass die Anzeigen die Darstellung der Statusleiste steuern können. Andernfalls wird in den Logs eine Fehlermeldung angezeigt.
Je nach Layout der Ansichts-Controller in Ihrer App müssen Sie möglicherweise keine Änderungen vornehmen, um dies zu gewährleisten. Überlegen Sie, ob Sie die Property childViewControllerForStatusBarHidden für das rootViewController-Objekt Ihrer Anzeige festlegen müssen.
„adDidPresentFullScreenContent:“ in „adWillPresentFullScreenContent:“ umbenennen
Es gibt keine Verhaltensänderung. Die Delegatmethode wird unmittelbar vor der Präsentation der Anzeige aufgerufen. Der neue Methodenname spiegelt die Funktion also besser wider.
API für Standorteinstellungen aus GADRequest entfernen
- (void)setLocationWithLatitude:longitude:accuracy: wurde aus GADRequest gelöscht, da Google Standortdaten nicht für die Ausrichtung von Anzeigen verwendet. Verwenden Sie bei Bedarf APIs von Drittanbietern, um die Informationen an Werbenetzwerke von Drittanbietern weiterzugeben.
Einstellung von Schnittstellen für benutzerdefinierte Ereignisse
Mit benutzerdefinierten Ereignissen können Publisher, die die Ad Manager-Vermittlung verwenden, die abfolgebasierte Vermittlung für ein Werbenetzwerk hinzufügen, das nicht zu den unterstützten Werbenetzwerken gehört.
Alle benutzerdefinierten Ereignisprotokolle sind veraltet. Verwenden Sie stattdessen die vorhandenen Protokolle GADMediationAdapter und GADMediationAdEventDelegate, um dieselben Funktionen zu erzielen. Diese Änderung sorgt für mehr Klarheit und ermöglicht es Ihnen, benutzerdefinierte Ereignisse für Anzeigen mit Prämie und Interscroller-Anzeigen zu erstellen, die zuvor nicht verfügbar waren.
APIs
In der folgenden Tabelle sind die entsprechenden APIs für Vermittlungsadapter für APIs für benutzerdefinierte Ereignisse aufgeführt, die ab Version 9.0.0 verwendet werden sollten.
| v8 | v9 | |
|---|---|---|
| GADCustomEventBanner GADCustomEventInterstitial GADCustomEventNativeAd |
GADMediationAdapter | GADMediationBannerAd GADMediationInterstitialAd GADMediationInterscrollerAd GADMediationRewardedAd GADMediationNativeAd |
delegate
|
Der Delegate wird vom Handler für den Abschluss des Ladevorgangs jeder Ladefunktion der Klasse GADMediationAdapter zurückgegeben.
|
|
-init |
-init |
|
-requestBannerAd:parameter: |
-loadBannerForAdConfiguration: |
|
-requestInterstitialAdWith |
-loadInterstitialFor |
|
-requestNativeAdWithParameter:
|
-loadNativeAdFor |
|
| – | -loadInterscrollerAdFor |
|
| – | -loadRewardedAdFor |
|
-presentFromRootViewController:
|
-presentFromViewController: |
|
-handlesUserClicks |
-handlesUserClicks |
|
-handlesUserImpressions |
-handlesUserImpressions |
|
Delegatmethoden
In der folgenden Tabelle sind die entsprechenden Delegatmethoden für Vermittlungsanzeigenereignisse aufgeführt, die ab Version 9.0.0 verwendet werden sollten.
| v8 | v9 | |
|---|---|---|
| GADCustomEventBannerDelegate GADCustomEventInterstitialDelegate GADCustomEventNativeAdDelegate |
GADMediationAdEventDelegate | GADMediationAd |
-customEventBanner:didReceiveAd:-customEventInterstitialDidReceiveAd:
|
Der Status des Anzeigenladens ist im Handler für den Abschluss des Ladevorgangs jeder Ladefunktion 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 Attribut | |
|---|---|
kGAD- Präfix-Konstanten
|
Entfernt. Verwenden Sie Konstanten mit dem Präfix GAD-.
|
GADAdNetworkResponseInfo
|
credentials wurden entfernt. Verwenden Sie stattdessen adUnitMapping.
|
GAMRequest
|
kGAMSimulatorID in GAMRequest wurde verworfen.
Verwenden Sie stattdessen GADSimulatorID in GADRequestConfiguration.
|
GADCustomNativeAd
|
mediaView in GADCustomNativeAd wurde verworfen.
Verwenden Sie stattdessen mediaContent.
|
In-App-Kauf-APIs in GoogleMobileAds |
inAppPurchase-APIs in GoogleMobileAds wurden entfernt.
|
Von v7 zu v8 migrieren
In der Google Mobile Ads SDK-Version 8.0.0 werden einige wichtige Änderungen eingeführt und einige APIs umbenannt oder entfernt.
API-Updates für Vollbildformate
Ab Version 8.0.0 haben Interstitials und Anzeigen mit Prämie ein einheitliches Vollbildanzeigen-Design, um für mehr Konsistenz zu sorgen. Diese neuen APIs für Vollbildanzeigen unterscheiden sich in zwei wesentlichen Punkten von den APIs für Vollbildanzeigen in Version 7:
Statische Klassenmethode
load.Der bisherige Ansatz zum Laden/Anzeigen einer Vollbildanzeige sieht so aus:
- Erstellen Sie eine Anzeigenobjektinstanz und speichern Sie einen Verweis darauf.
- Weisen Sie einen Bevollmächtigten zu, der Callbacks zum Laden und Einblenden verarbeitet.
- Anzeige laden
- Mit
isReadyprüfen, ob die Anzeige geladen wurde. - Anzeige einblenden.
In Version 8 ändert sich der Ansatz leicht. Lade-Callbacks sind nicht mehr Teil eines Bevollmächtigten. Stattdessen werden sie als Completion Handler an die Methode
loadübergeben:- Rufen Sie eine statische Lademethode für die Anzeigenklasse auf und geben Sie einen Handler für den Abschluss des Ladevorgangs an.
- Behalten Sie im Callback für den Abschluss des Ladevorgangs einen Verweis auf die geladene Anzeige bei, die zurückgegeben wird.
- Weisen Sie einen Bevollmächtigten zu, der Callbacks für die Anzeige verarbeitet.
- Anzeige einblenden.
Der neue Ansatz bietet folgende Vorteile:
- Sie erhalten nie einen Verweis auf eine Anzeige, die nicht geladen ist.
- Sie müssen ein Anzeigenobjekt nicht beibehalten, während es geladen wird.
Konsistente Anzeigenereignisse:
Ereignistyp Vorhandene API v8 API Ereignisse laden GADInterstitialDelegateoderGADRewardedAdDelegateGAMInterstitialAdLoadCompletionHandleroderGADRewardedAdLoadCompletionHandlerPräsentationsereignisse GADFullScreenContentDelegateBisher mussten Sie, um auf Anzeigenereignisse zu warten, je nach verwendetem Format eine Klasse, die das Protokoll
GADInterstitialDelegateimplementiert, für die Delegate-Eigenschaft einer Interstitial-Anzeige registrieren oder eine Klasse, die das ProtokollGADRewardedAdDelegateimplementiert, für die Delegate-Eigenschaft einer Anzeige mit Prämie registrieren. Dieser Delegat hatte Methoden, die sich sowohl auf den Lade- als auch auf den Präsentationslebenszyklus einer Anzeige bezogen.In Version 8 sind Lade- und Präsentationsereignisse voneinander getrennt. Sie können jetzt jederzeit vor der Auslieferung einer Anzeige einen
GADFullScreenContentDelegateregistrieren, anstatt vor dem Laden der Anzeige einen einzelnen Bevollmächtigten festlegen zu müssen. Anzeigenladeereignisse, die für jedes Format spezifisch sind, werden in einen einzelnen Handler für den Abschluss des Ladevorgangs verschoben, der in der Lademethode übergeben wird.
Interstitial
Anzeige laden
In den folgenden Code-Snippets sehen Sie, wie Sie eine Interstitial-Anzeige laden und auf Ereignisse warten, wenn die Anzeige erfolgreich geladen wird oder nicht.
v7
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; }]; }
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"); } }
Anzeigenereignisse für Präsentationen
Die folgenden Code-Snippets zeigen, wie Callbacks verarbeitet werden, wenn die Anzeige erfolgreich oder nicht erfolgreich präsentiert und wenn sie geschlossen wird.
v7
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."); }
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(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; }
Anzeige mit Prämie einblenden und Prämie verarbeiten
Bei Anzeigen mit Prämie müssen Sie das Ereignis verarbeiten, wenn ein Nutzer eine Prämie erhält. In 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"); } }
Anzeigenereignisse für Präsentationen
Bei der GADRewardedAd API übergeben Sie ein GADRewardedAdDelegate an die Methode, die die Anzeige präsentiert. Mit der GADRewardedAd API legst du vor der Präsentation der Anzeige einen GADFullscreenContentDelegate als Attribut für die Anzeige fest.
v7
Swift
func showRewardedAd() { ... if rewardedAd.isReady { rewardedAd.present(fromRootViewController: self delegate:self) } else { print("Ad wasn't ready") } } /// Tells the delegate that the rewarded ad was presented. func rewardedAdDidPresent(_ rewardedAd: GADRewardedAd) { print("Rewarded ad presented.") } /// Tells the delegate that the rewarded ad was dismissed. func rewardedAdDidDismiss(_ rewardedAd: GADRewardedAd) { print("Rewarded ad dismissed.") } /// Tells the delegate that the rewarded ad failed to present. func rewardedAd(_ rewardedAd: GADRewardedAd, didFailToPresentWithError error: Error) { print("Rewarded ad failed to present with error: \(error.localizedDescription).") }
Objective-C
- (void)showRewardedAd: { ... if (self.rewardedAd.isReady) { [self.rewardedAd presentFromRootViewController:self delegate:self]; } else { NSLog(@"Ad wasn't ready"); } } /// Tells the delegate that the rewarded ad was presented. - (void)rewardedAdDidPresent:(GADRewardedAd *)rewardedAd { NSLog(@"Rewarded ad presented."); } /// Tells the delegate that the rewarded ad failed to present. - (void)rewardedAd:(GADRewardedAd *)rewardedAd didFailToPresentWithError:(NSError *)error { NSLog(@"Rewarded ad failed to present with error: %@", [error localizedDescription]); } /// Tells the delegate that the rewarded ad was dismissed. - (void)rewardedAdDidDismiss:(GADRewardedAd *)rewardedAd { NSLog(@"Rewarded ad dismissed."); }
v8
Swift
override func viewDidLoad() { super.viewDidLoad() let request = GAMRequest() GADRewardedAd.load(withAdUnitID: "ca-app-pub-8123415297019784/9501821136", request: request, completionHandler: { (ad, error) in if let error = error { print(error.localizedDescription) return } self.rewardedAd = ad self.rewardedAd?.fullScreenContentDelegate = self } ) } /// Tells the delegate that the rewarded ad was presented. func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Rewarded ad presented.") } /// Tells the delegate that the rewarded ad was dismissed. func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Rewarded ad dismissed.") } /// Tells the delegate that the rewarded ad failed to present. func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) { print("Rewarded ad failed to present with error: \(error.localizedDescription).") }
Objective-C
- (void)viewDidLoad { [super viewDidLoad]; GAMRequest *request = [GAMRequest request]; [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313" request:request completionHandler:^(GADRewardedAd *ad, NSError *error) { if (error) { NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]); return; } self.rewardedAd = ad; NSLog(@"Rewarded ad loaded."); self.rewardedAd.fullScreenContentDelegate = self; } /// Tells the delegate that the rewarded ad was presented. - (void)adDidPresentFullScreenContent:(id)ad { NSLog(@"Rewarded ad presented."); } /// Tells the delegate that the rewarded ad failed to present. - (void)ad:(id )ad didFailToPresentFullScreenContentWithError:(NSError *)error { NSLog(@"Rewarded ad failed to present with error: %@", [error localizedDescription]); } /// Tells the delegate that the rewarded ad was dismissed. - (void)adDidDismissFullScreenContent:(id )ad { NSLog(@"Rewarded ad dismissed."); }
Entfernung der Legacy-API „GADRewardedBasedVideoAd“
Die neuere GADRewardedAd API wurde im März 2019 eingeführt und ist seit über 18 Monaten die bevorzugte API für Anzeigen mit Prämie. Im Vergleich zur alten GADRewardedBasedVideoAd API wurden weitere Verbesserungen vorgenommen, z. B. 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 zugunsten adaptiver Banner
Smart-Banner-Anzeigen wurden zugunsten von adaptiven Banneranzeigen eingestellt. Adaptive Banner bieten eine bessere Leistung und mehr Flexibilität beim Festlegen der Anzeigenbreite. Wenn Sie weiterhin Banner mit voller Breite verwenden möchten, können Sie das mit adaptiven Bannern tun, 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 Callbacks beim Verlassen der Anwendung
Der Callback willLeaveApplication für alle Anzeigenformate wurde zugunsten der Methoden applicationDidEnterBackground: und sceneDidEnterBackground: entfernt. Mithilfe von APIs auf Betriebssystemebene werden Sie benachrichtigt, wenn Nutzer Ihre App verlassen, unabhängig davon, ob dies auf eine Anzeigeninteraktion zurückzuführen ist oder nicht.
Der Callback willLeaveApplication war nie als Anzeigenklick-Handler gedacht. Wenn Sie sich auf diesen Callback verlassen, um Klicks zu erfassen, erhalten Sie keinen genauen Messwert. Beispielsweise wurde durch einen Klick auf das Datenschutzinfo-Symbol, das einen externen Browser gestartet hat, der Callback aufgerufen, aber kein Klick gezählt.
Umbenennung von Kursen
In der folgenden Tabelle sind bestimmte Klassennamen aufgeführt, die sich in Version 8 geändert haben oder entfernt wurden. Zusammenfassung:
- Alle Klassen, die sich auf
GADUnifiedNativeAdbeziehen, wurden inGADNativeAdumbenannt. GADRewardBasedVideoAd,GADNativeExpressAdViewundGADInstreamAdwurden entfernt.- Alle Klassen mit dem Präfix
DFPwurden durch das PräfixGAMersetzt.
| v7.68.0-Klasse | v8.0.0-Klasse |
|---|---|
| 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 | Entfernt |
| GADInterstitial | GADInterstitialAd |
| GADNativeExpressAdView | Entfernt |
| GADRewardBasedVideoAd | Entfernt |
| GADInstreamAd | Entfernt |
| GADInstreamAdView | Entfernt |
Entfernte/ersetzte Methoden
In der folgenden Tabelle sind die spezifischen Änderungen in Version 8 aufgeführt. Zusammenfassung:
- Zuvor verworfene Methoden und Eigenschaften wurden entfernt.
-willLeaveApplication:-Delegatmethoden wurden für alle Formate entfernt.- Der Klassenname des Werbenetzwerks wurde in das Attribut
GADResponseInfoverschoben. - Die Testgeräte-ID wurde in die Property
GADRequestConfigurationverschoben.
| v7.68.0-Klasse | v7.68.0 API | v8.0.0 API | Hinweise |
|---|---|---|---|
| GADMobileAds | +configureWithApplicationID: | -startWithCompletionHandler: | Die App-ID ist jetzt in der Datei „Info.plist“ festgelegt. |
| +disableAutomatedInApp |
-disableAutomatedInApp |
||
| +disableSDKCrashReporting | -disableSDKCrashReporting | ||
| GADRequest | testDevices | GADRequestConfiguration |
Das Attribut „testDeviceIdentifiers“ gilt für alle Anzeigenanfragen, während das alte Attribut „testDevices“ pro 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 |