このページでは、最新バージョンと以前のバージョンの移行について説明します。
10 から v11 への移行
最小デプロイ ターゲット
最小デプロイ ターゲットが iOS 12 に引き上げられました。
Xcode の最小バージョン
サポートされる Xcode の最小バージョンが 15.1 に引き上げられました。
iOS 12 での広告配信停止
Google Mobile Ads SDK バージョン 11.0.0 が iOS 13 を搭載するデバイスにのみ広告を配信 以上です。
GoogleAppMeasurement の依存関係を削除しました
バージョン 11.0.0 では、
GoogleAppMeasurement
は
削除されます。AdMob でユーザーに関する指標を切り替えるこの依存関係は、
廃止されました。宛先
AdMob で引き続きユーザーに関する指標を収集し
AdMob アプリを Firebase にリンクする
統合
Firebase 向け Google アナリティクス SDK を
説明します。
全画面広告の表示に関する変更
以下の変更は、各種広告フォーマットに影響します。
- アプリ起動
- インタースティシャル
- 特典
- リワード インタースティシャル
-canPresentFromRootViewController:error:
のビュー コントローラ パラメータと
-presentFromRootViewController:
は null 値許容です。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 | 代替機能はありません。 |
userLatitude | ||
userLongitude | ||
userLocationAccuracyInMeters | ||
childDirectedTreatment | 代わりに GADMobileAds.sharedInstance.requestConfiguration.tagForChildDirectedTreatment を使用してください。 |
|
GADResponseInfo | adNetworkClassName | 代わりに loadedAdNetworkResponseInfo の adNetworkClassName を使用してください。 |
GADAdFormatUnknown を削除しました
GADAdFormatUnknown
を置き換えずに削除しました。
Logging 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 |
|
|
v9 から v10 への移行
iOS 11 での広告配信が停止されます
Google Mobile Ads SDK バージョン 10.0.0 では、iOS 12 以降を搭載したデバイスにのみ広告が配信されます。
Google Mobile Ads SDK バージョン 10.0.0 へのアップグレードによって、iOS 11 と iOS 10 のデバイスでアプリが動作しなくなることはありませんが、広告は配信されなくなります。
アド マネージャー アプリ ID の要件
すべてのアド マネージャー アプリの Info.plist
で、アド マネージャー アプリ ID(ca-app-pub-################~##########
形式)が必要となります。詳しくは、Info.plist を更新するをご覧ください。
GoogleAppMeasurement.xcframework の要件
Google AppMeasurement.xcframework は、すべてのアド マネージャー アプリで必須になりました。Cocoapods または Swift Package Manager を使用して Google Mobile Ads SDK をインストールする場合は、追加のご対応は必要ありません。フレームワークを手動でインストールする場合は、手動ダウンロードに関する記事で詳細をご覧ください。
ビットコードによるビルドのサポートが終了しました
Google Mobile Ads SDK を統合するには、モバイルアプリでビットコードを無効にする必要があります。
削除された型
種類 | メモ |
---|---|
GADGender | 代替はありません。 |
GADMRewardBasedVideoAdNetworkAdapterProtocol | ネットワークの選択に関する記事に記載されているすべてのリワード メディエーション アダプタでは、これらのプロトコルの使用が 1 年以上停止しています。 メディエーションとカスタム イベントには、 GADMediationAdapter を使用してください。 |
GADMRewardBasedVideoAdNetworkConnectorProtocol |
削除されたプロパティ
次のプロパティは削除され、代替はありません。
v10.0.0 クラス | プロパティ |
---|---|
GADMediationAdRequest | userBirthday |
userGender | |
userHasLocation | |
userLatitude | |
userLongitude | |
userLocationAccuracyInMeters | |
userLocationDescription | |
GADCustomEventRequest | userHasLocation |
userLatitude | |
userLongitude | |
userLocationAccuracyInMeters | |
userLocationDescription |
v8 から v9 への移行
iOS 10 での広告配信が停止されます
Google Mobile Ads SDK バージョン 9.0.0 がサポートする iOS バージョンは、iOS 11 以降です。
Google Mobile Ads SDK バージョン 9.0.0 にアップグレードしても、iOS 10 デバイスでアプリが動作しなくなることはありませんが、広告は配信されなくなります。
ステータスバー コントロールの適用強化
バージョン 9.0.0 以降では、全画面フォーマットの広告を表示する場合、その広告でステータスバーの表示を制御できるようにする必要があります。それができていない場合は、ログにエラー メッセージが表示されます。
アプリ内のビュー コントローラのレイアウトによっては、このレイアウトを実現するために変更する必要はありません。広告の rootViewController
に childViewControllerForStatusBarHidden
プロパティを設定する必要があるかどうかをご検討ください。
ad DidPresentFullScreenContent: の名前を adWillPresentFullScreenContent に変更します。
動作の変更はありません。デリゲート メソッドは、広告が表示される直前に呼び出されるため、新しいメソッド名がその機能をより適切に反映したものになります。
GADRequest の Location Settings API を削除
Google は位置情報を広告のターゲティングに使用しないため、- (void)setLocationWithLatitude:longitude:accuracy:
は GADRequest
から削除されました。必要に応じて、第三者 API を使用して第三者広告ネットワークに情報を提供します。
カスタム イベント インターフェースのサポート終了
カスタム イベントを使用すると、 Ad Manager メディエーションを使用するパブリッシャーは、サポートされている広告ネットワーク以外の広告ネットワーク向けに、ウォーターフォール メディエーションを追加できます。
カスタム イベント プロトコルはすべて非推奨になりました。代わりに、既存の GADMediationAdapter
プロトコルと GADMediationAdEventDelegate
プロトコルを使用して、同じ機能を実現できます。この変更により明確さが増し、以前は利用できなかったリワード広告とインタースクローラー広告用のカスタム イベントを作成できるようになりました。
API
以下の表は、バージョン 9.0.0 以降の使用が推奨される、カスタム イベント API に対応するメディエーション アダプタ API の一覧です。
v8 | v9 | |
---|---|---|
GADCustomEventBanner GADCustomEvent インタースティシャル GADCustomEventNativeAd |
GADMediationAdapter | GADMediationBannerAd GADMediation インタースティシャル Ad GADMediationInterscrollerAd GADMediationRewardedAd GADMediationNativeAd |
delegate
|
デリゲートは、GADMediationAdapter クラスの各読み込み関数の読み込み完了ハンドラによって返されます。
|
|
-init |
-init |
|
-requestBannerAd:parameter: |
-loadBannerForAdConfiguration: |
|
-requestInterstitialAdWith |
-loadInterstitialFor |
|
-requestNativeAdWithParameter:
|
-loadNativeAdFor |
|
なし | -loadInterscrollerAdFor |
|
なし | -loadRewardedAdFor |
|
-presentFromRootViewController:
|
-presentFromViewController: |
|
-handlesUserClicks |
-handlesUserClicks |
|
-handlesUserImpressions |
-handlesUserImpressions |
メソッドを委任する
以下の表は、バージョン 9.0.0 以降で使用される、カスタム イベント デリゲート メソッドに対応するメディエーション広告イベント デリゲート メソッドの一覧です。
v8 | v9 | |
---|---|---|
GADCustomEventBannerDelegate GADCustomEvent インタースティシャル Delegate GADCustomEventNativeAdDelegate |
GADMediationAdEventDelegate | GADMediationAd |
-customEventBanner:didReceiveAd: -customEventInterstitialDidReceiveAd:
|
広告の読み込みステータスは、GADMediationAdapter クラスの各読み込み関数の読み込み完了ハンドラに含まれます。
|
|
-customEventBanner:didFailAd: -customEventInterstitial:didFailAd:
|
||
-customEventBannerWasClicked: -customEventInterstitialWasClicked:
|
-reportClick |
|
-customEventBannerWill -customEventInterstitialWill
|
-willPresentFullScreenView |
|
-customEventBannerWill -customEventInterstitialWill
|
-willDismissFullScreenView |
|
-customEventBannerDid -customEventInterstitialDid
|
-didDismissFullScreenView |
|
-customEventBannerWill -customEventInterstitialWill
|
-willBackgroundApplication |
|
viewControllerFor |
-[GADMediationBannerAd view] |
削除または置換されたその他のメソッドと定数
メソッド、定数、プロパティの変更 | |
---|---|
kGAD- プレフィックス付き定数
|
削除しました。接頭辞 GAD- の付いた定数を使用します。
|
GADAdNetworkResponseInfo
|
credentials が削除されました。代わりに adUnitMapping を使用してください。 |
GAMRequest
|
GAMRequest の kGAMSimulatorID が非推奨になりました。代わりに GADRequestConfiguration の GADSimulatorID を使用してください。
|
GADCustomNativeAd
|
GADCustomNativeAd の mediaView が非推奨になりました。代わりに mediaContent を使用してください。 |
GoogleMobileAds の In-App Purchase API |
GoogleMobileAds の inAppPurchase API が削除されました。 |
v7 から v8 への移行
Google Mobile Ads SDK バージョン 8.0.0 では、いくつかの大きな変更に加え、 API の名前変更と削除が行われます。
全画面形式の API の更新
バージョン 8.0.0 以降、インタースティシャル広告とリワード広告では、 一貫性を持たせましょうこれらの新しいフルスクリーン広告 API では バージョン 7 のフルスクリーン広告 API との主な違いは次のとおりです。
静的クラスメソッド
load
。フルスクリーン広告の読み込みと表示に関する従来のアプローチは次のようになります。
- 広告オブジェクト インスタンスを作成し、そのインスタンスへの参照を保持します。
- 読み込みコールバックと表示コールバックを処理するデリゲートを割り当てる。
- 広告を読み込みます。
isReady
を使用して、広告が読み込まれているかどうかを確認します。- 広告を表示する。
バージョン 8 ではアプローチが若干変更されています。読み込みコールバックは 委任することもできます。代わりに、
load
メソッドに 完了ハンドラ:- 広告クラスで静的読み込みメソッドを呼び出して、読み込み完了を提供する 使用します。
- 読み込み完了コールバックでは、読み込み完了時に表示される広告への参照を保持したまま、 返されます。
- ショー コールバックを処理するデリゲートを割り当てます。
- 広告を表示する。
新しいアプローチには次の利点があります。
- 読み込まれていない広告への参照は保持されません。
- 読み込み中に広告オブジェクトを保持する必要はありません。
一貫した広告イベント。
イベントの種類 既存の API バージョン 8 API 読み込みイベント GADInterstitialDelegate
またはGADRewardedAdDelegate
GAMInterstitialAdLoadCompletionHandler
またはGADRewardedAdLoadCompletionHandler
プレゼンテーション イベント GADFullScreenContentDelegate
以前は、広告イベントをリッスンするために、 実装する
GADInterstitialDelegate
インタースティシャルのデリゲート プロパティにプロトコルを渡すか、 実装するGADRewardedAdDelegate
フォーマットに応じて、リワード広告のデリゲート プロパティにプロトコルを 確認できます。このデリゲートには、読み込みと処理の両方に関連するメソッドがあり、 ライフサイクルなどがあります。バージョン 8 では、読み込みイベントと表示イベントが分離されています。今すぐ 登録して
GADFullScreenContentDelegate
広告を表示する前であればいつでも、1 つの広告ユニットを 1 つ設定 デリゲートする方法もあります。広告掲載イベントは 読み込みメソッドで渡される単一の読み込み完了ハンドラに移動します。
インタースティシャル
広告を読み込む
以下のコード スニペットは、インタースティシャル広告を読み込んで イベントをリッスンします。
v7
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADInterstitialDelegate { var interstitial: DFPInterstitial! override func viewDidLoad() { super.viewDidLoad() interstitial = DFPInterstitial(adUnitID: "/21775744923/example/interstitial") interstitial.delegate = self let request = GAMRequest() interstitial.load(request) } /// Tells the delegate an ad request succeeded. func interstitialDidReceiveAd(_ ad: DFPInterstitial) { print("Interstitial ad loaded.") } /// Tells the delegate an ad request failed. func interstitial(_ ad: DFPInterstitial, didFailToReceiveAdWithError error: GADRequestError) { print("Interstitial ad failed to load with error: \(error.localizedDescription)") } }
Objective-C
@import GoogleMobileAds; @import UIKit; @interface ViewController ()@property(nonatomic, strong) DFPInterstitial *interstitial; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.interstitial = [[DFPInterstitial alloc] initWithAdUnitID:@"/21775744923/example/interstitial"]; self.interstitial.delegate = self; GAMRequest *request = [GAMRequest request]; [self.interstitial loadRequest:request]; } /// Tells the delegate an ad request succeeded. - (void)interstitialDidReceiveAd:(DFPInterstitial *)ad { NSLog(@"Insterstitial ad loaded."); } /// Tells the delegate an ad request failed. - (void)interstitial:(DFPInterstitial *)ad didFailToReceiveAdWithError:(GADRequestError *)error { NSLog(@"Interstitial ad failed to load with error: %@", [error localizedDescription]); }
v8
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADFullScreenContentDelegate { var interstitial: GAMInterstitialAd? override func viewDidLoad() { super.viewDidLoad() let request = GAMRequest() GAMInterstitialAd.load(withAdUnitID:"ca-app-pub-8123415297019784/4985798738", request: request, completionHandler: { (ad, error) in if let error = error { print("Failed to load interstitial ad with error: \(error.localizedDescription)") return } self.interstitial = ad self.interstitial.fullScreenContentDelegate = self } ) } }
Objective-C
@import GoogleMobileAds; @import UIKit; @interface ViewController ()@property(nonatomic, strong) GAMInterstitialAd *interstitial; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; GAMRequest *request = [GAMRequest request]; [GAMInterstitialAd loadWithAdUnitID:@"/21775744923/example/interstitial" request:request completionHandler:^(GAMInterstitialAd *ad, NSError *error) { if (error) { NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]); return; } self.interstitial = ad; self.interstitial.fullScreenContentDelegate = self; }]; }
ディスプレイ広告
v7
Swift
func showInterstitial() { ... if interstitial.isReady { interstitial.present(fromRootViewController: self) } else { print("Ad wasn't ready") } }
Objective-C
- (void)showInterstitial: { ... if (self.interstitial.isReady) { [self.interstitial presentFromRootViewController:self]; } else { NSLog(@"Ad wasn't ready"); } }
v8
Swift
func showInterstitial() { ... if let ad = interstitial { ad.present(fromRootViewController: self) } else { print("Ad wasn't ready") } }
Objective-C
- (void)showInterstitial: { ... if (self.interstitial) { [self.interstitial presentFromRootViewController:self]; } else { NSLog(@"Ad wasn't ready"); } }
プレゼンテーション広告イベント
以下のコード スニペットは、広告が再生されたときにコールバックを処理する方法を示しています。 閉じられるタイミングを指定できます。
v7
Swift
override func viewDidLoad() { super.viewDidLoad() interstitial = DFPInterstitial(adUnitID: "/21775744923/example/interstitial") interstitial.delegate = self ... } /// Tells the delegate that an interstitial will be presented. func interstitialWillPresentScreen(_ ad: DFPInterstitial) { print("Interstitial ad will be presented.") } /// Tells the delegate the interstitial is to be animated off the screen. func interstitialWillDismissScreen(_ ad: DFPInterstitial) { print("Interstitial ad will be dismissed.") } /// Tells the delegate the interstitial had been animated off the screen. func interstitialDidDismissScreen(_ ad: DFPInterstitial) { print("Interstitial ad dismissed.") } /// Tells the delegate that a user click will open another app /// (such as the App Store), backgrounding the current app. /// /// This is not a reliable callback for an ad click event and is removed in /// version 8. If you wish to listen to an ad causing a user to leave the app, /// use applicationWillResignActive: or sceneWillResignActive: instead. func interstitialWillLeaveApplication(_ ad: DFPInterstitial) { print("Interstitial ad will leave application.") }
Objective-C
- (void)viewDidLoad { [super viewDidLoad]; self.interstitial = [[DFPInterstitial alloc] initWithAdUnitID:"/21775744923/example/interstitial"]; self.interstitial.delegate = self; ... } /// Tells the delegate that an interstitial will be presented. - (void)interstitialWillPresentScreen:(DFPInterstitial *)ad { NSLog(@"Interstitial ad will be presented."); } /// Tells the delegate the interstitial is to be animated off the screen. - (void)interstitialWillDismissScreen:(DFPInterstitial *)ad { NSLog(@"Interstitial ad will be dismissed."); } /// Tells the delegate the interstitial had been animated off the screen. - (void)interstitialDidDismissScreen:(DFPInterstitial *)ad { NSLog(@"Interstitial ad dismissed."); } /// Tells the delegate that a user click will open another app /// (such as the App Store), backgrounding the current app. /// /// This is not a reliable callback for an ad click event and is removed in /// version 8. If you wish to listen to an ad causing a user to leave the app, /// use applicationWillResignActive: or sceneWillResignActive: instead. - (void)interstitialWillLeaveApplication:(DFPInterstitial *)ad { NSLog(@"Interstitial ad will leave application."); }
v8
Swift
override func viewDidLoad() { super.viewDidLoad() let request = GAMRequest() GAMInterstitialAd.load(withAdUnitID:"ca-app-pub-8123415297019784/4985798738", request: request, completionHandler: { (ad, error) in if let error = error { print(error.localizedDescription) return } self.interstitial = ad self.interstitial.fullScreenContentDelegate = self } ) } func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Ad did present full screen content.") } func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) { print("Ad failed to present full screen content with error \(error.localizedDescription).") } func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Ad did dismiss full screen content.") }
Objective-C
- (void)viewDidLoad { [super viewDidLoad]; GAMRequest *request = [GAMRequest request]; [GAMInterstitialAd loadWithAdUnitID:@"/21775744923/example/interstitial" request:request completionHandler:^(GAMInterstitialAd *ad, NSError *error) { if (error) { NSLog(@"interstitial:didFailToReceiveAdWithError: %@", [error localizedDescription]) return; } self.interstitial = ad; self.interstitial.fullScreenContentDelegate = self; }]; } - (void)adDidPresentFullScreenContent:(id)ad { NSLog(@"Ad did present full screen content."); } - (void)ad:(id )ad didFailToPresentFullScreenContentWithError:(NSError *)error { NSLog(@"Ad failed to present full screen content with error %@.", [error localizedDescription]); } - (void)adDidDismissFullScreenContent:(id )ad { NSLog(@"Ad did dismiss full screen content."); }
特典
広告を読み込む
v7
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADRewardedAdDelegate { /// The rewarded ad. var rewardedAd: GADRewardedAd? override func viewDidLoad() { super.viewDidLoad() rewardedAd = GADRewardedAd(adUnitID: "ca-app-pub-3940256099942544/1712485313") rewardedAd.delegate = self rewardedAd?.load(GAMRequest()) { error in if let error = error { print("Rewarded ad failed to load with error: \(error.localizedDescription)") } else { print("Rewarded ad loaded.") } } } }
Objective-C
@import GoogleMobileAds; @import UIKit; @interface ViewController ()@property(nonatomic, strong) GADRewardedAd *rewardedAd; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.rewardedAd = [[GADRewardedAd alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"]; self.rewardedAd.delegate = self; GAMRequest *request = [GAMRequest request]; [self.rewardedAd loadRequest:request completionHandler:^(GADRequestError * _Nullable error) { if (error) { NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]); } else { NSLog(@"Rewarded ad loaded."); } }]; }
v8
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADFullScreenContentDelegate { /// The rewarded ad. var rewardedAd: GADRewardedAd? override func viewDidLoad() { super.viewDidLoad() let request = GAMRequest() GADRewardedAd.load(withAdUnitID: "ca-app-pub-8123415297019784/9501821136", request: request, completionHandler: { (ad, error) in if let error = error { print("Rewarded ad failed to load with error: \(error.localizedDescription)") return } self.rewardedAd = ad self.rewardedAd?.fullScreenContentDelegate = self } ) } }
Objective-C
@import GoogleMobileAds; @import UIKit; @interface ViewController ()@property(nonatomic, strong) GADRewardedAd *rewardedAd; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; GAMRequest *request = [GAMRequest request]; [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313" request:request completionHandler:^(GADRewardedAd *ad, NSError *error) { if (error) { NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]); return; } self.rewardedAd = ad; NSLog(@"Rewarded ad loaded."); self.rewardedAd.fullScreenContentDelegate = self; }
ディスプレイ広告と報酬の処理
リワード広告では、ユーザーが報酬を獲得したときにイベントを処理する必要があります。あり
バージョン 7 の GADRewardedAd
API を使用する場合は、
GADRewardedAdDelegate
プロトコルの一部としての rewardedAd:userDidEarnReward:
。
バージョン 8 では、以下を行うために GADUserDidEarnRewardHandler
を実装します。
広告を表示する。
v7
Swift
func showRewardedAd() { ... if rewardedAd.isReady { rewardedAd.present(fromRootViewController: self delegate:self) } else { print("Ad wasn't ready") } } /// Tells the delegate that the user earned a reward. func rewardedAd(_ rewardedAd: GADRewardedAd, userDidEarnReward: GADAdReward) { // TODO: Reward the user. }
Objective-C
- (void)showRewardedAd: { ... if (self.rewardedAd.isReady) { [self.rewardedAd presentFromRootViewController:self delegate:self]; } else { NSLog(@"Ad wasn't ready"); } } /// Tells the delegate that the user earned a reward. - (void)rewardedAd:(GADRewardedAd *)rewardedAd userDidEarnReward:(GADAdReward *)reward { // TODO: Reward the user. }
v8
Swift
func showRewardedAd() { ... if let ad = rewardedAd { ad.present(fromRootViewController: self, userDidEarnRewardHandler: { let reward = ad.adReward // TODO: Reward the user. } ) } else { print("Ad wasn't ready") } }
Objective-C
- (void)showRewardedAd: { ... if (self.rewardedAd) { [self.rewardedAd presentFromRootViewController:self userDidEarnRewardHandler:^ { GADAdReward *reward = self.rewardedAd.adReward; // TODO: Reward the user. }]; } else { NSLog(@"Ad wasn't ready"); } }
プレゼンテーション広告イベント
GADRewardedAd
API で、GADRewardedAdDelegate
をメソッドに渡します。
広告を提供しますGADRewardedAd
API では、
提示する前の広告のプロパティとして GADFullscreenContentDelegate
を使用
表示されます。
v7
Swift
func showRewardedAd() { ... if rewardedAd.isReady { rewardedAd.present(fromRootViewController: self delegate:self) } else { print("Ad wasn't ready") } } /// Tells the delegate that the rewarded ad was presented. func rewardedAdDidPresent(_ rewardedAd: GADRewardedAd) { print("Rewarded ad presented.") } /// Tells the delegate that the rewarded ad was dismissed. func rewardedAdDidDismiss(_ rewardedAd: GADRewardedAd) { print("Rewarded ad dismissed.") } /// Tells the delegate that the rewarded ad failed to present. func rewardedAd(_ rewardedAd: GADRewardedAd, didFailToPresentWithError error: Error) { print("Rewarded ad failed to present with error: \(error.localizedDescription).") }
Objective-C
- (void)showRewardedAd: { ... if (self.rewardedAd.isReady) { [self.rewardedAd presentFromRootViewController:self delegate:self]; } else { NSLog(@"Ad wasn't ready"); } } /// Tells the delegate that the rewarded ad was presented. - (void)rewardedAdDidPresent:(GADRewardedAd *)rewardedAd { NSLog(@"Rewarded ad presented."); } /// Tells the delegate that the rewarded ad failed to present. - (void)rewardedAd:(GADRewardedAd *)rewardedAd didFailToPresentWithError:(NSError *)error { NSLog(@"Rewarded ad failed to present with error: %@", [error localizedDescription]); } /// Tells the delegate that the rewarded ad was dismissed. - (void)rewardedAdDidDismiss:(GADRewardedAd *)rewardedAd { NSLog(@"Rewarded ad dismissed."); }
v8
Swift
override func viewDidLoad() { super.viewDidLoad() let request = GAMRequest() GADRewardedAd.load(withAdUnitID: "ca-app-pub-8123415297019784/9501821136", request: request, completionHandler: { (ad, error) in if let error = error { print(error.localizedDescription) return } self.rewardedAd = ad self.rewardedAd?.fullScreenContentDelegate = self } ) } /// Tells the delegate that the rewarded ad was presented. func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Rewarded ad presented.") } /// Tells the delegate that the rewarded ad was dismissed. func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Rewarded ad dismissed.") } /// Tells the delegate that the rewarded ad failed to present. func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) { print("Rewarded ad failed to present with error: \(error.localizedDescription).") }
Objective-C
- (void)viewDidLoad { [super viewDidLoad]; GAMRequest *request = [GAMRequest request]; [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313" request:request completionHandler:^(GADRewardedAd *ad, NSError *error) { if (error) { NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]); return; } self.rewardedAd = ad; NSLog(@"Rewarded ad loaded."); self.rewardedAd.fullScreenContentDelegate = self; } /// Tells the delegate that the rewarded ad was presented. - (void)adDidPresentFullScreenContent:(id)ad { NSLog(@"Rewarded ad presented."); } /// Tells the delegate that the rewarded ad failed to present. - (void)ad:(id )ad didFailToPresentFullScreenContentWithError:(NSError *)error { NSLog(@"Rewarded ad failed to present with error: %@", [error localizedDescription]); } /// Tells the delegate that the rewarded ad was dismissed. - (void)adDidDismissFullScreenContent:(id )ad { NSLog(@"Rewarded ad dismissed."); }
従来の GAD リワード広告 BasedVideoAd API の削除
新しい
GADRewardedAd
API は 2019 年 3 月に初めて導入され、
使用してきました従来版よりも機能が強化されたため、
GADRewardedBasedVideoAd
API(複数の読み込み機能を含む)
一度に表示されないようにできます。
以前の GADRewardedBasedVideoAd
API は SDK バージョン 8.0.0 で削除されました。
スマートバナーのサポートを終了し、アダプティブ バナーに移行
スマートバナー広告のサポート終了 アダプティブ バナーが推奨 できます。アダプティブ バナーは、優れたパフォーマンスと 広告の幅の設定を行います。引き続き全幅サイズのバナーを使用する場合は、 次のコード スニペットに示すように、引き続きアダプティブ バナーを使用します。
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
アプリからのコールバックの削除
すべての広告フォーマットの willLeaveApplication
コールバックは、
廃止され、
applicationDidEnterBackground:
および
sceneDidEnterBackground:
あります。OS レベルの 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 |
GADUnifiedGAD | GADNativeAd |
GADUnifiedNativeAdAssetIdentifiers | GADNativeAdAssetIdentifiers |
GADUnifiedNativeAdDelegate | GADNativeAdDelegate |
GADUnifiedNativeAdUnconfirmedClickDelegate | GADNativeAdUnconfirmedClickDelegate |
GADNativeCustomTemplateAd | GADCustomNativeAd |
GADNativeCustomTemplateAdLoaderDelegate | GADCustomNativeAdLoaderDelegate |
GADNativeAdDelegate | GADCustomNativeAdDelegate |
GADInAppPurchase | 削除済み |
GADInterstitial | GADInterstitialAd |
GADNativeExpressAdView | 削除済み |
GADRewardBasedVideoAd | 削除済み |
GADInstreamAd | 削除済み |
GADInstreamAdView | 削除済み |
削除/置換されたメソッド
バージョン 8 の具体的な変更点は下表のとおりです。概要は次のとおりです。
- 以前にサポートが終了したメソッドとプロパティが削除されました。
- すべてのフォーマットで
-willLeaveApplication:
デリゲート メソッドを削除しました。 - 広告ネットワークのクラス名は
GADResponseInfo
プロパティに移動しました。 - テストデバイス ID は
GADRequestConfiguration
に移動しました プロパティです。
v7.68.0 クラス | v7.68.0 API | バージョン 8.0.0 API | メモ |
---|---|---|---|
GADMobileAds | +configureWithApplicationID: | -startWithCompletionHandler: | これで、Info.plist にアプリ ID が設定されました。 |
+disableAutomatedInApp |
-disableAutomatedInApp |
||
+disableSDKCrashReporting | -disableSDKCrashReporting | ||
GADRequest | testDevices | GADRequestConfiguration |
testDeviceIdentifiers プロパティはすべての広告リクエストに適用されますが、 古い testDevices プロパティがリクエストごとに設定されていました。 |
性別 | 削除済み | ||
誕生日 | 削除済み | ||
+sdkVersion | GADMobileAds.sharedInstance |
||
-setBirthday |
削除済み | ||
-setLocationWithDescription: | -setLocationWith |
||
-tagForChildDirectedTreatment: | [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment] | ||
GADErrorCode | kGADError* | GADError* | k 接頭辞は、すべてのエラーコード定数から削除されます。
|
GADBannerView | hasAutoRefreshed | autoloadEnabled | |
inAppPurchaseDelegate | 削除済み | ||
mediatedAdView | 削除済み | ||
adNetworkClassName | responseInfo |
||
DFPBannerView | -setValidAdSizesWithSizes: | -setValidAdSizes: | |
DFPBannerViewOptions | -adSizeDelegate | 削除済み | |
GADBannerViewDelegate | -adViewDidReceiveAd: | -bannerViewDidReceiveAd: | |
-adView:didFailToReceive |
-bannerView:didFailToReceive |
||
-adViewWillPresentScreen: | -bannerViewWillPresentScreen: | ||
-adViewWillDismissScreen: | -bannerViewWillDismissScreen: | ||
-adViewDidDismissScreen: | -bannerViewDidDismissScreen: | ||
-adViewWillLeaveApplication: | 削除済み | ||
GADNativeCustomTemplateAd | templateID | GADCustomNativeAd.formatID | |
-performClickOnAssetWithKey: |
-performClickOnAssetWithKey: | ||
GADNativeAdImageAd |
preferredImageOrientation | GADNativeAdMediaAdOptions |
|
GADInterstitial | inAppPurchaseDelegate | 削除済み | |
isReady | 削除済み | 代わりに canPresentFrom |
|
hasBeenUsed | 削除済み | ||
-init | -initWithAdUnitID: | ||
-setAdUnitID: | -initWithAdUnitID: | ||
adNetworkClassName | responseInfo |
||
-interstitialWill |
削除済み | ||
GADUnifiedGAD | videoController | mediaContent.videoController | |
adNetworkClassName | responseInfo |