Di chuyển SDK

Trang này trình bày cách di chuyển đối với phiên bản hiện tại và phiên bản cũ.

Chuyển sang SDK phiên bản 9

SDK quảng cáo trên thiết bị di động của Google phiên bản 9.0.0 sẽ ra mắt vào đầu năm 2022 với một số thay đổi lớn, cũng như một số lần đổi tên API và xóa các API không dùng nữa. Hướng dẫn này phác thảo những thay đổi này và các phương pháp hay nhất để cập nhật ứng dụng của bạn với SDK mới nhất của chúng tôi.

Quảng cáo ngừng phân phát trên iOS 10

Phiên bản iOS tối thiểu mà SDK quảng cáo trên thiết bị di động của Google phiên bản 9.0.0 hỗ trợ là iOS 11.

Nâng cấp lên SDK quảng cáo trên thiết bị di động của Google phiên bản 9.0.0 sẽ không phá vỡ ứng dụng của bạn trên các thiết bị iOS 10, tuy nhiên, sẽ không có quảng cáo nào được phân phát trên các thiết bị đó.

Thực thi chặt chẽ hơn các kiểm soát trên thanh trạng thái

Bắt đầu từ phiên bản 9.0.0, khi bạn hiển thị quảng cáo định dạng toàn màn hình, ứng dụng của bạn phải đảm bảo rằng quảng cáo có thể kiểm soát sự trình bày của thanh trạng thái. Bạn sẽ thấy thông báo lỗi trong nhật ký nếu bạn không làm như vậy.

Tùy thuộc vào bố cục cụ thể của bộ điều khiển chế độ xem trong ứng dụng của bạn, bạn có thể không cần thực hiện bất kỳ thay đổi nào để đảm bảo điều này, nhưng trong một số trường hợp, bạn có thể cần đặt thuộc tính modalPresentationCapturesStatusBarAppearance của bộ điều khiển chế độ xem mẹ của mình.

Đổi tên adDidPresentFullScreenContent: thành adWillPresentFullScreenContent:

Không có thay đổi hành vi. Phương thức ủy nhiệm được gọi ngay trước khi quảng cáo sắp được trình bày, do đó, tên phương thức mới phản ánh tốt hơn chức năng của nó.

Xóa API cài đặt vị trí trên GADRequest

- (void)setLocationWithLatitude:longitude:accuracy: đã bị xóa khỏi GADRequest vì dữ liệu vị trí không được Google sử dụng để nhắm mục tiêu quảng cáo. Sử dụng các API của bên thứ ba để cung cấp thông tin cho các mạng quảng cáo của bên thứ ba nếu được yêu cầu.

Giao diện sự kiện tùy chỉnh ngừng sử dụng

Sự kiện tùy chỉnh cho phép nhà xuất bản sử dụng Dàn xếp AdMob để thêm dàn xếp kiểu thác nước cho mạng quảng cáo không phải là một trong những mạng quảng cáo được hỗ trợ .

Tất cả các giao thức sự kiện tùy chỉnh không được dùng nữa. Thay vào đó, hãy sử dụng các giao thức GADMediationAdapterGADMediationAdEventDelegate hiện có để đạt được các chức năng tương tự. Thay đổi này cải thiện độ rõ ràng và cho phép bạn tạo các sự kiện tùy chỉnh cho quảng cáo có tặng thưởng và quảng cáo xen kẽ mà trước đây không có sẵn.

API

Bảng bên dưới liệt kê các API bộ điều hợp dàn xếp tương ứng với các API sự kiện tùy chỉnh sẽ được sử dụng bắt đầu từ phiên bản 9.0.0.

v8 v9
GADCustomEventBanner
GADCustomEventInterstitial
GADCustomEventNativeAd
GADMediationAdapter GADMediationBannerAd
GADMediationInterstitialAd
GADMediationInterscrollerAd
GADMediationRewardAd
GADMediationNativeAd
delegate Ủy quyền được trả về bởi trình xử lý hoàn thành tải của mỗi chức năng tải của lớp GADMediationAdapter
-init -init
-requestBannerAd:parameter: label:request: -loadBannerForAdConfiguration: completionHandler:
-requestInterstitialAdWith Parameter:label:request: -loadInterstitialFor AdConfiguration: completionHandler:
-requestNativeAdWithParameter: request:adTypes:options: rootViewController: -loadNativeAdFor AdConfiguration: completionHandler:
N / A -loadInterscrollerAdFor AdConfiguration: completionHandler:
N / A -loadRewardedAdFor AdConfiguration: completionHandler:
-presentFromRootViewController: -presentFromViewController:
-handlesUserClicks -handlesUserClicks
-handlesUserImpressions -handlesUserImpressions

