适用于 iOS 的 AFS 移动应用 (AFSMA) 实现

前提条件

本实现指南假定您熟悉以下内容:

概览

本文档简要介绍了集成 AFS 移动应用 (AFSMA) 广告的流程 在您的 iOS 移动应用中 找到“广告素材”AFSMA 广告有时也称为动态 高度的搜索广告。要在 iOS 上请求并呈现 AFSMA 广告,您需要: 实现以下目标:

GADSearchBannerView

  • 此类继承自 iOS UIView 类,并显示 AFSMA 广告。通过 GADSearchBannerView 使用 GADDynamicHeightSearchRequest 并呈现返回的广告。通过 应将 GADSearchBannerView 添加到应用的任何现有视图中; 通常是父视图控制器,用于存储 “GADSearchBannerView”已添加到。应在以下位置设置相应的委托: GADSearchBannerView
  • 必须使用 GADSearchBannerView 实例化 initWithAdSize:kGADAdSizeFluid以请求 AFSMA 广告。正在实例化 initWithAdSize:kGADAdSizeBannerGADSearchBannerView请求旧版 AFSMA 广告。
  • 需要将此对象的 adUnitID 属性设置为您的属性代码。

GADDynamicHeightSearchRequest

  • 此对象可封装广告请求参数。类似于 在 JavaScript 广告请求对象中设置参数(网页选项、广告单元 选项)。

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

  • 当广告请求返回时,系统会调用此回调函数。自返回的广告 广告单元可能会包含多个采用不同附加信息、具体尺寸 广告单元的名称。广告 则需要更新横幅广告视图,以适应 广告单元用于在其父视图中调整 GADSearchBannerView 大小的代码应 在这里实现

实现示例

以下示例演示了如何使用 GBannerViewController 创建 将 GADSearchBannerView 作为 UIScrollView 的子视图。为了正确请求 AFSMA 广告,必须使用 GADSearchBannerView 对象实例化 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];
  }

在同一个 GBannerViewController 中,创建一个 GADDynamicHeightSearchRequest 该参数用于指定将在 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"];

其他自定义选项 可以在 GADDynamicHeightSearchRequest 上设置其他属性 对象。

如需发出广告请求,请使用 GADDynamicHeightSearchRequest 调用 loadRequestGADSearchBannerView 对象中移除该对象:

[self.searchBannerView loadRequest:searchRequest];

为了让父视图正确容纳 GADSearchBannerView, 广告返回,必须实现以下回调。

// 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.
  ...
}

高级选项

大部分广告请求参数都可以通过 GADDynamicHeightSearchRequest 对象(如上 searchRequest)。其他参数 需要使用 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"];

请参阅可用参数的完整列表

调查错误

GADBannerViewDelegate 包含一个回调,可帮助您调查错误:

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

如果广告请求失败,您可以使用此回调来妥善处理错误 并通过错误对象调查错误。