Sự kiện tùy chỉnh cho quảng cáo biểu ngữ và quảng cáo xen kẽ

Tài liệu hướng dẫn này dành cho các nhà xuất bản đang tìm cách thêm tùy chọn hỗ trợ cho các sự kiện tùy chỉnh của quảng cáo xen kẽ và quảng cáo biểu ngữ trong hoạt động dàn xếp AdMob.

Sự kiện tùy chỉnh cho phép bạn đặt bất kỳ chế độ xem nào mà bạn muốn vào không gian quảng cáo. Thông qua các sự kiện tùy chỉnh, bạn cũng có thể kiếm tiền từ ứng dụng bằng các mạng quảng cáo không được hoạt động dàn xếp hỗ trợ trực tiếp. Một sự kiện tùy chỉnh sẽ được triển khai thông qua giao thức GADCustomEventBanner hoặc GADCustomEventInterstitial.

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

Trước khi có thể tích hợp các sự kiện tùy chỉnh cho quảng cáo biểu ngữ hoặc quảng cáo xen kẽ, bạn cần tích hợp định dạng quảng cáo đó vào ứng dụng của mình. Dưới đây là các hướng dẫn liên quan:

Mạng quảng cáo mẫu

Tài liệu hướng dẫn này minh họa cách phân phát quảng cáo xen kẽ từ Mạng quảng cáo mẫu bằng cách dùng SampleCustomEventBanner và các lớp sự kiện tùy chỉnh SampleCustomEventInterstital. SDK của Mạng quảng cáo mẫu là một SDK mô phỏng được phát triển để minh họa cách triển khai trong thực tế của một sự kiện tùy chỉnh. SDK này chứa các lớp là đại diện của các lớp được hầu hết mạng quảng cáo cung cấp. Hãy xem cách triển khai SDK mẫu hoàn chỉnh để biết thêm thông tin về các lớp này.

Trong ví dụ sau, trước tiên bạn sẽ tạo một sự kiện tùy chỉnh của quảng cáo biểu ngữ trong hoạt động dàn xếp AdMob. Việc này yêu cầu bạn phải xác định một sự kiện tùy chỉnh trỏ đến lớp cụ thể đó trong ứng dụng của bạn thông qua giao diện người dùng AdMob, sau đó triển khai một sự kiện tùy chỉnh của quảng cáo biểu ngữ để trả về một chế độ xem.

Xác định sự kiện tùy chỉnh

Bạn phải xác định sự kiện tùy chỉnh này trong Giao diện người dùng AdMob. Hãy đọc bài viết Tạo sự kiện tùy chỉnh để biết hướng dẫn về cách chuyển đến Giao diện người dùng.

Dưới đây là ảnh chụp màn hình hiển thị một số tùy chọn cài đặt của sự kiện tùy chỉnh mẫu:

Bảng dưới đây chứa các thông tin hướng dẫn về cách điền các thông số này.

Tên nhóm

Nhập tên nhóm hoàn toàn đủ điều kiện cho lớp sẽ triển khai sự kiện tùy chỉnh.

Nếu lớp được triển khai trong Swift, bạn cần thêm tên của ứng dụng/mô-đun khung (ví dụ: appName.className) vào trước tên lớp.

Bắt buộc phải có tên mục tiêu nếu bạn có nhiều mục tiêu trong dự án hoặc nếu tên dự án khác với tên mục tiêu. Tên mục tiêu sẽ giống như sau: appName_targetName.className. Ngoài ra, hãy nhớ thay thế mọi ký tự không phải chữ-số (ví dụ như thay thế dấu gạch ngang bằng dấu gạch dưới).

Để biết thêm thông tin, hãy xem ví dụ này.

Nhãn Nhập một tên duy nhất cho sự kiện này.
Thông số Nếu bạn muốn chuyển một đối số tới sự kiện tùy chỉnh, hãy nhập chuỗi phù hợp.

Yêu cầu quảng cáo biểu ngữ

Đối với các yêu cầu quảng cáo biểu ngữ của sự kiện tùy chỉnh, phương thức requestBannerAd:parameter:label:request: sẽ được gọi ngay lập tức sau khi lớp sự kiện tùy chỉnh được tạo bản sao. Phương thức này không trả về bất kỳ giá trị nào. Giả định là sự kiện tùy chỉnh sẽ bắt đầu tìm nạp quảng cáo không đồng bộ trên mạng. Sự kiện tùy chỉnh của bạn sẽ hoạt động như một đại biểu cho SDK để theo dõi lệnh gọi lại.

