Миграция SDK

Выберите платформу: Android iOS Unity

На этой странице описывается миграция текущей и предыдущих версий Google Mobile Ads SDK для iOS. Выход версии 12.0.0 ожидается в феврале 2025 года.

Миграция с версии SDK v11 на v12

Обновление до Xcode 16.0

Минимальная поддерживаемая версия Xcode увеличена до 16.0.

Поддержка быстрого именования

В версию 12.0.0 включены изменения, соответствующие соглашениям об именовании, изложенным в руководстве по проектированию API Swift. Эти изменения касаются только Swift. Изменения в именовании API Objective-C не вносились.

Изменения префикса класса

В префиксы классов были внесены следующие изменения:

  • Удален префикс GAD из названий всех типов.
  • Префикс GAM переименован в AdManager .
  • Префикс GADM переименован в Mediation .

Устранить ошибки

Лучший способ устранения ошибок, возникающих в результате этих изменений, — это внесение исправления Fix-It .

Разрешение конфликтов имен

Для разрешения конфликтов имён используйте пространство имён, предоставляемое модулем. Например, GADRequest теперь называется Request . Следующий пример пространства имён относится к классу Request в Google Mobile Ads SDK:

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

Подробный список изменений Swift

В следующих таблицах перечислены изменения, внесенные в API Swift:

Версия 11 Версия 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
Менеджер рекламы
GAMBannerAdLoaderDelegate AdManagerBannerAdLoaderDelegate
GAMBannerView AdManagerBannerView
GAMBannerViewOptions AdManagerBannerViewOptions
GAMInterstitialAd AdManagerInterstitialAd
GAMRequest AdManagerRequest
Медиация
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
Торги в реальном времени
GADRTBAdapter RTBAdapter
GADRTBMediationSignalsConfiguration RTBMediationSignalsConfiguration
GADRTBRequestParameters RTBRequestParameters

Константы

Версия 11 Версия 12
GADAdLoaderAdType.gamBanner AdLoaderAdType.adManagerBanner
GADAdSizeBanner AdSizeBanner
GADAdSizeFluid AdSizeFluid
GADAdSizeFullBanner AdSizeFullBanner
GADAdSizeInvalid AdSizeInvalid
GADAdSizeLargeBanner AdSizeLargeBanner
GADAdSizeLeaderboard AdSizeLeaderboard
GADAdSizeMediumRectangle AdSizeMediumRectangle
GADAdSizeSkyscraper AdSizeSkyscraper
GoogleMobileAdsVersionString GoogleMobileAdsVersion

Характеристики

Тип Версия 11 Версия 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

Функции

Тип Версия 11 Версия 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:)
Медиация
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:)

Изменения в API для управления состоянием отключения звука видео

Свойство isMuted и метод setMute: в GADVideoController заменяются свойством muted .

Изменения во встроенных адаптивных объявлениях

Для оптимизации использования пространства встроенные адаптивные объявления изначально не занимают места в кадре. Вызов CGSizeFromGADAdSize(_:) с размером встроенного адаптивного объявления теперь возвращает 0 высоту, пока Google Mobile Ads SDK не вернёт объявление.

Удалены пользовательские поисковые объявления

Следующие классы удаляются без замены:

  • GADDynamicHeightSearchBannerView
  • GADDynamicHeightSearchRequest
  • GADSearchBannerView

Изменения кодов ошибок

Были изменены следующие коды ошибок:

Сорт Примечания
GADErrorMediationNoFill Ошибки теперь возвращаются как GADErrorNoFill .
GADErrorReceivedInvalidResponse Был заменен на GADErrorReceivedInvalidAdString .

Удален GADSimulatorID

Удалён GADSimulatorID . Симуляторы по умолчанию уже находятся в тестовом режиме.

Изменения в пользовательском таргетинге

Словарь customTargeting в GADRequest теперь использует тип значения Any вместо String . Это позволяет передавать числовые значения в API.

Изменения дополнительных параметров

Миграция с v10 на v11

Минимальная цель развертывания

