このページでは、移行にまつわる最新のバージョンと以前のバージョンに関する情報を説明します。
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 移动广告 SDK 版本 9.0.0 支持的最低 iOS 版本是 iOS 11。
升级到 Google 移动广告 SDK 版本 9.0.0 不会影响您的应用在 iOS 10 设备上的行为,但广告不会在这些设备上投放。
状态栏控制规定的执行更严格
从版本 9.0.0 开始,当您展示全屏格式的广告时,您的应用应确保广告能够控制状态栏的显示。如果您未能这样做,将会在日志中看到一条错误消息。
根据应用中视图控制器的具体布局,您可能无需做出任何更改即可确保实现这一点。考虑您是否需要在广告的 rootViewController
上设置 childViewControllerForStatusBarHidden
属性。
将 adDidPresentFullScreenContent: 重命名为 adWillPresentFullScreenContent:
行为无变化。委托方法在广告即将展示之前调用,因此新的方法名称可以更好地体现其功能。
移除了 GADRequest 上的 Location Settings API
- (void)setLocationWithLatitude:longitude:accuracy:
已从 GADRequest
中删除,因为 Google 不使用位置数据来定位广告。如果需要,请使用第三方 API 向第三方广告联盟提供该信息。
弃用了自定义事件接口
借助自定义事件,使用 Ad Manager 中介的发布商可以为支持的广告联盟以外的广告联盟添加广告瀑布流中介。
所有自定义事件协议均已弃用。请改用现有的 GADMediationAdapter
和 GADMediationAdEventDelegate
协议来实现相同的功能。这项变更让表达更加清晰明确,还可让您为之前不可用的激励广告和插页式滚显广告创建自定义事件。
API
下表列出了从版本 9.0.0 开始应使用的 Custom Events API 所对应的 Mediation Adapter API。
v8 | v9 | |
---|---|---|
GADCustomEventBanner GADCustomEventInterstitial GADCustomEventNativeAd |
GADMediationAdapter | GADMediationBannerAd GADMediationInterstitialAd 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 GADCustomEventInterstitialDelegate 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 |