SDK の移行

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このページでは、最新バージョンと以前のバージョンへの移行について説明します。

SDK v9 への移行

Google Mobile Ads SDKバージョン9.0.0は、いくつかの主要な変更に加えて、いくつかのAPIの名前変更と非推奨のAPIの削除により、2022年初頭にリリースされます。このガイドでは、これらの変更と、アプリを最新のSDKで最新の状態にするためのベストプラクティスについて概説します。

iOS10での広告の配信が停止します

Google Mobile AdsSDKバージョン9.0.0がサポートするiOSの最小バージョンはiOS11です。

Google Mobile Ads SDKバージョン9.0.0にアップグレードしても、iOS 10デバイスでアプリが破損することはありませんが、これらのデバイスでは広告は配信されません。

ステータスバーコントロールのより厳格な施行

バージョン9.0.0以降、フルスクリーン形式の広告を表示する場合、アプリは、広告がステータスバーの表示を制御できることを確認する必要があります。そうしないと、ログにエラーメッセージが表示されます。

アプリ内のViewControllerの特定のレイアウトによっては、これを確実にするために変更を加える必要がない場合もありますが、場合によっては、親ViewControllerのmodalPresentationCapturesStatusBarAppearanceプロパティを設定する必要があります。

adDidPresentFullScreenContent:の名前をadWillPresentFullScreenContent:に変更します。

動作の変更はありません。デリゲートメソッドは、広告が表示される直前に呼び出されるため、新しいメソッド名はその機能をより適切に反映します。

GADRequestの位置設定APIを削除します

- (void)setLocationWithLatitude:longitude:accuracy:位置データがGoogleによって広告のターゲティングに使用されていないため、 GADRequestから削除されました。必要に応じて、サードパーティのAPIを使用して、サードパーティの広告ネットワークに情報を提供します。

カスタムイベントインターフェイスの廃止

カスタムイベントを使用すると、サイト運営者は AdMob メディエーションを使用して、サポートされている広告ネットワークの1つではない広告ネットワークにウォーターフォールメディエーションを追加できます。

すべてのカスタムイベントプロトコルは非推奨になりました。代わりに、既存のGADMediationAdapterプロトコルとGADMediationAdEventDelegateプロトコルを使用して、同じ機能を実現します。この変更により、わかりやすくなり、以前は利用できなかったリワード広告とインタースクローラー広告のカスタムイベントを作成できるようになります。

API

次の表に、バージョン9.0.0以降で使用する必要があるカスタムイベントAPIに対応するメディエーションアダプタAPIを示します。

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 mediaViewGADCustomNativeAdは非推奨になりました。代わりにmediaContentを使用してください。
GoogleMobileAdsのアプリ内購入API inAppPurchaseGoogleMobileAdsが削除されました。

SDK v8 への移行

Google Mobile Ads SDKバージョン8.0.0では、APIの名前変更と削除に加えて、いくつかの主要な変更が導入されています。

フルスクリーン形式のAPIアップデート

