前提条件
本实现指南假定您熟悉以下内容:
- iOS 应用开发。
- 将 Google 移动广告 SDK 与 iOS 项目相关联。 下载最新版本的 SDK。
概览
本文档简要介绍了集成 AFS 移动应用 (AFSMA) 广告的流程 在您的 iOS 移动应用中 找到“广告素材”AFSMA 广告有时也称为动态 高度的搜索广告。要在 iOS 上请求并呈现 AFSMA 广告,您需要: 实现以下目标:
- 此类继承自 iOS UIView 类,并显示 AFSMA 广告。通过
GADSearchBannerView
使用GADDynamicHeightSearchRequest
并呈现返回的广告。通过 应将GADSearchBannerView
添加到应用的任何现有视图中; 通常是父视图控制器,用于存储 “GADSearchBannerView
”已添加到。应在以下位置设置相应的委托:GADSearchBannerView
。 - 必须使用
GADSearchBannerView
实例化initWithAdSize:kGADAdSizeFluid
以请求 AFSMA 广告。正在实例化initWithAdSize:kGADAdSizeBanner
的GADSearchBannerView
请求旧版 AFSMA 广告。 - 需要将此对象的
adUnitID
属性设置为您的属性代码。
- 此对象可封装广告请求参数。类似于 在 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
调用 loadRequest
从 GADSearchBannerView
对象中移除该对象:
[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"]);
}
如果广告请求失败,您可以使用此回调来妥善处理错误 并通过错误对象调查错误。