Migracja pakietu SDK

Ta strona dotyczy migracji w przypadku obecnej i poprzednich wersji pakietu SDK do reklam mobilnych Google na iOS. Wersja 12.0.0 zostanie wydana w lutym 2025 r.

Migracja z wersji pakietu SDK 11 na wersję 12

Przechodzenie na Xcode 16.0

Minimalna obsługiwana wersja Xcode została zwiększona do 16.0.

Obsługa nazewnictwa w Swift

Wersja 12.0.0 zawiera zmiany, które umożliwiają przestrzeganie konwencji nazewnictwa w wytycznych dotyczących projektowania interfejsów API w Swift. Te zmiany dotyczą tylko Swifta. Nazwa interfejsów API Objective-C nie uległa zmianie.

Zmiany prefiksu zajęć

W prefiksach klas wprowadzono następujące zmiany:

  • Usunięto prefiks GAD w nazwach wszystkich typów.
  • Zmieniono prefiks GAM na AdManager.
  • Zmieniono prefiks GADM na Mediation.

Rozwiązywanie problemów

Najlepszym sposobem na rozwiązanie problemów spowodowanych tymi zmianami jest poprawienie błędów za pomocą narzędzia Fix-It.

Rozwiązywanie konfliktów nazw

Aby rozwiązać konflikty nazw, użyj przestrzeni nazw dostarczonej przez moduł. Na przykład GADRequest ma teraz nazwę Request. Poniżej przykłady przestrzeni nazw klasy Request pakietu SDK do reklam mobilnych Google:

import GoogleMobileAds
...
var request: GoogleMobileAds.Request?

szczegółowa lista zmian w Swift;

W tych tabelach znajdziesz listę zmian wprowadzonych w interfejsach Swift API:

Wersja 11 Wersja 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
Mediacja
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
Określanie stawek w czasie rzeczywistym
GADRTBAdapter RTBAdapter
GADRTBMediationSignalsConfiguration RTBMediationSignalsConfiguration
GADRTBRequestParameters RTBRequestParameters

Stałe

Wersja 11 Wersja 12
GADAdLoaderAdType.gamBanner AdLoaderAdType.adManagerBanner
GADAdSizeBanner AdSizeBanner
GADAdSizeFluid AdSizeFluid
GADAdSizeFullBanner AdSizeFullBanner
GADAdSizeInvalid AdSizeInvalid
GADAdSizeLargeBanner AdSizeLargeBanner
GADAdSizeLeaderboard AdSizeLeaderboard
GADAdSizeMediumRectangle AdSizeMediumRectangle
GADAdSizeSkyscraper AdSizeSkyscraper
GoogleMobileAdsVersionString GoogleMobileAdsVersion

Właściwości

Typ Wersja 11 Wersja 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

Funkcje

Typ Wersja 11 Wersja 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:)
Mediacja
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:)

Zmiany w interfejsie API dotyczące kontrolowania stanu wyciszenia filmu

Właściwość isMuted i metoda setMute: obiektu GADVideoController zostały zastąpione właściwością muted.

Zmiany w wbudowanych reklamach adaptacyjnych

Aby optymalnie wykorzystać miejsce, w ramach reklamy inline adaptive nie zajmują one początkowo żadnej przestrzeni w ramce. Wywołanie CGSizeFromGADAdSize(_:) z rozmiarem reklamy wstawianej w sposób elastyczny zwraca teraz wysokość 0, dopóki pakiet SDK do reklam mobilnych Google nie zwróci reklamy.

Usunięto reklamy w wyszukiwarce niestandardowej

Te zajęcia są usuwane bez zastępowania:

  • GADDynamicHeightSearchBannerView
  • GADDynamicHeightSearchRequest
  • GADSearchBannerView

Zmiany w kodach błędów

Zmienione kody błędów:

Klasa Uwagi
GADErrorMediationNoFill Błędy są teraz zwracane jako GADErrorNoFill.
GADErrorReceivedInvalidResponse został zastąpiony przez GADErrorReceivedInvalidAdString.

Usunięto GADSimulatorID