バージョン8.0.0以降、インタースティシャル広告とリワード広告は、一貫性を高めるために一般的なフルスクリーン広告スタイルを共有しています。これらの新しいフルスクリーン広告APIには、バージョン7のフルスクリーン広告APIとの2つの大きな違いがあります。

  1. 静的クラスメソッドのload

    フルスクリーン広告をロード/表示するための以前のアプローチは次のとおりです。

    1. 広告オブジェクトインスタンスを作成し、そのインスタンスへの参照を保持します。
    2. ロードとショーのコールバックを処理するデリゲートを割り当てます。
    3. 広告を読み込みます。
    4. isReadyを使用して広告が読み込まれるかどうかを確認します。
    5. 広告を表示します。

    バージョン8では、アプローチが少し変更されています。ロードコールバックはデリゲートの一部ではなくなりました。代わりに、それらは完了ハンドラーとしてloadメソッドに渡されます。

    1. 広告クラスで静的ロードメソッドを呼び出し、ロード完了ハンドラーを提供します。
    2. ロード完了コールバックで、返されたロードされた広告への参照を保持します。
    3. showコールバックを処理するデリゲートを割り当てます。
    4. 広告を表示します。

    新しいアプローチには、次の利点があります。

    • ロードされていない広告への参照はありません。
    • 読み込み中に広告オブジェクトを保持する必要はありません。
  2. 一貫した広告イベント。

    イベントタイプ既存のAPI v8 API
    イベントの読み込みGADInterstitialDelegateまたはGADRewardedAdDelegate l10n-placeholder36 LoadCompletionHandlerまたは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/44118910")
    interstitial.delegate = self
    let request = GADRequest()
    interstitial.load(request)
  }

  /// Tells the delegate an ad request succeeded.
  func interstitialDidReceiveAd(_ ad: GADInterstitial) {
    print("Interstitial ad loaded.")
  }

  /// Tells the delegate an ad request failed.
  func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) {
    print("Interstitial ad failed to load with error: \(error.localizedDescription)")
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () 

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [[GADInterstitial alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/44118910"];
  self.interstitial.delegate = self;
  GADRequest *request = [GADRequest request];
  [self.interstitial loadRequest:request];
}

/// Tells the delegate an ad request succeeded.
- (void)interstitialDidReceiveAd:(GADInterstitial *)ad {
  NSLog(@"Insterstitial ad loaded.");
}

/// Tells the delegate an ad request failed.
- (void)interstitial:(GADInterstitial *)ad
    didFailToReceiveAdWithError:(GADRequestError *)error {
  NSLog(@"Interstitial ad failed to load with error: %@", [error localizedDescription]);
}

v8

迅速

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GADRequest()
    GADInterstitialAd.load(withAdUnitID:"ca-app-pub-8123415297019784/4985798738",
                                request: request,
                      completionHandler: { (ad, error) in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        self.interstitial = ad
                        self.interstitial.fullScreenContentDelegate = self
                      }
    )
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () 

@property(nonatomic, strong) GADInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/44118910"
                              request:request
                    completionHandler:^(GADInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
    self.interstitial.fullScreenContentDelegate = self;
  }];
}

ディスプレイ広告

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/44118910")
  interstitial.delegate = self
  ...
}

/// Tells the delegate that an interstitial will be presented.
func interstitialWillPresentScreen(_ ad: GADInterstitial) {
  print("Interstitial ad will be presented.")
}

/// Tells the delegate the interstitial is to be animated off the screen.
func interstitialWillDismissScreen(_ ad: GADInterstitial) {
  print("Interstitial ad will be dismissed.")
}

/// Tells the delegate the interstitial had been animated off the screen.
func interstitialDidDismissScreen(_ ad: GADInterstitial) {
  print("Interstitial ad dismissed.")
}

/// Tells the delegate that a user click will open another app
/// (such as the App Store), backgrounding the current app.
///
/// This is not a reliable callback for an ad click event and is removed in
/// version 8. If you wish to listen to an ad causing a user to leave the app,
/// use applicationWillResignActive: or sceneWillResignActive: instead.
func interstitialWillLeaveApplication(_ ad: GADInterstitial) {
  print("Interstitial ad will leave application.")
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [[GADInterstitial alloc] initWithAdUnitID:"ca-app-pub-3940256099942544/44118910"];
  self.interstitial.delegate = self;
  ...
}

/// Tells the delegate that an interstitial will be presented.
- (void)interstitialWillPresentScreen:(GADInterstitial *)ad {
  NSLog(@"Interstitial ad will be presented.");
}

/// Tells the delegate the interstitial is to be animated off the screen.
- (void)interstitialWillDismissScreen:(GADInterstitial *)ad {
  NSLog(@"Interstitial ad will be dismissed.");
}

/// Tells the delegate the interstitial had been animated off the screen.
- (void)interstitialDidDismissScreen:(GADInterstitial *)ad {
  NSLog(@"Interstitial ad dismissed.");
}

/// Tells the delegate that a user click will open another app
/// (such as the App Store), backgrounding the current app.
///
/// This is not a reliable callback for an ad click event and is removed in
/// version 8. If you wish to listen to an ad causing a user to leave the app,
/// use applicationWillResignActive: or sceneWillResignActive: instead.
- (void)interstitialWillLeaveApplication:(GADInterstitial *)ad {
  NSLog(@"Interstitial ad will leave application.");
}

v8

迅速

override func viewDidLoad() {
  super.viewDidLoad()
  let request = GADRequest()
  GADInterstitialAd.load(withAdUnitID:"ca-app-pub-8123415297019784/4985798738",
                              request: request,
                    completionHandler: { (ad, error) in
                      if let error = error {
                        print(error.localizedDescription)
                        return
                      }
                      self.interstitial = ad
                      self.interstitial.fullScreenContentDelegate = self
                    }
  )
}

