Google 移动广告 SDK 还支持自定义搜索广告样式。如果您的应用 已在使用 Google 移动广告 SDK,我们建议您使用 AFSMA SDK 版本 。
前提条件
- 使用 Xcode 8.0 或更高版本
- 定位到 iOS 8.0 或更高版本
- 有效的发布商网络媒体资源代码(例如 vert-ppa-test1-srp)
- CocoaPods
导入 AFS 原生 SDK
CocoaPods
使用以下命令将 Google-AFSNative SDK 导入 iOS 项目: CocoaPods。打开项目的 Podfile 中,并将下面这行代码添加到应用的目标中:
pod 'Google-AFSNative'
然后在命令行中运行以下命令:
pod install --repo-update
如果您刚开始接触 CocoaPods,请参阅 如需了解相关信息,请参阅官方文档 如何创建和使用 Podfile
概览
如果您要从 2.0.8 或更早版本升级到 4.0 或更新版本,请参阅 迁移指南。
本文档简要介绍了集成 AFS 原生广告的流程 在您的 iOS 移动应用中 找到“广告素材”
- 您需要向
GANSearchAdController
构造函数提供 发布商的网络媒体资源代码、所需的设置 ID 以及关联的GANSearchAdControllerOptions
对象。 - 每次调用
loadAds()
都表示新的搜索,这会导致当前的 被舍弃并失效的广告集。 - 广告素材存储在
GANAdView
中。 - 广告通过
populateAdView
方法插入到广告GANAdView
中。在 除了要填充的GANAdView
之外,调用方还会提供一个adIdentifier
,这是一个可以唯一标识广告的任意字符串。 在 API 中,系统会为向每个传递的 adIdentifier 分配一个特定广告 位置以后每当再次传递该 adKey 时,就会触发同一个广告 返回。例如,如果首次调用populateAdView
adIdentifier "keyA",在传递时对populateAdView
的后续每次调用 “keyA”因为adIdentifier
将展示同一个广告。
- 这是包含相应广告素材的 UIView。
- 使用广告上的
populateAdView
方法填充此视图GANSearchAdController
。
- 将此对象传递给
GANSearchAdController
构造函数以指定 请求和展示广告的方式
- 使用以下代码对
GANSearchAdController
实例调用loadAds
方法: 对象发出广告请求。
- 实现此接口并将其提供给
GANSearchAdController
,以便 为多种状态注册回调。
实现示例
以下示例演示了如何创建 GANSearchAdController
和 GANView
,以在示例 ViewController
中展示广告。
// SampleAppViewController.m implementation
#import <AFSNative/AFSNative.h>
@interface GBannerViewController () {
// The Ad Controller used by the sample application.
GANSearchAdController *_adController;
// The Ad View to display the loaded ad.
GANAdView *_adView;
}
// scrollView will be where we place our ads in this example.
@property(nonatomic, strong) UIScrollView *scrollView;
@end
...
- (void)viewDidLoad {
[super viewDidLoad];
// Create the scroll view.
...
[self.view addSubview:scrollView];
// Create a test button and link the ad request to its action.
UIButton *loadBannerButton = [UIButton buttonWithType:UIButtonTypeCustom];
...
[loadBannerButton addTarget:self
action:@selector(loadAd:)
forControlEvents:UIControlEventTouchUpInside];
[self.scrollView addSubview:loadBannerButton];
// Construct the Ad Controller.
GANSearchAdControllerOptions *options = [[GANSearchAdControllerOptions alloc] init];
options.prefetchEnabled = YES;
options.adType = GANSearchAdTypeSPA;
options.adFetchCount = 3;
_adController = [[GANSearchAdController alloc]
initWithPublisherID: @"your-client-id"
styleID: @"your-settings-id"
options: options
delegate: self];
_adView = [_adController adView];
[self.scrollView addSubview:_adView];
}
// Request ads when the test button is pressed.
- (void)loadAd:(id)sender {
// Construct the Ad Request.
GANSearchAdRequest *adRequest = [[GANSearchAdRequest alloc] init];
adRequest.query = @"some-query";
// Start loading ads. Note that the loading is asynchronous.
[_adController loadAds: adRequest];
}
// Insert ads into GANAdView if the request returns successfully.
- (void)searchAdController:(GANSearchAdController *)adController
didLoadAds:(NSInteger)numberOfAds {
if (numberOfAds <= 0) {
NSLog(@"No ads found on the server");
} else {
[_adController populateAdView:_adView identifier:@"demoAd"];
}
}
...