Nếu SDK của bạn không hỗ trợ kích thước quảng cáo nhất định hoặc không hỗ trợ quảng cáo biểu ngữ, hãy gọi phương thức customEventBanner:didFailAd: của đại biểu sự kiện tùy chỉnh. Các thông số serverParameterserverLabel tương ứng với các trường nhãn và thông số được xác định khi tạo sự kiện tùy chỉnh trong giao diện người dùng AdMob.

Dưới đây là một ví dụ về việc triển khai requestBannerAd:parameter:label:request: bằng cách sử dụng Mạng quảng cáo mẫu:

Swift

func requestBannerAd(adSize: GADAdSize, parameter serverParameter: String!,
    label serverLabel: String!, request: GADCustomEventRequest!) {
  // Create a banner view with the appropriate size.
  bannerAd = SampleBanner(frame: CGRectMake(
      0, 0, adSize.size.width, adSize.size.height))
  bannerAd.delegate = self
  bannerAd.adUnit = serverParameter
  let adRequest = SampleAdRequest()
  adRequest.testMode = request.isTesting
  adRequest.keywords = request.userKeywords
  bannerAd.fetchAd(adRequest)
}

Objective-C

- (void)requestBannerAd:(GADAdSize)adSize
              parameter:(NSString *)serverParameter
                  label:(NSString *)serverLabel
                request:(GADCustomEventRequest *)request {
  // Create the bannerView with the appropriate size.
  self.bannerAd =
      [[SampleBanner alloc] initWithFrame:CGRectMake(0,
                                                     0,
                                                     adSize.size.width,
                                                     adSize.size.height)];

  self.bannerAd.delegate = self;
  self.bannerAd.adUnit = serverParameter;
  SampleAdRequest *adRequest = [[SampleAdRequest alloc] init];
  adRequest.testMode = request.isTesting;
  adRequest.keywords = request.userKeywords;
  [self.bannerAd fetchAd:adRequest];
}

Gửi các phần bổ sung mạng quảng cáo cho các yêu cầu sự kiện tùy chỉnh

Để gửi thông số mạng quảng cáo bổ sung kèm theo yêu cầu đến sự kiện tùy chỉnh để xử lý, bạn hãy sử dụng hàm GADRequest registerAdNetworkExtras:. Bạn phải tạo một bản sao của GADCustomEventExtras (phù hợp với giao thức) GADAdNetworkExtras để điền thuộc tính GADCustomEventRequest.additionalParameters. Để chuyển các thông số bổ sung, hãy gọi GADCustomEventExtras setExtras:forLabel:, chuyển các phần bổ sung của bạn dưới dạng từ điển và nhãn của sự kiện tùy chỉnh mà bạn đã xác định trong Giao diện người dùng AdMob.

Dưới đây là một đoạn mã thể hiện cách chuyển một thông số SampleExtra cho nhãn SampleCustomEvent được xác định trước đó:

Swift

let request = GADRequest()
let extras = GADCustomEventExtras()
extras.setExtras(["SampleExtra": true], forLabel: "SampleCustomEvent")
request.register(extras)

Objective-C

GADRequest *request = [GADRequest request];
GADCustomEventExtras *extras = [[GADCustomEventExtras alloc] init];
[extras setExtras:@{@"SampleExtra": @(YES)} forLabel:@"SampleCustomEvent"];
[request registerAdNetworkExtras:extras];

Nếu bạn không đăng ký bản sao của GADCustomEventExtras cho yêu cầu sự kiện tùy chỉnh, thuộc tính additionalParameters của GADCustomEventRequest sẽ là nil.

Thông báo cho tính năng dàn xếp AdMob

Triển khai trình xử lý quảng cáo cho mạng của bạn và gọi các lệnh gọi lại có liên quan trên đại biểu của thông số tùy chỉnh để gửi thông báo về lại cho hoạt động dàn xếp. Ví dụ sau triển khai giao diện SampleBannerAdDelegate của Mạng quảng cáo mẫu để gửi các thông báo sau:

Swift

/// Type property for Sample Ad Network custom event error domain.
static let customEventErrorDomain = "com.google.CustomEvent"

// Sent when banner ad has loaded.
func bannerDidLoad(banner: SampleBanner!) {
  delegate.customEventBanner(self, didReceiveAd: banner)
}

// Sent when banner has failed to load.
func banner(banner: SampleBanner!, didFailToLoadAdWithErrorCode error: SampleErrorCode) {
  let nsError = NSError(domain: SampleCustomEventBanner.customEventErrorDomain,
      code: error.rawValue, userInfo: nil)
  delegate.customEventBanner(self, didFailAd: nsError)
}