Ủy quyền các phương pháp

Bảng bên dưới liệt kê các phương thức ủy quyền sự kiện quảng cáo dàn xếp tương ứng với các phương thức ủy quyền sự kiện tùy chỉnh sẽ được sử dụng bắt đầu từ phiên bản 9.0.0.

v8 v9
GADCustomEventBannerDelegate
GADCustomEventInterstitialDelegate
GADCustomEventNativeAdDelegate
GADMediationAdEventDelegate GADMediationAd
-customEventBanner:didReceiveAd:
-customEventInterstitialDidReceiveAd:
Trạng thái tải quảng cáo được bao gồm trong trình xử lý hoàn thành tải của từng chức năng tải trong lớp 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]

Các phương thức và hằng số bị xóa / thay thế khác

Các thay đổi đối với phương thức, hằng số hoặc thuộc tính
kGAD- hằng số tiền tố Loại bỏ. Sử dụng các hằng số có tiền tố GAD- .
GADAdNetworkResponseInfo credentials đã bị xóa. Sử dụng adUnitMapping để thay thế.
GADCustomNativeAd mediaView trong GADCustomNativeAd không được dùng nữa. Sử dụng mediaContent thay thế.
API mua hàng trong ứng dụng trong GoogleMobileAds API inAppPurchase trong GoogleMobileAds đã bị xóa.

Chuyển sang SDK phiên bản 8

SDK quảng cáo trên thiết bị di động của Google phiên bản 8.0.0 giới thiệu một số thay đổi lớn cũng như một số đổi tên và xóa API.

Cập nhật API định dạng toàn màn hình

Bắt đầu với phiên bản 8.0.0, quảng cáo xen kẽ và quảng cáo có tặng thưởng chia sẻ kiểu quảng cáo toàn màn hình chung để có tính nhất quán hơn. Các API quảng cáo toàn màn hình mới này có hai điểm khác biệt chính với các API quảng cáo toàn màn hình phiên bản 7:

  1. load phương thức lớp tĩnh.

    Cách tiếp cận trước đây để tải / hiển thị quảng cáo toàn màn hình như sau:

    1. Tạo một phiên bản đối tượng quảng cáo và giữ một tham chiếu đến nó.
    2. Chỉ định một đại biểu xử lý tải và hiển thị các lệnh gọi lại.
    3. Tải một quảng cáo.
    4. Kiểm tra xem quảng cáo có được tải bằng isReady .
    5. Hiển thị quảng cáo.

    Trong phiên bản 8, cách tiếp cận thay đổi một chút. Lệnh gọi lại tải không còn là một phần của đại biểu. Thay vào đó, chúng được chuyển vào phương thức load như một trình xử lý hoàn thành:

    1. Gọi một phương thức tải tĩnh trên lớp quảng cáo và cung cấp một trình xử lý hoàn thành tải.
    2. Trong lệnh gọi lại hoàn thành tải, hãy giữ tham chiếu đến quảng cáo đã tải được trả về.
    3. Chỉ định một đại biểu xử lý các lệnh gọi lại hiển thị.
    4. Hiển thị quảng cáo.

    Cách tiếp cận mới mang lại những lợi ích sau:

    • Bạn sẽ không bao giờ có tham chiếu đến một quảng cáo không được tải.
    • Bạn không cần phải giữ một đối tượng quảng cáo khi nó đang tải.
  2. Sự kiện quảng cáo nhất quán.

    Loại sự kiện API hiện có API v8
    Tải sự kiện GADInterstitialDelegate hoặc GADRewardedAdDelegate GADInterstitialAdLoadCompletionHandler hoặc GADRewardedAdLoadCompletionHandler
    Sự kiện trình bày GADFullScreenContentDelegate

    Trước đây, để lắng nghe bất kỳ sự kiện quảng cáo nào, bạn sẽ đăng ký một lớp triển khai giao thức GADInterstitialDelegate vào thuộc tính đại biểu của quảng cáo xen kẽ hoặc đăng ký một lớp triển khai giao thức GADRewardedAdDelegate cho thuộc tính đại biểu của quảng cáo có tặng thưởng tùy thuộc vào định dạng bạn đang sử dụng. Cũng đại biểu này có các phương pháp liên quan đến cả vòng đời tải và trình bày của một quảng cáo.

    Với phiên bản 8, sự kiện tải và sự kiện trình bày là riêng biệt. Giờ đây, bạn có thể đăng ký GADFullScreenContentDelegate bất kỳ lúc nào trước khi hiển thị quảng cáo thay vì bắt buộc phải đặt một đại biểu trước khi tải quảng cáo. Các sự kiện tải quảng cáo, cụ thể cho từng định dạng, chuyển đến một trình xử lý hoàn thành tải duy nhất được chuyển trong phương thức tải.

