Quảng cáo gốc

Quảng cáo gốc là các nội dung 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 vốn có của nền tảng. Các quảng cáo này hiển thị bằng cách sử dụng chính các lớp mà bạn đã dùng trong bảng thiết kế (storyboard) và có thể được định dạng để 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 nội dung của quảng cáo đó và ứng dụng (thay vì SDK) sẽ chịu trách nhiệm hiển thị các nội dung đó. Khác với các định dạng quảng cáo khác, giao diện của quảng cáo gốc không tùy chỉnh được.

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng SDK quảng cáo trên thiết bị di động của Google để triển khai quảng cáo gốc trong ứng dụng iOS, cũng như một số điều quan trọng cần lưu ý trong quá trình thực hiệ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 thông qua SDK và hiển thị nội dung quảng cáo trong ứng dụng của bạn. Trang này thảo luận về cách sử dụng SDK để tải quảng cáo.

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

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

Trước khi bắt đầu, hãy nhớ rằng khi tạo và thử nghiệm các ứng dụng, bạn nên sử dụng quảng cáo thử nghiệm thay vì quảng cáo thực tế. Lý do là vì nếu sử dụng quảng cáo thực tế, tài khoản của bạn có thể bị tạm ngừng.

Cách dễ nhất để tải quảng cáo thử nghiệm là sử dụng ID đơn vị quảng cáo thử nghiệm chuyên biệt cho tất cả quảng cáo gốc nâng cao 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 viết mã, chạy 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 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 trên thiết bị di động, hãy xem bài viết về Quảng cáo thử nghiệm.

Tải quảng cáo

Có hai định dạng do hệ thống xác định đối với quảng cáo gốc: định dạng nội dung và định dạng cài đặt ứng dụng.

Cả hai loại quảng cáo này đều do một lớp biểu thị, đó là: GADUnifiedNativeAd. Một bản sao của lớp này chứa nội dung cho quảng cáo gốc. Xin lưu ý rằng tùy thuộc vào loại quảng cáo mà GADUnifiedNativeAd biểu thị, một số trường sẽ không được điền (tức là các trường đó sẽ có giá trị nil).

Quảng cáo gốc được tải thông qua các đối tượng GADAdLoader. Các đối tượng này sẽ gửi thông báo đến đại biểu theo giao thức GADAdLoaderDelegate.

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

Trước khi 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 họa cách khởi chạy GADAdLoader:

Swift

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

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ ... ad type constants ... ]
               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 quảng cáo gốc mà bạn muốn yêu cầu và bất kỳ tùy chọn nào bạn muốn đặt trong thông số options. Bạn có thể tìm thấy danh sách các giá trị có thể sử dụng cho thông số options trong trang Cài đặt tùy chọn quảng cáo gốc.

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

Triển khai đại biểu 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 unified:

  • GADUnifiedNativeAdLoaderDelegate Giao thức này sẽ gửi một thông báo tới đại biểu khi quảng cáo gốc hợp nhất đã tải xong:

    Swift

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

    Objective-C

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

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

Sau khi bạn khởi chạy GADAdLoader, 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 với đố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.

Thời điểm yêu cầu quảng cáo

Các ứng dụng hiển thị quảng cáo gốc có thể yêu cầu quảng cáo trước khi quảng cáo thực sự hiển thị. Trong nhiều trường hợp, đây là phương pháp đề xuất. Ví dụ: một ứng dụng hiển thị danh sách các mục kết hợp quảng cáo gốc có thể tải quảng cáo gốc cho toàn bộ danh sách, biết rằng một số quảng cáo chỉ hiển thị sau khi người dùng cuộn chế độ xem và một số quảng cáo hoàn toàn không hiển thị.

Mặc dù việc tìm nạp trước quảng cáo là một kỹ thuật hay, nhưng điều quan trọng là nhà xuất bản không được giữ mãi những quảng cáo cũ mà không hiển thị. Bất kỳ đối tượng quảng cáo gốc nào bị giữ quá 1 giờ mà không hiển thị đều sẽ bị hủy và được thay thế bằng quảng cáo mới từ yêu cầu mới.

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

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

Việc yêu cầu một quảng cáo sẽ dẫn đến một lệnh gọi đến một trong những 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 ủy quyền này cho biết rằng một trình tải quảng cáo đã hoàn tất quá trình tải quảng cáo và không có lỗi hoặc quảng cáo 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, GADUnifiedNativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdsOptions = GADMultipleAdsAdLoaderOptions()
    multipleAdsOptions.numberOfAds = 5

    adLoader = GADAdLoader(adUnitID: YOUR_AD_UNIT_ID, rootViewController: self,
        adTypes: [GADAdLoaderAdType.unifiedNative],
        options: [multipleAdsOptions])
    adLoader.delegate = self
    adLoader.load(GADRequest())
  }

  func adLoader(_ adLoader: GADAdLoader,
                didReceive nativeAd: GADUnifiedNativeAd) {
    // A unified 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 () <GADUnifiedNativeAdLoaderDelegate, 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:YOUR_AD_UNIT_ID
          rootViewController:self
                     adTypes:@[kGADAdLoaderAdTypeUnifiedNative]
                     options:@[multipleAdsOptions]];
  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveUnifiedNativeAd:(GADUnifiedNativeAd *)nativeAd {
   // A unified 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 một thông báo đã được gửi khi quảng cáo tải không thành công. Bạn có thể sử dụng đối tượng GADRequestError để xác định nguyên nhân gây ra lỗi.

Swift

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

Objective-C

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

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

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

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

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

Swift

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

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

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

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

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

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

Objective-C

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

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

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

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

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

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

Hiển thị quảng cáo

Sau khi tải quảng cáo, công việc còn lại của bạn chỉ 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.