Quảng cáo gốc

Quảng cáo gốc là thành phần quảng cáo hiển thị cho người dùng thông qua các thành phần giao diện người dùng có sẵn của nền tảng. Các quảng cáo này được hiển thị bằng cách sử dụng chính các lớp mà bạn đã sử dụng trong bảng phân cảnh của mình và có thể được định dạng cho phù hợp với thiết kế trực quan của ứng dụng.

Khi một quảng cáo gốc tải, ứng dụng của bạn sẽ nhận được một đối tượng quảng cáo chứa các thành phần của quảng cáo đó, và ứng dụng (thay vì SDK quảng cáo trên thiết bị di động của Google) sẽ chịu trách nhiệm hiển thị các thành phần đó.

Nói chung, có hai bước để triển khai thành công quảng cáo gốc: Tải quảng cáo bằng SDK và sau đó hiển thị nội dung quảng cáo trong ứng dụng của bạn.

Trang này cho biết cách sử dụng SDK để tải quảng cáo gốc.

Điều kiện tiên quyết

Luôn thử nghiệm bằng quảng cáo thử nghiệm

Khi tạo và thử nghiệm ứng dụng, hãy đảm bảo bạn sử dụng quảng cáo thử nghiệm thay vì quảng cáo thực tế.

Cách dễ nhất để tải quảng cáo thử nghiệm là sử dụng mã đơn vị quảng cáo thử nghiệm dành riêng cho quảng cáo gốc trên iOS:

ca-app-pub-3940256099942544/3986624511

Mã này được định cấu hình đặc biệt để trả về quảng cáo thử nghiệm cho mọi yêu cầu và bạn có thể sử dụng mã này trong ứng dụng của mình khi lập trình, thử nghiệm và gỡ lỗi. Bạn chỉ cần nhớ thay thế mã này bằng mã đơn vị quảng cáo của riêng mình trước khi xuất bản ứng dụng.

Để biết thêm thông tin về cách hoạt động của quảng cáo thử nghiệm của SDK Quảng cáo của Google trên thiết bị di động, hãy xem bài viết Quảng cáo thử nghiệm.

Tải quảng cáo

Quảng cáo gốc được tải bằng lớp GADAdLoader. Lớp này sẽ gửi thông báo đến thực thể đại diện theo giao thức GADAdLoaderDelegate.

Khởi chạy trình tải quảng cáo

Trước khi có thể tải quảng cáo, bạn phải khởi chạy trình tải quảng cáo. Mã sau đây minh hoạ cách khởi chạy GADAdLoader:

Swift

adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    rootViewController: self,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

Bạn cần có một mã đơn vị quảng cáo (có thể dùng mã thử nghiệm), các hằng số để chuyển vào mảng adTypes nhằm chỉ định các định dạng gốc mà bạn muốn yêu cầu và mọi tuỳ chọn mà bạn muốn đặt trong thông số options. Bạn có thể tham khảo danh sách các giá trị có thể sử dụng cho thông số options trên trang Đặt các lựa chọn quảng cáo gốc.

Mảng adTypes phải chứa hằng số này sau đây:

Triển khai thực thể uỷ quyền của trình tải quảng cáo

Đại biểu của trình tải quảng cáo cần triển khai các giao thức dành riêng cho loại quảng cáo của bạn. Đối với quảng cáo gốc, giao thức GADNativeAdLoaderDelegate bao gồm một thông báo được gửi tới thực thể đại diện khi quảng cáo gốc đã tải.

Swift

public func adLoader(_ adLoader: GADAdLoader,
            didReceive nativeAd: GADNativeAd)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd;

Yêu cầu quảng cáo

Sau khi GADAdLoader được khởi chạy, hãy gọi phương thức loadRequest: để yêu cầu quảng cáo:

Swift

adLoader.load(GADRequest())

Objective-C

[self.adLoader loadRequest:[GADRequest request]];

Phương thức loadRequest: trong GADAdLoader chấp nhận các đối tượng GADRequest giống như đối tượng của quảng cáo biểu ngữ và quảng cáo xen kẽ. Bạn có thể sử dụng các đối tượng yêu cầu để thêm thông tin nhắm mục tiêu, giống như cách bạn thực hiện với các loại quảng cáo khác.

Tải nhiều quảng cáo (không bắt buộc)

Để tải nhiều quảng cáo trong một yêu cầu, hãy đặt đối tượng GADMultipleAdsAdLoaderOptions khi khởi chạy GADAdLoader.

Swift

let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    rootViewController: self,
    adTypes: [ .native ],
    options: [ multipleAdOptions ])

Objective-C

GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
    [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ multipleAdsOptions ]];