Минимальная цель развертывания увеличена до iOS 12.

Минимальная версия Xcode

Минимальная поддерживаемая версия Xcode увеличена до 15.1.

Реклама больше не отображается на устройствах iOS 12

Google Mobile Ads SDK версии 11.0.0 показывает рекламу только на устройствах под управлением iOS 13 и выше.

Удалена зависимость от GoogleAppMeasurement

В версии 11.0.0 зависимость от GoogleAppMeasurement была удалена. Эта зависимость, обеспечивавшая работу переключателя пользовательских метрик в AdMob, будет прекращена в начале 2024 года. Чтобы продолжить сбор пользовательских метрик в AdMob, свяжите своё приложение AdMob с Firebase и интегрируйте SDK Google Analytics для Firebase в своё приложение.

Изменения в представлении полноэкранной рекламы

Следующие изменения касаются различных форматов рекламы:

  • Приложение открыто
  • Интерстициальный
  • Награжден
  • Вознагражденный интерстициальный

Параметр контроллера представления в -canPresentFromRootViewController:error: и -presentFromRootViewController: может иметь значение NIL. Если передано значение Nil, реклама отображается из самого верхнего контроллера представления в иерархии контроллеров представления.

Методы удалены

Удалены следующие методы.

Тип v11.0.0 Метод Примечания
GADAppOpenAd load(withAdUnitID adUnitID: String, request: GADRequest?, orientation: UIInterfaceOrientation) Вместо этого используйте load(withAdUnitID adUnitID: String, request: GADRequest?) .
GADMediationBannerAdEventDelegate willBackgroundApplication() Замены нет.
GADMediationInterstitialAdEventDelegate willBackgroundApplication() Замены нет.
GADMediationNativeAdEventDelegate willBackgroundApplication() Замены нет.
GADMediationRewardedAdEventDelegate didRewardUser(with reward: GADAdReward) Вместо этого используйте didRewardUser() .
GADMediatedUnifiedNativeAdNotificationSource mediatedNativeAdWillLeaveApplication(_ mediatedNativeAd: GADMediatedUnifiedNativeAd) Замены нет.
GADRequestConfiguration setSameAppKeyEnabled(_ enabled: Bool) Вместо этого используйте setPublisherFirstPartyIDEnabled(_ enabled: Bool) .
tagForUnderAge(ofConsent underAgeOfConsent: Bool) Вместо этого используйте свойство tagForUnderAgeOfConsent .
tag(forChildDirectedTreatment childDirectedTreatment: Bool) Вместо этого используйте свойство tagForChildDirectedTreatment .

Свойства удалены

Следующие свойства удалены.

Класс v11.0.0 Свойство Примечания
GADMediationAdConfiguration hasUserLocation Замены нет.
пользовательLatitude
пользовательДолгота
ТочностьМестоположенияВМетрах
Лечение, направленное на ребенка Вместо этого используйте GADMobileAds.sharedInstance.requestConfiguration.tagForChildDirectedTreatment .
GADResponseInfo adNetworkClassName Вместо этого используйте adNetworkClassName из loadedAdNetworkResponseInfo .

Удален GADAdFormatUnknown

Удален GADAdFormatUnknown без замены.

Изменения в версии SDK для регистрации

В версии 11.0.0 sdkVersion удален. Для регистрации версии Google Mobile Ads SDK используйте вместо него versionNumber .

Версия 10.0.0

GADMobileAds.sharedInstance().sdkVersion

Версия 11.0.0

GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber)

Изменения в обработке ошибок GADAdLoader

Начиная с версии 11.0.0, GADAdLoader не отправляет запрос на объявление, если его delegate не соответствует протоколу делегата запрошенного типа объявления. Ранее это приводило к ошибке после отправки запроса на объявление.

Изменения в поведении тестирования

См. таблицу, в которой показаны обновленные условия, при которых следующие свойства возвращают true .