Xen kẽ

Tải quảng cáo

Các đoạn mã bên dưới cho bạn biết cách tải quảng cáo xen kẽ và lắng nghe các sự kiện khi quảng cáo tải thành công hoặc không tải.

v7

Nhanh

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

Nhanh

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

Quảng cáo hiển thị

v7

Nhanh

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

Nhanh

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

Sự kiện quảng cáo bản trình bày

Các đoạn mã bên dưới cho bạn biết cách xử lý lệnh gọi lại khi quảng cáo hiển thị (thành công hoặc không thành công) và khi quảng cáo bị loại bỏ.

v7

Nhanh

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

Nhanh

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

Được thưởng

Tải quảng cáo

v7

Nhanh

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

Nhanh

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

Hiển thị quảng cáo và xử lý phần thưởng

Quảng cáo có tặng thưởng yêu cầu bạn xử lý sự kiện khi người dùng kiếm được phần thưởng. Với phiên bản 7 của API GADRewardedAd , bạn triển khai rewardedAd:userDidEarnReward: như một phần của giao thức GADRewardedAdDelegate . Đối với phiên bản 8, bạn triển khai GADUserDidEarnRewardHandler để hiển thị quảng cáo.

v7

Nhanh

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

Nhanh

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

Sự kiện quảng cáo bản trình bày

Với API GADRewardedAd , bạn chuyển một GADRewardedAdDelegate đến phương thức hiển thị quảng cáo. Với API GADRewardedAd , bạn đặt GADFullscreenContentDelegate làm thuộc tính trên quảng cáo trước khi hiển thị quảng cáo.

v7

Nhanh

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

Nhanh

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

Loại bỏ API GADRewedBasedVideoAd kế thừa

API GADRewardedAd mới hơn đã được giới thiệu lần đầu tiên vào tháng 3 năm 2019 và đã trở thành API có tặng thưởng ưa thích trong hơn 18 tháng. Nó đã có nhiều cải tiến hơn so với API GADRewardedBasedVideoAd kế thừa, bao gồm khả năng tải nhiều quảng cáo có tặng thưởng cùng một lúc.

API GADRewardedBasedVideoAd kế thừa bị xóa trong SDK phiên bản 8.0.0.

Biểu ngữ thông minh ngừng sử dụng để thay thế cho biểu ngữ thích ứng

Quảng cáo biểu ngữ thông minh không được dùng nữa để thay thế cho quảng cáo biểu ngữ thích ứng . Biểu ngữ thích ứng mang lại hiệu suất cao hơn và linh hoạt hơn trong việc thiết lập chiều rộng quảng cáo. Nếu bạn muốn tiếp tục sử dụng biểu ngữ có chiều rộng đầy đủ, điều đó vẫn có thể được thực hiện bằng cách sử dụng biểu ngữ thích ứng, như được hiển thị trong đoạn mã sau:

Nhanh

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

Thoát khỏi ứng dụng gọi lại xóa

Lệnh gọi lại willLeaveApplication cho tất cả các định dạng quảng cáo đã bị xóa để có lợi cho các phương thức applicationDidEnterBackground:sceneDidEnterBackground: Việc sử dụng API cấp hệ điều hành sẽ thông báo cho bạn bất cứ khi nào người dùng rời khỏi ứng dụng của bạn, bất kể đó có phải là do tương tác với quảng cáo hay không.

Lưu ý rằng lệnh gọi lại willLeaveApplication không bao giờ được dự định là một trình xử lý nhấp chuột quảng cáo và việc dựa vào lệnh gọi lại này để báo cáo các nhấp chuột không tạo ra số liệu chính xác. Ví dụ: một nhấp chuột vào biểu tượng Lựa chọn quảng cáo khởi chạy trình duyệt bên ngoài đã gọi lại nhưng không tính một nhấp chuột.

Đổi tên lớp

Bảng dưới đây liệt kê các tên lớp cụ thể đã thay đổi hoặc bị xóa trong phiên bản 8. Tóm lại:

  • Tất cả các lớp liên quan đến GADUnifiedNativeAd đã được đổi tên thành GADNativeAd .
  • GADRewardBasedVideoAd , GADNativeExpressAdViewGADInstreamAd đã bị xóa.
  • Tất cả các lớp có tiền tố DFP đã được thay thế bằng tiền tố GAM .