Użytkownik GADSimulatorID został usunięty. Symulatory są domyślnie w trybie testowania.

Zmiany w kierowaniu niestandardowym

Słownik customTargeting w elementach GADRequest używa teraz typu wartości Any zamiast String. Dzięki temu możesz przekazywać do interfejsu API wartości liczbowe.

Zmiany parametrów dodatkowych

Migracja z wersji 10 na wersję 11

Minimalny cel wdrożenia

Minimalny cel wdrożenia został zwiększony do iOS 12.

Minimalna wersja Xcode

Minimalna obsługiwana wersja Xcode została zwiększona do 15.1.

Reklamy przestają się wyświetlać w iOS 12

Pakiet SDK do reklam mobilnych Google w wersji 11.0.0 wyświetla reklamy tylko na urządzeniach z systemem iOS 13 lub nowszym.

Usunięto zależność od GoogleAppMeasurement

W wersji 11.0.0 usunięto zależność od biblioteki GoogleAppMeasurement. Na początku 2024 r. wycofamy tę zależność, która umożliwiała korzystanie z przełącznika danych o użytkownikach w AdMob. Aby dalej zbierać dane o użytkownikach w AdMob, połącz swoją aplikację w AdMob z Firebase i zintegruj z nią pakiet SDK Google Analytics dla Firebase.

Zmiany w prezentacji reklam na pełnym ekranie

Te zmiany dotyczą różnych formatów reklam:

  • Otwarcie aplikacji
  • Pełnoekranowa
  • Z nagrodą
  • Reklama pełnoekranowa z nagrodą

Parametr kontrolera widoku w elementach -canPresentFromRootViewController:error:-presentFromRootViewController: może być pusty. Jeśli przekazana wartość to nil, reklama jest wyświetlana z poziomu najwyższego kontrolera widoku w hierarchii kontrolerów widoku.

Usunięto metody

Usunęliśmy te metody:

Typ v11.0.0 Metoda Uwagi
GADAppOpenAd load(withAdUnitID adUnitID: String, request: GADRequest?, orientation: UIInterfaceOrientation) Zamiast tego użyj kolumny load(withAdUnitID adUnitID: String, request: GADRequest?).
GADMediationBannerAdEventDelegate willBackgroundApplication() Nie zastępuje.
GADMediationInterstitialAdEventDelegate willBackgroundApplication() Nie zastępuje.
GADMediationNativeAdEventDelegate willBackgroundApplication() Nie zastępuje.
GADMediationRewardedAdEventDelegate didRewardUser(with reward: GADAdReward) Zamiast tego użyj kolumny didRewardUser().
GADMediatedUnifiedNativeAdNotificationSource mediatedNativeAdWillLeaveApplication(_ mediatedNativeAd: GADMediatedUnifiedNativeAd) Nie zastępuje.
GADRequestConfiguration setSameAppKeyEnabled(_ enabled: Bool) Zamiast tego użyj kolumny setPublisherFirstPartyIDEnabled(_ enabled: Bool).
tagForUnderAge(ofConsent underAgeOfConsent: Bool) Zamiast tego użyj właściwości tagForUnderAgeOfConsent.
tag(forChildDirectedTreatment childDirectedTreatment: Bool) Zamiast tego użyj właściwości tagForChildDirectedTreatment.

Właściwości zostały usunięte

Usunięto te właściwości:

Klasa v11.0.0 Właściwość Uwagi
GADMediationAdConfiguration hasUserLocation Nie zastępuje.
userLatitude
userLongitude
userLocationAccuracyInMeters
childDirectedTreatment Zamiast tego użyj kolumny GADMobileAds.sharedInstance.requestConfiguration.tagForChildDirectedTreatment.
GADResponseInfo adNetworkClassName Zamiast tego użyj kolumny adNetworkClassName z poziomu loadedAdNetworkResponseInfo.

Usunięto GADAdFormatUnknown

Usunięto GADAdFormatUnknown bez zastąpienia.

Zmiany w wersji pakietu SDK do rejestrowania