Сорт Свойство
GADMediationAdConfiguration isTestRequest
GADCustomEventRequest isTesting
v10.0.0 v11.0.0
  • Устройство явно объявлено как тестовое в testDeviceIdentifiers .
  • Устройство явно объявлено как тестовое в testDeviceIdentifiers .
  • Устройство является симулятором.
  • Устройство явно заявлено как тестовое в пользовательском интерфейсе AdMob.

Миграция с v9 на v10

Реклама больше не отображается на устройствах iOS 11

Google Mobile Ads SDK версии 10.0.0 показывает рекламу только на устройствах под управлением iOS 12 и выше.

Обновление до Google Mobile Ads SDK версии 10.0.0 не нарушит работу вашего приложения на устройствах iOS 11 и iOS 10, однако на этих устройствах реклама показываться не будет.

Сборка с использованием биткода больше не поддерживается.

Для интеграции Google Mobile Ads SDK теперь требуется отключить биткод в ваших мобильных приложениях.

Типы удалены

Тип Примечания
GADGender Замены нет.
GADMRewardBasedVideoAdNetworkAdapterProtocol Все адаптеры-медиаторы с вознаграждением, перечисленные на сайте Choose Networks, прекратили использовать эти протоколы более года назад. Используйте GADMediationAdapter для медиации и пользовательских событий.
GADMRewardBasedVideoAdNetworkConnectorProtocol

Свойства удалены

Следующие объекты удаляются без замены.

Класс v10.0.0 Свойство
GADMediationAdRequest День рождения пользователя
пол пользователя
userHasLocation
пользовательLatitude
пользовательДолгота
ТочностьМестоположенияВМетрах
userLocationDescription
GADCustomEventRequest userHasLocation
пользовательLatitude
пользовательДолгота
ТочностьМестоположенияВМетрах
userLocationDescription

Миграция с v8 на v9

Реклама больше не показывается на iOS 10

Минимальная поддерживаемая версия iOS для Google Mobile Ads SDK версии 9.0.0 — iOS 11.

Обновление до версии Google Mobile Ads SDK 9.0.0 не нарушит работу вашего приложения на устройствах iOS 10, однако на этих устройствах не будет показываться реклама.

Более строгое соблюдение правил управления строкой состояния

Начиная с версии 9.0.0, при показе полноэкранной рекламы ваше приложение должно обеспечивать возможность управления отображением строки состояния. В противном случае в журналах появится сообщение об ошибке.

В зависимости от особенностей макета контроллеров представлений в вашем приложении, вам может не потребоваться вносить какие-либо изменения для обеспечения этого. Подумайте, нужно ли устанавливать свойство childViewControllerForStatusBarHidden для rootViewController вашего объявления.

Переименуйте adDidPresentFullScreenContent: в adWillPresentFullScreenContent:

Поведение не изменилось. Метод делегата вызывается непосредственно перед показом рекламы, поэтому новое название метода лучше отражает его функциональность.

Удалить API настройки местоположения в GADRequest

- (void)setLocationWithLatitude:longitude:accuracy: удалён из GADRequest , поскольку данные о местоположении не используются Google для таргетинга рекламы. При необходимости используйте сторонние API для предоставления информации сторонним рекламным сетям.

Устаревание пользовательских интерфейсов событий

Пользовательские события позволяют издателям, использующим AdMob Mediation, добавлять каскадную медиацию для рекламной сети, которая не входит в число поддерживаемых рекламных сетей .

Все протоколы настраиваемых событий устарели. Вместо этого используйте существующие протоколы GADMediationAdapter и GADMediationAdEventDelegate для достижения той же функциональности. Это изменение повышает прозрачность и позволяет создавать настраиваемые события для объявлений с вознаграждением и межскроллерных объявлений, которые ранее были недоступны.

API-интерфейсы

В таблице ниже перечислены соответствующие API-интерфейсы адаптеров-посредников для API-интерфейсов пользовательских событий, которые следует использовать, начиная с версии 9.0.0.