// Sent when a banner is clicked and an external application is launched
func bannerWillLeaveApplication(banner: SampleBanner!) {
  delegate.customEventBannerWasClicked(self)
  delegate.customEventBannerWillLeaveApplication(self)
}

Objective-C

/// Constant for Sample Ad Network custom event error domain.
static NSString *const customEventErrorDomain = @"com.google.CustomEvent";

// Sent when banner ad has loaded.
- (void)bannerDidLoad:(SampleBanner *)banner {
  [self.delegate customEventBanner:self didReceiveAd:banner];
}

// Sent when banner has failed to load.
- (void)banner:(SampleBanner *)banner
    didFailToLoadAdWithErrorCode:(SampleErrorCode)errorCode {
  NSError *error = [NSError errorWithDomain:customEventErrorDomain
                                       code:errorCode
                                   userInfo:nil];
  [self.delegate customEventBanner:self didFailAd:error];
}

// Sent when a banner is clicked and an external application is launched.
- (void)bannerWillLeaveApplication:(SampleBanner *)banner {
  [self.delegate customEventBannerWasClicked:self];
  [self.delegate customEventBannerWillLeaveApplication:self];
}

Tính năng dàn xếp AdMob hỗ trợ các lệnh gọi lại sau đây:

Phương thức Thời điểm gọi
customEventBanner:didReceiveAd: Yêu cầu quảng cáo biểu ngữ thành công.
customEventBanner:didFailAd: Yêu cầu quảng cáo biểu ngữ không thành công.
customEventBannerWillPresentModal: Các quảng cáo biểu ngữ sẽ hiển thị ở chế độ xem toàn màn hình.
customEventBannerWillDismissModal: Các quảng cáo biểu ngữ sẽ bỏ qua chế độ xem toàn màn hình.
customEventBannerDidDismissModal: Các quảng cáo biểu ngữ đã bỏ qua chế độ xem toàn màn hình.
customEventBannerWillLeaveApplication: Quảng cáo biểu ngữ khiến người dùng rời khỏi ứng dụng.
customEventBannerWasClicked: Đã có người nhấp vào quảng cáo biểu ngữ.

Quảng cáo xen kẽ

Phương thức Thời điểm gọi
customEventInterstitial:DidReceiveAd: Yêu cầu quảng cáo xen kẽ thành công.
customEventInterstitial:didFailAd: Yêu cầu quảng cáo xen kẽ không thành công.
customEventInterstitialWillPresent: Quảng cáo xen kẽ sẽ được hiển thị ở chế độ xem toàn màn hình.
customEventInterstitialWillDismiss: Quảng cáo xen kẽ sẽ bỏ qua chế độ xem toàn màn hình.
customEventInterstitialDidDismiss: Quảng cáo xen kẽ đã bỏ qua chế độ xem toàn màn hình.
customEventInterstitialWillLeaveApplication: Quảng cáo xen kẽ khiến người dùng rời khỏi ứng dụng.
customEventInterstitialWasClicked: Đã có người nhấp vào quảng cáo xen kẽ.

Xem cách triển khai mẫu cho quảng cáo biểu ngữ của một sự kiện tùy chỉnh để biết thêm thông tin.

Sự kiện tùy chỉnh của quảng cáo xen kẽ

Cách triển khai một sự kiện tùy chỉnh của quảng cáo xen kẽ cũng tương tư như cách triển khai sự kiện tùy chỉnh của quảng cáo biểu ngữ. Điểm khác biệt chính là lớp sự kiện tùy chỉnh của quảng cáo xen kẽ mà bạn tạo sẽ triển khai giao thức GADCustomEventInterstitial thay vì giao thức GADCustomEventBanner.

Xác định sự kiện tùy chỉnh

Bạn phải xác định sự kiện tùy chỉnh này trong Giao diện người dùng AdMob. Hãy đọc bài viết Tạo sự kiện tùy chỉnh để biết hướng dẫn về cách chuyển đến Giao diện người dùng.

Dưới đây là ảnh chụp màn hình hiển thị một số tùy chọn cài đặt về sự kiện tùy chỉnh mẫu:

Bảng dưới đây chứa các thông tin hướng dẫn về cách điền các thông số này.

Tên nhóm

Nhập tên nhóm hoàn toàn đủ điều kiện cho lớp sẽ triển khai sự kiện tùy chỉnh.