W wersji 11.0.0 usunięto sdkVersion. Aby zamiast tego odnotować wersję pakietu SDK do reklam mobilnych Google, użyj parametru versionNumber.

Wersja 10.0.0

GADMobileAds.sharedInstance().sdkVersion

Wersja 11.0.0

GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber)

Zmiany w obsługiwaniu błędów GADAdLoader

Od wersji 11.0.0 GADAdLoader nie wysyła żądania reklamy, jeśli delegate nie jest zgodny z protokołem delegacji żądanych typów reklam. Wcześniej błąd występował po wysłaniu żądania reklamy.

Zmiany w zachowaniu podczas testowania

Zobacz tabelę, która zawiera zaktualizowane warunki, gdy te właściwości zwracają wartość true.

Klasa Właściwość
GADMediationAdConfiguration isTestRequest
GADCustomEventRequest isTesting
v10.0.0 v11.0.0
  • Urządzenie jest wyraźnie zadeklarowane jako urządzenie testowe w pliku testDeviceIdentifiers.
  • Urządzenie jest wyraźnie zadeklarowane jako urządzenie testowe w pliku testDeviceIdentifiers.
  • Urządzenie to symulator.
  • urządzenie jest wyraźnie zadeklarowane jako urządzenie testowe w interfejsie AdMob;

Migracja z wersji 9 na wersję 10

Reklamy przestają się wyświetlać w systemie iOS 11

Pakiet SDK do reklam mobilnych Google w wersji 10.0.0 wyświetla reklamy tylko na urządzeniach z systemem iOS 12 lub nowszym.

Aktualizacja do pakietu SDK do reklam mobilnych Google w wersji 10.0.0 nie spowoduje problemów z działaniem aplikacji na urządzeniach z iOS 11 i iOS 10, ale na tych urządzeniach nie będą wyświetlane reklamy.

Kompilowanie za pomocą kodu bitowego nie jest już obsługiwane

Aby zintegrować pakiet SDK do reklam mobilnych Google, musisz teraz wyłączyć kod bitowy w aplikacjach mobilnych.

Typy zostały usunięte

Typ Uwagi
GADGender Nie zastępuje.
GADMRewardBasedVideoAdNetworkAdapterProtocol Wszystkie adaptery zapośredniczenia z nagrodami wymienione na stronie Choose Networks nie używają tych protokołów od ponad roku. Do pośredniczenia i zdarzeń niestandardowych używaj GADMediationAdapter.
GADMRewardBasedVideoAdNetworkConnectorProtocol

Właściwości zostały usunięte

Te właściwości zostaną usunięte bez zastąpienia.

Klasa 10.0.0 Właściwość
GADMediationAdRequest userBirthday
userGender
userHasLocation
userLatitude
userLongitude
userLocationAccuracyInMeters
userLocationDescription
GADCustomEventRequest userHasLocation
userLatitude
userLongitude
userLocationAccuracyInMeters
userLocationDescription

Migracja z wersji 8 na wersję 9

Reklamy przestają się wyświetlać w iOS 10

Pakiet SDK do reklam mobilnych Google w wersji 9.0.0 obsługuje co najmniej iOS 11.

Przejście na pakiet SDK do reklam mobilnych Google w wersji 9.0.0 nie spowoduje problemów z aplikacją na urządzeniach z iOS 10, ale na tych urządzeniach nie będą się wyświetlać reklamy.

Zaostrzenie zasad dotyczących elementów sterujących na pasku stanu

Od wersji 9.0.0, gdy wyświetlasz reklamy w formacie pełnoekranowym, aplikacja powinna umożliwić reklamom kontrolowanie wyświetlania paska stanu. Jeśli tego nie zrobisz, w dziennikach pojawi się komunikat o błędzie.

W zależności od układu kontrolerów widoku w aplikacji możesz nie musieć wprowadzać żadnych zmian. Zastanów się, czy musisz ustawić właściwość childViewControllerForStatusBarHidden w sekcji rootViewController reklamy.

Zmień nazwę adDidPresentFullScreenContent: na adWillPresentFullScreenContent:.