v8 v9
GADCustomEventBanner
GADCustomEventInterstitial
GADCustomEventNativeAd
GADMediationAdapter GADMediationBannerAd
GADMediationInterstitialAd
GADMediationInterscrollerAd
GADMediationRewardedAd
GADMediationNativeAd
delegate Делегат возвращается обработчиком завершения загрузки каждой функции загрузки класса GADMediationAdapter
-init -init
-requestBannerAd:parameter: label:request: -loadBannerForAdConfiguration: completionHandler:
-requestInterstitialAdWith Parameter:label:request: -loadInterstitialFor AdConfiguration: completionHandler:
-requestNativeAdWithParameter: request:adTypes:options: rootViewController: -loadNativeAdFor AdConfiguration: completionHandler:
Н/Д -loadInterscrollerAdFor AdConfiguration: completionHandler:
Н/Д -loadRewardedAdFor AdConfiguration: completionHandler:
-presentFromRootViewController: -presentFromViewController:
-handlesUserClicks -handlesUserClicks
-handlesUserImpressions -handlesUserImpressions

Делегировать методы

В таблице ниже перечислены соответствующие методы делегирования событий посреднической рекламы и методы делегирования пользовательских событий, которые следует использовать, начиная с версии 9.0.0.

v8 v9
GADCustomEventBannerDelegate
GADCustomEventInterstitialDelegate
GADCustomEventNativeAdDelegate
GADMediationAdEventDelegate GADMediationAd
-customEventBanner:didReceiveAd:
-customEventInterstitialDidReceiveAd:
Статус загрузки рекламы включен в обработчик завершения загрузки каждой функции загрузки в классе GADMediationAdapter
-customEventBanner:didFailAd:
-customEventInterstitial:didFailAd:
-customEventBannerWasClicked:
-customEventInterstitialWasClicked:
-reportClick
-customEventBannerWill PresentModal:
-customEventInterstitialWill PresentModal:
-willPresentFullScreenView
-customEventBannerWill DismissModal:
-customEventInterstitialWill DismissModal:
-willDismissFullScreenView
-customEventBannerDid DismissModal:
-customEventInterstitialDid DismissModal:
-didDismissFullScreenView
-customEventBannerWill LeaveApplication:
-customEventInterstitialWill LeaveApplication:
-willBackgroundApplication
viewControllerFor PresentingModalView -[GADMediationBannerAd view]

Другие удаленные/замененные методы и константы

Изменения метода, константы или свойства
kGAD- префиксные константы Удалено. Используйте константы с префиксом GAD- .
GADAdNetworkResponseInfo credentials были удалены. Используйте вместо этого adUnitMapping .
GADCustomNativeAd mediaView в GADCustomNativeAd устарела. Вместо неё используйте mediaContent .
API-интерфейсы для покупок внутри приложений в GoogleMobileAds API-интерфейсы inAppPurchase в GoogleMobileAds были удалены.

Миграция с v7 на v8

В Google Mobile Ads SDK версии 8.0.0 представлено несколько важных изменений, а также переименованы и удалены некоторые API.

Обновления API полноэкранного формата