Nếu lớp được triển khai trong Swift, bạn cần thêm tên của ứng dụng/mô-đun khung (ví dụ, appName.className) vào trước tên lớp.

Bắt buộc phải có tên mục tiêu nếu bạn có nhiều mục tiêu trong dự án hoặc nếu tên dự án khác với tên mục tiêu. Tên mục tiêu sẽ giống như sau: appName_targetName.className. Ngoài ra, hãy nhớ thay thế mọi ký tự không phải chữ-số (ví dụ như thay thế dấu gạch ngang bằng dấu gạch dưới).

Để biết thêm thông tin, hãy xem ví dụ này.

Nhãn Nhập một tên duy nhất cho sự kiện này.
Thông số Nếu bạn muốn chuyển một đối số tới sự kiện tùy chỉnh, hãy nhập chuỗi phù hợp.

Yêu cầu quảng cáo xen kẽ

Đối với các yêu cầu quảng cáo xen kẽ của sự kiện tùy chỉnh, phương thức requestInterstitialAdWithParameter:label:request: sẽ được gọi ngay lập tức sau khi lớp sự kiện tùy chỉnh được tạo bản sao. Phương thức này không trả về bất cứ giá trị nào. Giả định là sự kiện tùy chỉnh sẽ bắt đầu tìm nạp quảng cáo không đồng bộ trên mạng.

Sự kiện tùy chỉnh của bạn sẽ hoạt động như một đại biểu cho SDK để theo dõi lệnh gọi lại. Các thông số serverParameterserverLabel tương ứng với các trường nhãn và thông số được xác định khi tạo sự kiện tùy chỉnh trong giao diện người dùng AdMob.

Dưới đây là một ví dụ về việc triển khai requestInterstitialAdWithParameter:label:request: bằng cách sử dụng Mạng quảng cáo mẫu:

Swift

func requestInterstitialAdWithParameter(serverParameter: String!,
    label serverLabel: String!, request: GADCustomEventRequest!) {
  interstitial = SampleInterstitial()
  interstitial.delegate = self
  interstitial.adUnit = serverParameter
  let adRequest = SampleAdRequest()
  adRequest.testMode = request.isTesting
  adRequest.keywords = request.userKeywords
  interstitial.fetchAd(adRequest)
}

Objective-C

- (void)requestInterstitialAdWithParameter:(NSString *)serverParameter
                                     label:(NSString *)serverLabel
                                   request:(GADCustomEventRequest *)request {
  self.interstitial = [[SampleInterstitial alloc] init];
  self.interstitial.delegate = self;
  self.interstitial.adUnit = serverParameter;
  SampleAdRequest *adRequest = [[SampleAdRequest alloc] init];
  adRequest.testMode = request.isTesting;
  adRequest.keywords = request.userKeywords;
  [self.interstitial fetchAd:adRequest];
}

Giao thức sự kiện tùy chỉnh GADCustomEventInterstitial yêu cầu bạn triển khai phương thức presentFromRootViewController:. Hoạt động dàn xếp gọi phương thức này khi bạn yêu cầu SDK quảng cáo trên thiết bị di động hiển thị quảng cáo xen kẽ như sau:

Swift

func presentFromRootViewController(rootViewController: UIViewController!) {
  if interstitial.interstitialLoaded {
    interstitial.show()
  }
}

Objective-C

- (void)presentFromRootViewController:(UIViewController *)rootViewController {
  if ([self.interstitial isInterstitialLoaded]) {
    [self.interstitial show];
  }
}

Gửi các phần bổ sung mạng quảng cáo cho các yêu cầu sự kiện tùy chỉnh

Để gửi thông số mạng quảng cáo bổ sung kèm theo yêu cầu đến sự kiện tùy chỉnh để xử lý, bạn hãy sử dụng hàm GADRequest registerAdNetworkExtras:. Bạn phải tạo một bản sao của GADCustomEventExtras (phù hợp với giao thức) GADAdNetworkExtras để điền thuộc tính GADCustomEventRequest.additionalParameters. Để chuyển các thông số bổ sung, hãy gọi GADCustomEventExtras setExtras:forLabel:, chuyển các phần bổ sung của bạn dưới dạng từ điển và nhãn của sự kiện tùy chỉnh mà bạn đã xác định trong Giao diện người dùng AdMob.

Dưới đây là một đoạn mã thể hiện cách chuyển một thông số SampleExtra cho nhãn SampleCustomEvent được xác định trước đó:

Swift