Nie ma zmian w zachowaniu. Metoda zastępcza jest wywoływana tuż przed wyświetleniem reklamy, więc nowa nazwa metody lepiej odzwierciedla jej funkcjonalność.

Usuwanie ustawień lokalizacji w interfejsie API GADRequest

- (void)setLocationWithLatitude:longitude:accuracy: zostało usunięte z GADRequest, ponieważ Google nie używa danych o lokalizacji do kierowania reklam. W razie potrzeby użyj interfejsów API innych firm, aby przekazać informacje zewnętrznym sieciom reklamowym.

Wycofanie interfejsów zdarzeń niestandardowych

Zdarzenia niestandardowe umożliwiają wydawcom korzystającym z zapośredniczenia AdMob dodanie zapośredniczenia kaskadowego dla sieci reklamowej, która nie jest obsługiwana przez AdMob.

Wszystkie protokoły zdarzeń niestandardowych są wycofane. Zamiast tego użyj istniejących protokołów GADMediationAdapter i GADMediationAdEventDelegate, aby uzyskać te same funkcje. Ta zmiana zwiększa przejrzystość i umożliwia tworzenie zdarzeń niestandardowych w przypadku reklam z nagrodą i reklam interscroller, które wcześniej były niedostępne.

Interfejsy API

Tabela poniżej zawiera odpowiednie interfejsy API pośredniczącego do zdarzeń niestandardowych, których należy używać od wersji 9.0.0.

v8 v9
GADCustomEventBanner
GADCustomEventInterstitial
GADCustomEventNativeAd
GADMediationAdapter GADMediationBannerAd
GADMediationInterstitialAd
GADMediationInterscrollerAd
GADMediationRewardedAd
GADMediationNativeAd
delegate Delegate jest zwracany przez obsługę zakończenia wczytywania każdej funkcji wczytywania klasy GADMediationAdapter.
-init -init
-requestBannerAd:parameter:label:request: -loadBannerForAdConfiguration:completionHandler:
-requestInterstitialAdWithParameter:label:request: -loadInterstitialForAdConfiguration:completionHandler:
-requestNativeAdWithParameter:request:adTypes:options:rootViewController: -loadNativeAdForAdConfiguration:completionHandler:
Nie dotyczy -loadInterscrollerAdForAdConfiguration:completionHandler:
Nie dotyczy -loadRewardedAdForAdConfiguration:completionHandler:
-presentFromRootViewController: -presentFromViewController:
-handlesUserClicks -handlesUserClicks
-handlesUserImpressions -handlesUserImpressions

Metody delegowane

Tabela poniżej zawiera odpowiadające metody delegowania zdarzeń reklamy w ramach pośrednictwa, które należy używać od wersji 9.0.0.

v8 v9
GADCustomEventBannerDelegate
GADCustomEventInterstitialDelegate
GADCustomEventNativeAdDelegate
GADMediationAdEventDelegate GADMediationAd
-customEventBanner:didReceiveAd:
-customEventInterstitialDidReceiveAd:
Stan wczytywania reklamy jest uwzględniony w obiekcie obsługującym zakończenie wczytywania każdej funkcji wczytywania w klasie GADMediationAdapter.
-customEventBanner:didFailAd:
-customEventInterstitial:didFailAd:
-customEventBannerWasClicked:
-customEventInterstitialWasClicked:
-reportClick
-customEventBannerWillPresentModal:
-customEventInterstitialWillPresentModal:
-willPresentFullScreenView
-customEventBannerWillDismissModal:
-customEventInterstitialWillDismissModal:
-willDismissFullScreenView
-customEventBannerDidDismissModal:
-customEventInterstitialDidDismissModal:
-didDismissFullScreenView
-customEventBannerWillLeaveApplication:
-customEventInterstitialWillLeaveApplication:
-willBackgroundApplication
viewControllerForPresentingModalView -[GADMediationBannerAd view]

Inne usunięte lub zastąpione metody i stałe