Начиная с версии 8.0.0, полноэкранная реклама и реклама с вознаграждением используют общий стиль полноэкранной рекламы для большей согласованности. Эти новые API полноэкранной рекламы имеют два основных отличия от API полноэкранной рекламы версии 7:

  1. Статический метод класса load .

    Предыдущий подход к загрузке/показу полноэкранной рекламы был следующим:

    1. Создайте экземпляр объекта рекламы и сохраните ссылку на него.
    2. Назначьте делегата, который обрабатывает обратные вызовы загрузки и показа.
    3. Загрузить объявление.
    4. Проверьте, загружено ли объявление, с помощью isReady .
    5. Покажите рекламу.

    В версии 8 подход немного изменился. Обратные вызовы Load больше не являются частью делегата. Вместо этого они передаются в метод load как обработчик завершения:

    1. Вызовите метод статической загрузки для класса объявления и предоставьте обработчик завершения загрузки.
    2. В обратном вызове завершения загрузки сохраните ссылку на возвращенное загруженное объявление.
    3. Назначьте делегата, который обрабатывает обратные вызовы показа.
    4. Покажите рекламу.

    Новый подход обеспечивает следующие преимущества:

    • У вас никогда не будет ссылки на незагруженную рекламу.
    • Вам не придется удерживать рекламный объект во время его загрузки.
  2. Последовательные рекламные события.

    Тип события Существующий API API v8
    События загрузки GADInterstitialDelegate или GADRewardedAdDelegate GADInterstitialAdLoadCompletionHandler или GADRewardedAdLoadCompletionHandler
    Презентационные мероприятия GADFullScreenContentDelegate

    Раньше для отслеживания любых событий рекламы приходилось регистрировать класс, реализующий протокол GADInterstitialDelegate , в свойстве делегата полноэкранного объявления или класс, реализующий протокол GADRewardedAdDelegate , в свойстве делегата объявления с вознаграждением, в зависимости от используемого формата. Этот же делегат имел методы, связанные как с загрузкой, так и с жизненным циклом отображения рекламы.

    В версии 8 события загрузки и отображения разделены. Теперь вы можете зарегистрировать GADFullScreenContentDelegate в любое время до показа рекламы, вместо того чтобы задавать отдельный делегат перед её загрузкой. События загрузки рекламы, специфичные для каждого формата, переносятся в один обработчик завершения загрузки, передаваемый в методе load.

Интерстициальный

Загрузить объявление

Приведенные ниже фрагменты кода показывают, как загрузить полноэкранную рекламу и отслеживать события, возникающие при ее успешной или неудачной загрузке.

v7

Быстрый

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

Быстрый

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;
  }];
}

Показывать рекламу

v7

Быстрый

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

Быстрый

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

Презентационные рекламные мероприятия

Приведенные ниже фрагменты кода показывают, как обрабатывать обратные вызовы при показе рекламы (успешном или неудачном) и при ее закрытии.

v7

Быстрый

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

Быстрый

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

Награжден

Загрузить объявление

v7

Быстрый

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

Быстрый

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

Показывать рекламу и управлять вознаграждением

Для рекламы с вознаграждением необходимо обработать событие, когда пользователь получает вознаграждение. В версии 7 API GADRewardedAd реализован rewardedAd:userDidEarnReward: как часть протокола GADRewardedAdDelegate . В версии 8 для показа рекламы реализован GADUserDidEarnRewardHandler .

v7

Быстрый

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

Быстрый

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

Презентационные рекламные мероприятия

С помощью API GADRewardedAd вы передаёте GADRewardedAdDelegate методу, представляющему рекламу. С помощью API GADRewardedAd вы устанавливаете GADFullscreenContentDelegate как свойство рекламы перед её показом.

v7

Быстрый

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

Быстрый

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

Удаление устаревшего API GADRewardedBasedVideoAd

Новый API GADRewardedAd был впервые представлен в марте 2019 года и уже более 18 месяцев является предпочтительным API с вознаграждением. Он получил больше улучшений по сравнению с устаревшим API GADRewardedBasedVideoAd , включая возможность загрузки нескольких объявлений с вознаграждением одновременно.

Устаревший API GADRewardedBasedVideoAd удален в версии SDK 8.0.0.

Отказ от смарт-баннеров в пользу адаптивных баннеров

Смарт-баннеры устарели в пользу адаптивных баннеров . Адаптивные баннеры обеспечивают превосходную производительность и большую гибкость в настройке ширины объявления. Если вы предпочитаете продолжать использовать полноэкранные баннеры, это можно сделать с помощью адаптивных баннеров, как показано в следующем фрагменте кода:

Быстрый

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

Удаление обратного вызова из заявки

Обратный вызов willLeaveApplication для всех форматов рекламы был удалён в пользу методов applicationDidEnterBackground: и sceneDidEnterBackground: Используйте API на уровне ОС, чтобы уведомлять вас о каждом выходе пользователей из приложения, независимо от того, связано ли это с взаимодействием с рекламой или нет.

