Triển khai AFS dành cho ứng dụng di động (AFSMA) cho iOS

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

Hướng dẫn triển khai này giả định bạn đã quen với các yêu cầu sau:

Tổng quan

Tài liệu này trình bày quy trình tích hợp quảng cáo AFS dành cho ứng dụng di động (AFSMA) trong ứng dụng di động iOS. Quảng cáo AFSMA đôi khi còn được gọi là quảng cáo tìm kiếm theo chiều cao động. Để yêu cầu và hiển thị quảng cáo AFSMA trên iOS, bạn cần triển khai những phương thức sau:

GADSearchBannerView

  • Lớp này kế thừa từ lớp UIView của iOS và hiển thị quảng cáo AFSMA. GADSearchBannerView gửi yêu cầu quảng cáo bằng GADDynamicHeightSearchRequest và hiển thị quảng cáo được trả về. Bạn phải thêm GADSearchBannerView vào bất kỳ khung hiển thị hiện có nào của ứng dụng; thường thì bộ điều khiển khung hiển thị gốc lưu giữ khung hiển thị mà GADSearchBannerView được thêm vào. Bạn nên đặt thực thể đại diện phù hợp trên GADSearchBannerView.
  • Bạn phải tạo bản sao GADSearchBannerView với initWithAdSize:kGADAdSizeFluid để yêu cầu quảng cáo AFSMA. Tạo bản sao GADSearchBannerView bằng initWithAdSize:kGADAdSizeBanner yêu cầu quảng cáo AFSMA cũ.
  • Bạn cần đặt thuộc tính adUnitID trên đối tượng này thành mã thuộc tính.

GADDynamicHeightSearchRequest

  • Đối tượng này đóng gói các thông số yêu cầu quảng cáo. Điều này tương tự như việc cài đặt thông số trong đối tượng yêu cầu quảng cáo JavaScript (tuỳ chọn trang, lựa chọn đơn vị) cho AFS trên máy tính và web dành cho thiết bị di động.

(void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)size

  • Lệnh gọi lại này được gọi khi yêu cầu quảng cáo trả về. Vì đơn vị quảng cáo được trả về có thể chứa một số quảng cáo có các phần mở rộng khác nhau, nên kích thước chính xác của đơn vị quảng cáo đó là không xác định khi yêu cầu quảng cáo được thực hiện. Sau khi quảng cáo được trả về, chế độ xem biểu ngữ cần được cập nhật để phù hợp với kích thước mới của đơn vị quảng cáo. Bạn cần triển khai mã đổi kích thước GADSearchBannerView trong khung hiển thị mẹ tại đây.

Cách triển khai mẫu

Ví dụ bên dưới minh hoạ việc sử dụng GBannerViewController để tạo GADSearchBannerView dưới dạng khung hiển thị phụ của UIScrollView. Để yêu cầu quảng cáo AFSMA đúng cách, bạn phải tạo thực thể cho đối tượng GADSearchBannerView bằng initWithAdSize:kGADAdSizeFluid.

// GBannerViewController.m implementation

@interface GBannerViewController () <GADAdSizeDelegate,
                                     GADBannerViewDelegate>

@property(nonatomic, strong) GADSearchBannerView *searchBannerView;

@property(nonatomic, strong) UIScrollView *scrollView;

@end

@implementation GBannerViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  // Create the scroll view.
  ....
  ....

  // Create the banner.
  self.searchBannerView = [[GADSearchBannerView alloc] initWithAdSize:kGADAdSizeFluid];

  // Replace with your pub ID (e.g. ms-app-pub-9616389000213823).
  self.searchBannerView.adUnitID = @"ms-app-pub-################";

  // Set the initial location and size of the banner. The initial height
  // is set to 0 since we might not get an ad back.
  self.searchBannerView.frame = CGRectMake(0,
                                           0,
                                           CGRectGetWidth(self.view.bounds),
                                           0);
  self.searchBannerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;

  // Set the delegate properties.
  self.searchBannerView.adSizeDelegate = self;
  self.searchBannerView.delegate = self;

  // Add the new search banner into the parent scrollView.
  [self.scrollView addSubview:self.searchBannerView];
  }

Trong cùng một GBannerViewController, hãy tạo một GADDynamicHeightSearchRequest điều chỉnh các tham số của quảng cáo sẽ hiển thị trong GADSearchView.

// Create a search request and load the banner.
GADDynamicHeightSearchRequest *searchRequest = [[GADDynamicHeightSearchRequest alloc] init];

// Ad request options (set using GADDynamicHeightSearchRequest properties).
searchRequest.query = @"flowers";
searchRequest.numberOfAds = 2;

// Replace with the ID of a style from your custom search styles
[searchRequest setAdvancedOptionValue:@"0000000001"
                               forKey:@"styleId"];

Bạn có thể các tuỳ chọn tuỳ chỉnh khác bằng cách đặt thuộc tính bổ sung cho đối tượng GADDynamicHeightSearchRequest.

Để tạo yêu cầu quảng cáo, hãy gọi loadRequest bằng đối tượng GADDynamicHeightSearchRequest từ đối tượng GADSearchBannerView:

[self.searchBannerView loadRequest:searchRequest];

Để khung hiển thị gốc chứa GADSearchBannerView đúng cách sau khi quảng cáo trả về, bạn phải triển khai lệnh gọi lại sau đây.

// Callback to update the parent view height.
- (void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)size {
  // Update the banner view based on the ad size.
  CGRect newFrame = self.searchBannerView.frame;
  newFrame.size.height = size.size.height;
  self.searchBannerView.frame = newFrame;

  // Perform any additional logic needed due to banner view size change.
  ...
}

Tuỳ chọn nâng cao

Bạn có thể đặt hầu hết các thông số yêu cầu quảng cáo thông qua các thuộc tính trên đối tượng GADDynamicHeightSearchRequest (searchRequest ở trên). Bạn cần đặt các thông số khác bằng cách sử dụng các cặp khoá-giá trị với phương thức setAdvancedOptionValue:

// Advanced customization options (set using key-value pair).

// Set a parameter (parameter_name) and its value (parameter_value).
[searchRequest setAdvancedOptionValue:@"parameter_value"
                               forKey:@"parameter_name"];

// Example: Show visible URL below description (domainLinkAboveDescription: false).
[searchRequest setAdvancedOptionValue:@"false"
                               forKey:@"domainLinkAboveDescription"];

Xem danh sách đầy đủ các thông số có sẵn.

Điều tra lỗi

GADBannerViewDelegate chứa một lệnh gọi lại để giúp bạn điều tra lỗi:

- (void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error {

  // This callback is triggered when the ad request fails.
  // Add code here to debug the error object to discover causes of failure
  NSLog(@"Ad call failed due to %@", error.userInfo[@"NSUnderlyingError"]);
}

Nếu một yêu cầu quảng cáo không thành công, bạn có thể sử dụng lệnh gọi lại này để xử lý lỗi đúng cách và điều tra lỗi thông qua đối tượng lỗi.