Zmiany metody, stałej lub właściwości
kGAD- prefiksów stałych Usunięto. Używaj stałych z prefiksem GAD-.
GADAdNetworkResponseInfo credentials zostały usunięte. Zamiast niej używaj kolumny adUnitMapping.
GADCustomNativeAd Właściwość mediaView w elementach GADCustomNativeAd została wycofana. Zamiast tego użyj kolumny mediaContent.
Interfejsy API Zakupy w aplikacji w GoogleMobileAds Interfejsy API inAppPurchaseGoogleMobileAds zostały usunięte.

Migracja z wersji 7 na wersję 8

Pakiet SDK do reklam mobilnych Google w wersji 8.0.0 wprowadza kilka istotnych zmian, niektóre zmiany nazw i usunięcia interfejsów API.

Aktualizacje interfejsu API formatu pełnoekranowego

Od wersji 8.0.0 reklamy pełnoekranowe i reklamy z nagrodą mają ogólny, stylu reklamy na ekranie. Te nowe interfejsy API do wyświetlania reklam pełnoekranowych mają 2 elementy: główne różnice w stosunku do pełnoekranowych interfejsów API do wyświetlania reklam w wersji 7:

  1. Metoda klasy statycznej load.

    Poprzednia metoda wczytywania/wyświetlania reklam pełnoekranowych:

    1. Utwórz wystąpienie obiektu reklamy i zachowaj do niego odwołanie.
    2. Wyznacz przedstawiciela, który zajmuje się ładowaniem i wyświetlaniem wywołań zwrotnych.
    3. Wczytaj reklamę.
    4. Sprawdź, czy reklama została wczytana za pomocą metody isReady.
    5. Wyświetl reklamę.

    W wersji 8 podejście nieco się zmienia. Wywołania zwrotne wczytywania nie są już jest częścią przedstawiciela. Zamiast tego są przekazywane do metody load jako moduł obsługi uzupełniania:

    1. Wywołaj metodę wczytywania statycznego w klasie reklamy i podaj zakończenie wczytywania .
    2. W wywołaniu zwrotnym zakończenia wczytywania zachowaj odniesienie do wczytanej reklamy, która jest .
    3. Wyznacz przedstawiciela, który będzie obsługiwać wywołania zwrotne.
    4. Wyświetl reklamę.

    Nowe podejście zapewnia następujące korzyści:

    • Nie będzie nigdy pojawiać się w odniesieniu do reklamy, która nie została wczytana.
    • Nie musisz przytrzymywać obiektu reklamy podczas wczytywania.
  2. Spójne zdarzenia reklamowe.

    Typ zdarzenia Istniejący interfejs API Interfejs API w wersji 8
    Zdarzenia wczytywania GADInterstitialDelegate lub GADRewardedAdDelegate GADInterstitialAdLoadCompletionHandler lub GADRewardedAdLoadCompletionHandler
    Wydarzenia związane z prezentacją GADFullScreenContentDelegate

    Wcześniej, aby nasłuchiwać zdarzeń reklamowych, należało zarejestrować klasę, która stosuje GADInterstitialDelegate lub zarejestruj klasę, która stosuje GADRewardedAdDelegate do właściwości przekazywania reklamy z nagrodą w zależności od formatu którego używasz. Ten sam delegat miał metody związane z wczytywaniem cyklu prezentacji reklamy.

    W wersji 8 zdarzenia wczytywania i prezentacji są oddzielne. Teraz możesz zarejestruj GADFullScreenContentDelegate przed wyświetleniem reklamy. Nie trzeba ustawiać przed wczytaniem reklamy. Zdarzenia wczytywania reklam, które są specyficzne dla poszczególnych przejdź do pojedynczego modułu obsługi ukończenia wczytywania przekazanego w metodzie wczytywania.

Pełnoekranowa

Wczytaj reklamę

Fragmenty kodu poniżej pokazują, jak wczytać reklamę pełnoekranową i włączyć nasłuchiwanie zdarzeń, gdy reklama się załaduje lub nie uda się wczytać.

wersja 7

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADInterstitialDelegate {

  var interstitial: GADInterstitial!

  override func viewDidLoad() {
    super.viewDidLoad()
    interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
    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/4411468910"];
  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/4411468910"
                              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;
  }];
}