func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("Ad did present full screen content.")
}

func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
  print("Ad failed to present full screen content with error \(error.localizedDescription).")
}

func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("Ad did dismiss full screen content.")
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/44118910"
                              request:request
                    completionHandler:^(GADInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"interstitial:didFailToReceiveAdWithError: %@", [error localizedDescription])
      return;
    }
    self.interstitial = ad;
    self.interstitial.fullScreenContentDelegate = self;
  }];
}

- (void)adDidPresentFullScreenContent:(id)ad {
  NSLog(@"Ad did present full screen content.");
}

- (void)ad:(id)ad didFailToPresentFullScreenContentWithError:(NSError *)error {
  NSLog(@"Ad failed to present full screen content with error %@.", [error localizedDescription]);
}

- (void)adDidDismissFullScreenContent:(id)ad {
  NSLog(@"Ad did dismiss full screen content.");
}

褒賞

広告を読み込む

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

広告を表示して報酬を処理する

リワード広告では、ユーザーがリワードを獲得したときにイベントを処理する必要があります。 GADRewardedAd APIのバージョン7では、 GADRewardedAdDelegateプロトコルの一部としてrewardedAd:userDidEarnReward:を実装します。バージョン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");
  }
}

プレゼンテーション広告イベント

GADRewardedAd APIを使用して、広告を表示するメソッドにGADRewardedAdDelegateを渡します。 GADRewardedAd APIを使用すると、広告を表示する前に、 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.");
}

レガシーGADRwardedBasedVideoAdAPIの削除

新しいGADRewardedAdは、2019年3月に最初に導入され、18か月以上にわたって推奨されるリワードAPIです。一度に複数のリワード広告をロードする機能など、従来のGADRewardedBasedVideoAdと比較してより多くの拡張機能があります。

従来の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:メソッドが採用されました。 OSレベルのAPIを使用すると、広告の操作によるものかどうかに関係なく、ユーザーがアプリを離れるたびに通知されます。

willLeaveApplication コールバックは、広告クリックハンドラーを意図したものではなく、クリックを報告するためにこのコールバックに依存しても、正確な指標は生成されなかったことに注意してください。たとえば、外部ブラウザを起動したAdChoicesアイコンをクリックすると、コールバックが呼び出されましたが、クリックはカウントされませんでした。

クラスの名前を変更

次の表に、バージョン8で変更または削除された特定のクラス名を示します。

  • GADUnifiedNativeAdに関連するすべてのクラスは、 GADUnifiedNativeAdに名前が変更されGADNativeAdた。
  • GADRewardBasedVideoAdGADNativeExpressAdView 、および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クラスv7.68.0 API v8.0.0 APIノート
GADMobileAds + configureWithApplicationID: -startWithCompletionHandler:これで、アプリIDがInfo.plistに設定されました。
+ disableAutomatedInApp PurchaseReporting -disableAutomatedInApp PurchaseReporting
+ disableSDKCrashReporting -disableSDKCrashReporting
GADRequest testDevices GADRequestConfiguration .testdeviceidentifiers testDeviceIdentifiersプロパティはすべての広告リクエストに適用されますが、古いtestDevicesプロパティはリクエストごとに設定されていました。
性別削除
誕生日削除
+ sdkVersion GADMobileAds.sharedInstance .sdkVersion
-setBirthday WithMonth:day:year:削除
-setLocationWithDescription: -setLocationWith Latitude:longitude:accuracy:
-tagForChildDirectedTreatment: [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment]
GADErrorCode kGADError * GADError * kプレフィックスは、すべてのエラーコード定数から削除されます。
GADBannerView hasAutoRefreshed autoloadEnabled
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 PreferredImageOrientation GADNativeAdMediaAdOptions .mediaAspectRatio
GADInterstitial inAppPurchaseDelegate削除
isReady削除代わりに、canPresentFrom RootViewController:error:を使用してください。
hasBeenUsed削除
-初期化-initWithAdUnitID:
-setAdUnitID: -initWithAdUnitID:
adNetworkClassName responseInfo .adNetworkClassName
-interstitialWill LeaveApplication:削除
GADUnifiedNativeAd videoController mediaContent.videoController
adNetworkClassName responseInfo .adNetworkClassName