let request = GADRequest()
let extras = GADCustomEventExtras()
extras.setExtras(["SampleExtra": true], forLabel: "SampleCustomEvent")
request.register(extras)

Objective-C

GADRequest *request = [GADRequest request];
GADCustomEventExtras *extras = [[GADCustomEventExtras alloc] init];
[extras setExtras:@{@"SampleExtra": @(YES)} forLabel:@"SampleCustomEvent"];
[request registerAdNetworkExtras:extras];

Nếu bạn không đăng ký bản sao của GADCustomEventExtras cho yêu cầu sự kiện tùy chỉnh, thuộc tính additionalParameters của GADCustomEventRequest sẽ là nil.

Thông báo cho tính năng dàn xếp AdMob

Đối với sự kiện tùy chỉnh quảng cáo biểu ngữ, hãy triển khai trình xử lý quảng cáo cho mạng của bạn để gửi thông báo về lại cho hoạt động dàn xếp. Ví dụ sau thể hiện cách triển khai giao diện SampleInterstitialAdDelegate của mạng quảng cáo mẫu:

Swift

/// Type property for Sample Ad Network custom event error domain.
static let customEventErrorDomain = "com.google.CustomEvent"

// Sent when an interstitial ad has loaded.
func interstitialDidLoad(interstitial: SampleInterstitial!) {
  delegate.customEventInterstitialDidReceiveAd(self)
}

// Sent when interstitial ad has failed to load.
func interstitial(interstitial: SampleInterstitial!,
    didFailToLoadAdWithErrorCode errorCode: SampleErrorCode) {
  let nsError = NSError(domain: SampleCustomEventInterstitial.customEventErrorDomain,
      code: errorCode.rawValue, userInfo: nil)
  delegate.customEventInterstitial(self, didFailAd: nsError)
}

// Sent when an interstitial is about to be shown.
func interstitialWillPresentScreen(interstitial: SampleInterstitial!) {
  delegate.customEventInterstitialWillPresent(self)
}

// Sent when an interstitial is about to be dismissed.
func interstitialWillDismissScreen(interstitial: SampleInterstitial!) {
  delegate.customEventInterstitialWillDismiss(self)
}

// Sent when an interstitial has been dismissed.
func interstitialDidDismissScreen(interstitial: SampleInterstitial!) {
  delegate.customEventInterstitialDidDismiss(self)
}

// Sent when an interstitial is clicked and an external application is launched.
func interstitialWillLeaveApplication(interstitial: SampleInterstitial!) {
  delegate.customEventInterstitialWasClicked(self)
  delegate.customEventInterstitialWillLeaveApplication(self)
}

Objective-C

/// Constant for Sample Ad Network custom event error domain.
static NSString *const customEventErrorDomain = @"com.google.CustomEvent";

// Sent when an interstitial ad has loaded.
- (void)interstitialDidLoad:(SampleInterstitial *)interstitial {
  [self.delegate customEventInterstitialDidReceiveAd:self];
}

// Sent when an interstitial ad has failed to load.
- (void)interstitial:(SampleInterstitial *)interstitial
    didFailToLoadAdWithErrorCode:(SampleErrorCode)errorCode {
  NSError *error = [NSError errorWithDomain:customEventErrorDomain
                                       code:errorCode
                                   userInfo:nil];
  [self.delegate customEventInterstitial:self didFailAd:error];
}

// Sent when an interstitial is about to be shown.
- (void)interstitialWillPresentScreen:(SampleInterstitial *)interstitial {
  [self.delegate customEventInterstitialWillPresent:self];
}

// Sent when an interstitial is about to be dismissed.
- (void)interstitialWillDismissScreen:(SampleInterstitial *)interstitial {
  [self.delegate customEventInterstitialWillDismiss:self];
}

// Sent when an interstitial has been dismissed.
- (void)interstitialDidDismissScreen:(SampleInterstitial *)interstitial {
  [self.delegate customEventInterstitialDidDismiss:self];
}

// Sent when an interstitial is clicked and an external application is launched.
- (void)interstitialWillLeaveApplication:(SampleInterstitial *)interstitial {
  [self.delegate customEventInterstitialWasClicked:self];
  [self.delegate customEventInterstitialWillLeaveApplication:self];
}

Việc gửi thông báo về lại cho hoạt động dàn xếp cho phép sự kiện tùy chỉnh tiếp tục quy trình dàn xếp.

Hãy xem bài viết cách triển khai mẫu cho một sự kiện tùy chỉnh của quảng cáo xen kẽ để biết thêm thông tin.