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 przedrostek
GAD
w nazwach wszystkich typów. - Zmieniono prefiks
GAM
naAdManager
. - Zmieniono prefiks
GADM
naMediation
.
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 tekście i adaptacyjnej 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
- Przekazywanie klucza
max_ad_content_rating
do funkcjiadditionalParameters
nie jest już obsługiwane. Aby ustawić maksymalną ocenę treści reklam, zapoznaj się z artykułem Filtrowanie treści reklam.
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:
i -presentFromRootViewController:
może być pusty. Jeśli przekazana zostanie wartość 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 niej używaj kolumny load(withAdUnitID adUnitID: String, request: GADRequest?) . |
GADMediationBannerAdEventDelegate | willBackgroundApplication() |
Nie zastępuj. |
GADMediationInterstitialAdEventDelegate | willBackgroundApplication() |
Nie zastępuj. |
GADMediationNativeAdEventDelegate | willBackgroundApplication() |
Nie zastępuj. |
GADMediationRewardedAdEventDelegate | didRewardUser(with reward: GADAdReward) |
Zamiast niej używaj kolumny didRewardUser() . |
GADMediatedUnifiedNativeAdNotificationSource | mediatedNativeAdWillLeaveApplication(_ mediatedNativeAd: GADMediatedUnifiedNativeAd) |
Nie zastępuj. |
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ępuj. |
userLatitude | ||
userLongitude | ||
userLocationAccuracyInMeters | ||
childDirectedTreatment | Zamiast niej używaj kolumny GADMobileAds.sharedInstance.requestConfiguration.tagForChildDirectedTreatment . |
|
GADResponseInfo | adNetworkClassName | Zamiast tego użyj kolumny adNetworkClassName z poziomu loadedAdNetworkResponseInfo . |
Usunięto GADAdFormatUnknown
Usunięto element 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 |
|
|
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ępuj. |
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 zmianek o zdarzeniach 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 działaniem aplikacji 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: |
-loadBannerForAdConfiguration: |
|
-requestInterstitialAdWith |
-loadInterstitialFor |
|
-requestNativeAdWithParameter:
|
-loadNativeAdFor |
|
Nie dotyczy | -loadInterscrollerAdFor |
|
Nie dotyczy | -loadRewardedAdFor |
|
-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 |
|
-customEventBannerWill -customEventInterstitialWill
|
-willPresentFullScreenView |
|
-customEventBannerWill -customEventInterstitialWill
|
-willDismissFullScreenView |
|
-customEventBannerDid -customEventInterstitialDid
|
-didDismissFullScreenView |
|
-customEventBannerWill -customEventInterstitialWill
|
-willBackgroundApplication |
|
viewControllerFor |
-[GADMediationBannerAd view] |
Inne usunięte lub zastąpione metody i stałe
Zmiany metody, stałej lub właściwości | |
---|---|
kGAD- prefiksem 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 zakupów w aplikacji w GoogleMobileAds |
Interfejsy API inAppPurchase w GoogleMobileAds zostały usunięte.
|
Migracja z wersji 7 na wersję 8
Pakiet SDK do reklam mobilnych Google w wersji 8.0.0 wprowadza szereg istotnych zmian. Zmieniliśmy również nazwy kilku interfejsów API, a część z nich usunęliśmy.
Aktualizacje interfejsu API formatu pełnoekranowego
Od wersji 8.0.0 reklamy na pełnym ekranie i reklamy z nagrodą mają ten sam ogólny styl, aby zapewnić większą spójność. Te nowe interfejsy API reklam pełnoekranowych różnią się od interfejsów API reklam pełnoekranowych w wersji 7 pod 2 względami:
Metoda statyczna klasy
load
.Poprzednie podejście do wczytywania i wyświetlania reklamy pełnoekranowej wyglądało tak:
- Utwórz instancję obiektu reklamy i zachowaj do niej odwołanie.
- Przypisz obiekt delegowany, który obsługuje wywołania zwrotne ładowania i wyświetlania.
- Wczytaj reklamę.
- Sprawdź, czy reklama została załadowana, korzystając z przycisku
isReady
. - Wyświetl reklamę.
W wersji 8 podejście się nieco zmienia. Obsługa wywołań zwrotnych podczas wczytywania nie jest już częścią delegacji. Zamiast tego są przekazywane do metody
load
jako element obsługi zakończenia:- Wywołaj stałą metodę wczytywania w klasie reklamy i podaj element obsługi zakończenia wczytywania.
- W zwrotnym wywołaniu po zakończeniu wczytywania zachowaj odwołanie do wczytanej reklamy, która została zwrócona.
- Przypisz delegowanie, które obsługuje wywołania zwrotne show.
- Wyświetl reklamę.
Nowe podejście zapewnia te korzyści:
- Nigdy nie będziesz mieć odwołania do reklamy, która nie została załadowana.
- Nie musisz przechowywać obiektu reklamy podczas jego wczytywania.
Zgodność zdarzeń reklamowych.
Typ zdarzenia Dotychczasowy interfejs API interfejs API v8. Zdarzenia wczytywania GADInterstitialDelegate
lubGADRewardedAdDelegate
GADInterstitialAdLoadCompletionHandler
lubGADRewardedAdLoadCompletionHandler
Zdarzenia związane z prezentacją GADFullScreenContentDelegate
Wcześniej, aby nasłuchiwać zdarzeń reklamy, rejestrowano klasę, która implementuje protokół
GADInterstitialDelegate
w usłudze zastępczej reklamy interliniowej, lub klasę, która implementuje protokółGADRewardedAdDelegate
w usłudze zastępczej reklamy z nagrodą, w zależności od formatu, którego używasz. Ten sam delegowany obiekt zawierał metody związane z cyklem życia reklamy, zarówno w części dotyczącej wczytywania, jak i prezentacji.W wersji 8 zdarzenia wczytywania i prezentowania są oddzielne. Teraz możesz zarejestrować
GADFullScreenContentDelegate
w dowolnym momencie przed wyświetleniem reklamy, zamiast ustawiać pojedynczego delegata przed wczytaniem reklamy. Zdarzenia wczytywania reklam, które są specyficzne dla każdego formatu, przechodzą do pojedynczego obsługi zakończenia wczytywania przekazanego w ramach metody wczytywania.
Pełnoekranowa
Wczytaj reklamę
Poniższe fragmenty kodu pokazują, jak wczytać reklamę pełnoekranową i odsłuchiwać zdarzenia, gdy reklama została lub nie została wczytana.
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 dotyczące reklamy prezentowanej
Poniższe fragmenty kodu pokazują, jak obsługiwać wywołania zwrotne, gdy reklama jest wyświetlana (z powodzeniem lub nie) i gdy zostaje zamknięta.
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; }
Wyświetlanie reklamy i obsługa nagrody
Reklamy z nagrodą wymagają, abyś obsłużył(a) zdarzenie, gdy użytkownik otrzyma nagrodę. W wersji 7 interfejsu API GADRewardedAd
musisz zaimplementować interfejs rewardedAd:userDidEarnReward:
w ramach protokołu GADRewardedAdDelegate
.
W przypadku wersji 8 musisz wdrożyć element GADUserDidEarnRewardHandler
, aby wyświetlać 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 dotyczące reklamy prezentowanej
W przypadku interfejsu GADRewardedAd
API przekazujesz do metody wyświetlającej reklamę obiekt GADRewardedAdDelegate
. Za pomocą interfejsu GADRewardedAd
API możesz ustawić GADFullscreenContentDelegate
jako właściwość reklamy przed jej wyświetleniem.
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 API GADRewardedBasedVideoAd
Nowy interfejs GADRewardedAd
został wprowadzony w marcu 2019 r. i od ponad 18 miesięcy jest preferowanym interfejsem API do wyświetlania reklam z nagrodą. Wprowadziliśmy w nim więcej ulepszeń w porównaniu z starszą wersją interfejsu API GADRewardedBasedVideoAd
, m.in. możliwość wczytania więcej niż 1 reklamy z nagrodą naraz.
Stary interfejs API GADRewardedBasedVideoAd
został usunięty z pakietu SDK w wersji 8.0.0.
wycofanie banerów inteligentnych na rzecz banerów adaptacyjnych
Inteligentne banery zostały wycofane na rzecz adaptacyjnych banerów. Banery adaptacyjne zapewniają większą skuteczność i większą elastyczność w ustalaniu szerokości reklamy. Jeśli wolisz nadal używać banerów o pełnej szerokości, możesz to zrobić, korzystając z banera adaptacyjnego, jak pokazano 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
Leave application callback removal
W przypadku wszystkich formatów reklam usunięto wywołanie willLeaveApplication
na rzecz metod applicationDidEnterBackground:
i sceneDidEnterBackground:
. Dzięki interfejsom API na poziomie systemu operacyjnego otrzymujesz powiadomienia o każdej sytuacji, gdy użytkownicy opuszczają Twoją aplikację, niezależnie od tego, czy jest to spowodowane interakcją z reklamą.
Pamiętaj, że funkcja wywołania zwrotnego willLeaveApplication
nigdy nie miała być elementem obsługi kliknięcia reklamy, a używanie jej do zgłaszania kliknięć nie zapewniało dokładnych danych. Na przykład kliknięcie ikony AdChoices, które spowodowało uruchomienie zewnętrznej przeglądarki, wywołało funkcję wywołania zwrotnego, ale nie zostało zliczone jako kliknięcie.
Zmiana nazwy zajęć
Tabela poniżej zawiera listę nazw klas, które w wersji 8 zostały zmienione lub usunięte. W skrócie:
- Wszystkie klasy powiązane z
GADUnifiedNativeAd
zostały przemianowane naGADNativeAd
. - Funkcje
GADRewardBasedVideoAd
,GADNativeExpressAdView
iGADInstreamAd
zostały usunięte. - Wszystkie klasy z preiksem
DFP
zostały zastąpione prefiksemGAM
.
Klasa v7.68.0 | Klasa 8.0.0 |
---|---|
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 | Usunięto |
GADInterstitial | GADInterstitialAd |
GADNativeExpressAdView | Usunięto |
GADRewardBasedVideoAd | Usunięto |
GADInstreamAd | Usunięto |
GADInstreamAdView | Usunięto |
Metody usunięte/zastąpione
W tabeli poniżej znajdziesz listę konkretnych zmian w wersji 8. W skrócie:
- Wycofane wcześniej metody i właściwości zostały usunięte.
-willLeaveApplication:
metody delegowane zostały usunięte ze wszystkich formatów.- Nazwa klasy sieci reklamowej została przeniesiona do właściwości
GADResponseInfo
. - Identyfikator testowego urządzenia został przeniesiony do usługi
GADRequestConfiguration
.
Klasa v7.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. |
+disableAutomatedInApp |
-disableAutomatedInApp |
||
+disableSDKCrashReporting | -disableSDKCrashReporting | ||
GADRequest | testDevices | GADRequestConfiguration |
Właściwość testDeviceIdentifiers ma zastosowanie do wszystkich żądań reklam, podczas gdy stara właściwość testDevices była ustawiana na poziomie żądania. |
płeć | Usunięto | ||
urodziny | Usunięto | ||
+sdkVersion | GADMobileAds.sharedInstance |
||
-setBirthday |
Usunięto | ||
-setLocationWithDescription: | -setLocationWith |
||
-tagForChildDirectedTreatment: | [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment] | ||
GADErrorCode | kGADError* | GADError* | Prefiks k jest usuwany ze wszystkich stałych kodów błędów.
|
GADBannerView | hasAutoRefreshed | autoloadEnabled | |
inAppPurchaseDelegate | Usunięto | ||
mediatedAdView | Usunięto | ||
adNetworkClassName | responseInfo |
||
DFPBannerView | –setValidAdSizesWithSizes: | -setValidAdSizes: | |
DFPBannerViewOptions | –adSizeDelegate | Usunięto | |
GADBannerViewDelegate | –adViewDidReceiveAd: | –bannerViewDidReceiveAd: | |
-adView:didFailToReceive |
-bannerView:didFailToReceive |
||
–adViewWillPresentScreen: | –bannerViewWillPresentScreen: | ||
–adViewWillDismissScreen: | –bannerViewWillDismissScreen: | ||
-adViewDidDismissScreen: | -bannerViewDidDismissScreen: | ||
–adViewWillLeaveApplication: | Usunięto | ||
GADNativeCustomTemplateAd | templateID | GADCustomNativeAd.formatID | |
-performClickOnAssetWithKey: |
-performClickOnAssetWithKey: | ||
GADNativeAdImageAd |
preferredImageOrientation | GADNativeAdMediaAdOptions |
|
GADInterstitial | inAppPurchaseDelegate | Usunięto | |
isReady | Usunięto | Zamiast tego użyj funkcji canPresentFrom |
|
hasBeenUsed | Usunięto | ||
-init | –initWithAdUnitID: | ||
–setAdUnitID: | –initWithAdUnitID: | ||
adNetworkClassName | responseInfo |
||
–interstitialWill |
Usunięto | ||
GADUnifiedNativeAd | videoController | mediaContent.videoController | |
adNetworkClassName | responseInfo |