Обратите внимание, что функция обратного вызова willLeaveApplication никогда не подразумевалась как обработчик кликов по рекламе, и использование этой функции для отчётности о кликах не приводило к получению точной метрики. Например, нажатие на значок AdChoices, запускающее внешний браузер, вызывало функцию обратного вызова, но не засчитывало клик.

Переименование классов

В таблице ниже перечислены конкретные имена классов, которые были изменены или удалены в версии 8. Вкратце:

  • Все классы, связанные с GADUnifiedNativeAd были переименованы в GADNativeAd .
  • GADRewardBasedVideoAd , GADNativeExpressAdView и GADInstreamAd были удалены.
  • Все классы с префиксом DFP были заменены префиксом GAM .
Класс v7.68.0 Класс v8.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 Удаленный
GADInterstitial GADInterstitialAd
GADNativeExpressAdView Удаленный
GADRewardBasedVideoAd Удаленный
GADInstreamAd Удаленный
GADInstreamAdView Удаленный

Методы удалены/заменены

В таблице ниже перечислены конкретные изменения в версии 8. Вкратце:

  • Ранее устаревшие методы и свойства были удалены.
  • -willLeaveApplication: методы делегирования удалены для всех форматов.
  • Имя класса рекламной сети перенесено в свойство GADResponseInfo .
  • Идентификатор тестового устройства перенесен в свойство GADRequestConfiguration .
Класс v7.68.0 API v7.68.0 API версии 8.0.0 Примечания
GADMobileAds +configureWithApplicationID: -startWithCompletionHandler: Идентификатор приложения теперь установлен в Info.plist.
+отключить автоматическую отчетность о покупках в приложении -disableAutomatedInApp PurchaseReporting
+disableSDKCrashReporting -disableSDKCrashReporting
GADRequest тестовые устройства GADRequestConfiguration .testdeviceidentifiers Свойство testDeviceIdentifiers применяется ко всем запросам объявлений, тогда как старое свойство testDevices устанавливалось для каждого запроса.
пол Удаленный
день рождения Удаленный
+sdkVersion GADMobileAds.sharedInstance .sdkVersion
-setBirthday WithMonth:day:year: Удаленный
-setLocationWithDescription: -setLocationWith Широта:долгота:точность:
-tagForChildDirectedTreatment: [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment]
GADErrorCode kGADError* GADError* Префикс k удален из всех констант кодов ошибок.
GADBannerView hasAutoRefreshed автозагрузка включена
inAppPurchaseDelegate Удаленный
mediatedAdView Удаленный
adNetworkClassName responseInfo .adNetworkClassName
DFPBannerView -setValidAdSizesWithSizes: -setValidAdSizes:
DFPBannerViewOptions -adSizeDelegate Удаленный
GADBannerViewDelegate -adViewDidReceiveAd: -bannerViewDidReceiveAd:
-adView:didFailToReceive AdWithError: -bannerView:didFailToReceive AdWithError:
-adViewWillPresentScreen: -bannerViewWillPresentScreen:
-adViewWillDismissScreen: -bannerViewWillDismissScreen:
-adViewDidDismissScreen: -bannerViewDidDismissScreen:
-adViewWillLeaveApplication: Удаленный
GADNativeCustomTemplateAd templateID GADCustomNativeAd.formatID
-performClickOnAssetWithKey: customClickHandler: -performClickOnAssetWithKey:
GADNativeAdImageAd LoaderOptions предпочтительная ориентация изображения GADNativeAdMediaAdOptions .mediaAspectRatio
GADInterstitial inAppPurchaseDelegate Удаленный
isReady Удаленный Вместо этого используйте canPresentFrom RootViewController:error:.
hasBeenUsed Удаленный
-init -initWithAdUnitID:
-setAdUnitID: -initWithAdUnitID:
adNetworkClassName responseInfo .adNetworkClassName
-interstitialПокинетПриложение: Удаленный
GADUnifiedNativeAd видеоконтроллер mediaContent.videoController
adNetworkClassName responseInfo .adNetworkClassName