Lớp v7.68.0 Lớp v8.0.0
DFPBannerView GAMBannerView
DFPBannerViewOptions GAMBannerViewOptions
DFPInterstitial GAMInterstitialAd
DFPRequest GAMRequest
GADRequestError NSError
GADUnifiedNativeAdView GADNativeAdView
GADUnifiedNativeAd GADNativeAd
GADUnifiedNativeAdAssetIdentifier GADNativeAdAssetIdentifier
GADUnifiedNativeAdDelegate GADNativeAdDelegate
GADUnifiedNativeAdUnconf DeadClickDelegate GADNativeAdUnconf DeadClickDelegate
GADNativeCustomTemplateAd GADCustomNativeAd
GADNativeCustomTemplateAdLoaderDelegate GADCustomNativeAdLoaderDelegate
GADNativeAdDelegate GADCustomNativeAdDelegate
GADInAppPurchase Loại bỏ
GADInterstitial GADInterstitialAd
GADNativeExpressAdView Loại bỏ
GADRewardBasedVideoAd Loại bỏ
GADInstreamAd Loại bỏ
GADInstreamAdView Loại bỏ

Phương thức bị xóa / thay thế

Bảng dưới đây liệt kê những thay đổi cụ thể trong phiên bản 8. Tóm lại:

  • Các phương thức và thuộc tính không dùng nữa trước đây đã bị xóa.
  • -willLeaveApplication: các phương thức ủy quyền đã bị xóa đối với tất cả các định dạng.
  • Tên lớp mạng quảng cáo đã chuyển đến thuộc tính GADResponseInfo .
  • Mã nhận dạng thiết bị thử nghiệm đã chuyển sang thuộc tính GADRequestConfiguration .
Lớp v7.68.0 API v7.68.0 API v8.0.0 Ghi chú
GADMobileAds + configWithApplicationID: -startWithCompletionHandler: ID ứng dụng hiện đã được đặt trong Info.plist.
+ disableAutomatedInApp PurchaseReporting -disableAutomatedInApp PurchaseReporting
+ vô hiệu hóaSDKCrashReporting -disableSDKCrashReporting
GADRequest testDevices GADRequestConfiguration .testdeviceidentifiers Thuộc tính testDeviceIdentifier áp dụng cho tất cả các yêu cầu quảng cáo, trong khi thuộc tính testDevices cũ được đặt cho mỗi yêu cầu.
giới tính Loại bỏ
ngày sinh nhật Loại bỏ
+ sdkVersion GADMobileAds.sharedInstance .sdkVersion
-setBirthday WithMonth: day: year: Loại bỏ
-setLocationWithDescription: -setLocationVới Latitude: kinh độ: độ chính xác:
-tagForChildDiirectTreatment: [GADMobileAds.sharedInstance.requestConfiguration tagForChildDictingTreatment]
GADErrorCode kGADError * GADError * Tiền tố k bị loại bỏ khỏi tất cả các hằng số mã lỗi.
GADBannerView hasAutoRefreshed autoloadEnabled
inAppPurchaseDelegate Loại bỏ
mediatedAdView Loại bỏ
adNetworkClassName responseInfo .adNetworkClassName
DFPBannerView -setValidAdSizesWithSizes: -setValidAdSizes:
DFPBannerViewOptions -adSizeDelegate Loại bỏ
GADBannerViewDelegate -adViewDidReceiveAd: -bannerViewDidReceiveAd:
-adView: didFailToReceive AdWithError: -bannerView: didFailToReceive AdWithError:
-adViewWillPresentScreen: -bannerViewWillPresentScreen:
-adViewWillDismissScreen: -bannerViewWillDismissScreen:
-adViewDidDismissScreen: -bannerViewDidDismissScreen:
-adViewWillLeaveApplication: Loại bỏ
GADNativeCustomTemplateAd templateID GADCustomNativeAd.formatID
-performClickOnAssetWithKey: customClickHandler: -performClickOnAssetWithKey:
GADNativeAdImageAd LoaderOptions ưa thíchImageOrientation GADNativeAdMediaAdOptions .mediaAspectRatio
GADInterstitial inAppPurchaseDelegate Loại bỏ
sẵn sàng Loại bỏ Sử dụng canPresentFrom RootViewController: error: để thay thế.
đã được dùng Loại bỏ
-trong đó -initWithAdUnitID:
-setAdUnitID: -initWithAdUnitID:
adNetworkClassName responseInfo .adNetworkClassName
-interstitialWill Rời khỏi ứng dụng: Loại bỏ
GADUnifiedNativeAd videoController mediaContent.videoController
adNetworkClassName responseInfo .adNetworkClassName