Reklama displayowa

wersja 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");
  }
}

Zdarzenia reklamy z prezentacją

Poniższe fragmenty kodu pokazują, jak obsługiwać wywołania zwrotne, gdy reklama (powodzenie lub niepowodzenie) i zamknięcie.

wersja 7

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
  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/4411468910"];
  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/4411468910"
                              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.");
}

Z nagrodą

Wczytaj reklamę

wersja 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(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;
}

Reklama displayowa i reklama z nagrodą

W przypadku reklam z nagrodą musisz obsługiwać zdarzenie, gdy użytkownik zdobędzie nagrodę. Na wersji 7 interfejsu API GADRewardedAd, zaimplementujesz rewardedAd:userDidEarnReward: w ramach protokołu GADRewardedAdDelegate. W wersji 8 implementujesz interfejs GADUserDidEarnRewardHandler, aby wyświetlić reklamę.

wersja 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");
  }
}

Zdarzenia reklamy z prezentacją

Za pomocą interfejsu API GADRewardedAd przekazujesz GADRewardedAdDelegate do metody który wyświetla reklamę. Za pomocą interfejsu API GADRewardedAd możesz ustawić GADFullscreenContentDelegate jako właściwość reklamy przed wyświetleniem parametru reklama.

wersja 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 = 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.");
}

Usunięcie starszej wersji interfejsu GADNagrodaBasedVideoAd API

Nowsza GADRewardedAd Interfejs API został po raz pierwszy wprowadzony w marcu 2019 r. i jest preferowanym interfejsem reklam z nagrodami. API od ponad 18 miesięcy. Zawierał więcej ulepszeń w porównaniu do starszej wersji. GADRewardedBasedVideoAd API, w tym możliwość wczytywania więcej niż jednego jedną reklamę z nagrodą.

Starsza wersja interfejsu API GADRewardedBasedVideoAd została usunięta z pakietu SDK w wersji 8.0.0.

Wycofanie banerów inteligentnych i zastąpienie banerem adaptacyjnym

Banery inteligentne zostały wycofane za baner adaptacyjny. reklam. Banery adaptacyjne zapewniają wysoką skuteczność i elastyczność ustawianie szerokości reklamy. Jeśli nadal chcesz używać banerów o pełnej szerokości, jak widać w tym fragmencie kodu:

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

Opuść usuwanie wywołania zwrotnego aplikacji

Wywołanie zwrotne willLeaveApplication dla wszystkich formatów reklam zostało usunięte na rzecz applicationDidEnterBackground:. oraz sceneDidEnterBackground: . Dzięki interfejsom API na poziomie systemu operacyjnego będziesz otrzymywać powiadomienia za każdym razem, gdy użytkownik opuści aplikację, niezależnie od tego niezależnie od tego, czy wynika ono z interakcji z reklamą.

Pamiętaj, że wywołanie zwrotne willLeaveApplication nigdy nie miało być modułu obsługi kliknięć reklamy, a użycie tego wywołania zwrotnego do raportowania kliknięć nie aby uzyskać dokładne dane. Na przykład kliknięcie ikony Informacja ikona uruchamiająca zewnętrzną przeglądarkę wywołała wywołanie zwrotne, ale nie policzyła kliknij.

Zmiana nazw zajęć

Tabela poniżej zawiera nazwy konkretnych klas, które zostały zmienione lub usunięte wersji 8. W skrócie:

  • Nazwy wszystkich zajęć związanych z tematem GADUnifiedNativeAd zostały zmienione na GADNativeAd
  • GADRewardBasedVideoAd, GADNativeExpressAdView i GADInstreamAd udostępnili zostały usunięte.
  • Wszystkie zajęcia z prefiksem DFP zostały zastąpione prefiksem GAM.