Số lượng quảng cáo cho mỗi yêu cầu được giới hạn là 5 quảng cáo và điều này không đảm bảo rằng SDK sẽ trả về số lượng quảng cáo chính xác đã yêu cầu.

Tất cả quảng cáo của Google được trả về sẽ khác nhau, mặc dù quảng cáo từ khoảng không quảng cáo đặt trước hoặc người mua bên thứ ba không được đảm bảo là riêng biệt.

Không sử dụng lớp GADMultipleAdsAdLoaderOptions nếu bạn đang sử dụng tính năng dàn xếp, vì yêu cầu cho nhiều quảng cáo gốc hiện không hoạt động đối với mã đơn vị quảng cáo đã được định cấu hình cho tính năng dàn xếp.

Xác định thời điểm quá trình tải hoàn tất

Sau khi gọi loadRequest:, một ứng dụng có thể nhận được kết quả của yêu cầu đó bằng cách sử dụng các lệnh gọi tới:

Yêu cầu cho một quảng cáo sẽ dẫn đến một lệnh gọi đến một trong các phương thức đó.

Việc yêu cầu nhiều quảng cáo sẽ dẫn đến ít nhất một lệnh gọi lại đến các phương thức trên, nhưng không nhiều hơn số lượng quảng cáo tối đa đã yêu cầu.

Ngoài ra, GADAdLoaderDelegate còn cung cấp lệnh gọi lại adLoaderDidFinishLoading. Phương thức uỷ quyền này cho biết rằng một trình tải quảng cáo đã tải xong quảng cáo và không có quảng cáo hoặc lỗi nào khác được báo cáo cho yêu cầu. Dưới đây là ví dụ về cách sử dụng phương thức này khi tải nhiều quảng cáo gốc cùng một lúc:

Swift

class ViewController: UIViewController, GADNativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
        rootViewController: self,
        adTypes: [ .native ],
        options: [ multipleAdOptions ])

    adLoader.delegate = self
    adLoader.load(GADRequest())
  }

  func adLoader(_ adLoader: GADAdLoader,
       didReceive nativeAd: GADNativeAd) {
    // A native ad has loaded, and can be displayed.
  }

  func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
    // The adLoader has finished loading ads, and a new request can be sent.
  }

}

Objective-C

@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
      [[GADMultipleAdsAdLoaderOptions alloc] init];
  multipleAdsOptions.numberOfAds = 5;
  self.adLoader = [[GADAdLoader alloc]
        initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
      rootViewController:rootViewController
                 adTypes:@[ GADAdLoaderAdTypeNative ]
                 options:@[ multipleAdsOptions ]];

  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // A native ad has loaded, and can be displayed.
}

- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
  // The adLoader has finished loading ads, and a new request can be sent.
}

@end

Xử lý các yêu cầu không thành công

Các giao thức ở trên mở rộng giao thức GADAdLoaderDelegate để xác định thông báo sẽ được gửi khi quảng cáo tải không thành công.

Swift

public func adLoader(_ adLoader: GADAdLoader,
    didFailToReceiveAdWithError error: NSError)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(NSError *)error;

Nhận thông báo về các sự kiện quảng cáo gốc

Để nhận thông báo về các sự kiện liên quan đến lượt tương tác với quảng cáo gốc, hãy đặt thuộc tính uỷ quyền của quảng cáo gốc:

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

Sau đó, hãy triển khai GADNativeAdDelegate để nhận các lệnh gọi uỷ quyền sau:

Swift

func nativeAdDidRecordImpression(_ nativeAd: GADNativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: GADNativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: GADNativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: GADNativeAd) {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

Objective-C

- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
  // The native ad was shown.
}

- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
  // The native ad was clicked on.
}

- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
  // The native ad will present a full screen view.
}

- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad will dismiss a full screen view.
}

- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad did dismiss a full screen view.
}

- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

Các phương pháp hay nhất

Hãy tuân thủ các quy tắc này khi tải quảng cáo.

  • Các ứng dụng sử dụng quảng cáo gốc trong một danh sách nên lưu trước danh sách quảng cáo đó vào bộ nhớ đệm.

  • Khi lưu quảng cáo vào bộ nhớ đệm, hãy xoá bộ nhớ đệm rồi tải lại sau một giờ.

  • Không gọi lại loadRequest: trên GADAdLoader cho đến khi yêu cầu trước đó tải xong, như được biểu thị bằng adLoaderDidFinishLoading:.

Hiển thị quảng cáo của bạn

Sau khi bạn tải quảng cáo, việc còn lại là hiển thị quảng cáo đó cho người dùng. Hãy xem Hướng dẫn về Quảng cáo gốc nâng cao của chúng tôi để biết cách thực hiện.