Klasa 7.68.0 Klasa 8.0.0
DFPBannerView GAMBannerView
DFPBannerViewOptions GAMBannerViewOptions
DFPInterstitial GAMInterstitialAd
DFPRequest GAMRequest
GADRequestError NSError
GADUnifiedNativeAdView GADNativeAdView
Ujednolicona reklama natywna (GAD) GADNativeAd
GADUnifiedNativeAdAssetIdentifiers GADNativeAdAssetIdentifiers
GADUnifiedNativeAdDelegate GADNativeAdDelegate
GADUnifiedNativeAdUnconfirmedClickDelegate GADNativeAdUnconfirmedClickDelegate
GADNativeCustomTemplateAd GADCustomNativeAd
GADNativeCustomTemplateAdLoaderDelegate GADCustomNativeAdLoaderDelegate
GADNativeAdDelegate GADCustomNativeAdDelegate
GADInAppPurchase Usunięta
GADInterstitial GADInterstitialAd
GADNativeExpressAdView Usunięta
GADRewardBasedVideoAd Usunięta
GADInstreamAd Usunięta
GADInstreamAdView Usunięta

Metody usunięte/zastąpione

W tabeli poniżej znajdziesz listę konkretnych zmian wprowadzonych w wersji 8. W skrócie:

  • Wcześniej wycofane metody i właściwości zostały usunięte.
  • -willLeaveApplication: metody przekazywania dostępu zostały usunięte ze wszystkich formatów.
  • Nazwa klasy sieci reklamowej została przeniesiona do właściwości GADResponseInfo.
  • Identyfikator urządzenia testowego został przeniesiony do sekcji GADRequestConfiguration usłudze.
Klasa 7.68.0 Interfejs API w wersji 7.68.0 Interfejs API w wersji 8.0.0 Uwagi
GADMobileAds +configureWithApplicationID: -startWithCompletionHandler: Identyfikator aplikacji jest teraz ustawiony w pliku Info.plist.
+disableAutomatedInAppPurchaseReporting -disableAutomatedInAppPurchaseReporting
+disableSDKCrashReporting -disableSDKCrashReporting
GADRequest testDevices GADRequestConfiguration.testdeviceidentifiers Właściwość testDeviceIdentifiers dotyczy wszystkich żądań reklam, a parametr stara właściwość testUrządzenia została ustawiona na żądanie.
płeć Usunięta
urodziny Usunięta
+sdkVersion GADMobileAds.sharedInstance.sdkVersion
-setBirthdayWithMonth:day:year: Usunięta
-setLocationWithDescription: -setLocationWithLatitude:longitude:accuracy:
-tagForChildDirectedTreatment: [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment]
GADErrorCode kGADError* Błąd GAD* Prefiks k jest usuwany ze wszystkich stałych kodu błędu.
GADBannerView hasAutoRefreshed autoloadEnabled
inAppPurchaseDelegate Usunięta
mediatedAdView Usunięta
adNetworkClassName responseInfo.adNetworkClassName
DFPBannerView -setValidAdSizesWithSizes: -setValidAdSizes:
DFPBannerViewOptions -adSizeDelegate Usunięta
GADBannerViewDelegate -adViewDidReceiveAd: -bannerViewDidReceiveAd:
-adView:didFailToReceiveAdWithError: -bannerView:didFailToReceiveAdWithError:
-adViewWillPresentScreen: -bannerViewWillPresentScreen:
-adViewWillDismissScreen: -bannerViewWillDismissScreen:
-adViewDidDismissScreen: -bannerViewDidDismissScreen:
-adViewWillLeaveApplication: Usunięta
GADNativeCustomTemplateAd templateID GADCustomNativeAd.formatID
-performClickOnAssetWithKey:customClickHandler: -performClickOnAssetWithKey:
GADNativeAdImageAdLoaderOptions preferredImageOrientation GADNativeAdMediaAdOptions.mediaAspectRatio
GADInterstitial inAppPurchaseDelegate Usunięta
isReady Usunięta Użyj metody canPresentFromRootViewController:error:
Usunięta
-init -initWithAdUnitID:
-setAdUnitID: -initWithAdUnitID:
adNetworkClassName responseInfo.adNetworkClassName
-interstitialWillLeaveApplication: Usunięta
Ujednolicona reklama natywna (GAD) videoController mediaContent.videoController
adNetworkClassName responseInfo.adNetworkClassName