创建一个 Banner 横幅 广告
创建一个 Banner 横幅广告可以使用以下方法 initWithSize:location:delegate:
传入尺寸, Chartboost 命名位置, 以及一个可选的 delegate 参数。
Banner 横幅广告的尺寸可以用 CHBBannerSize
表示,它与视图的 intrinsicContentSize
相关。我们提供了 3 种 Banner 尺寸类型: CHBBannerSizeStandard, CHBBannerSizeMedium 和 CHBBannerSizeLeaderboard.
你可以使用自动排版 AutoLayout 的方式,只需为 Banner 设置 X 和 Y 位置坐标,它就会自动以合适的尺寸展示。或者,您也可以手动为 Banner 设置其视图尺寸,请确保设定的尺寸与 CHBBannerSize
属性相同。
范例:
- (void)createBanner {
CHBBanner *banner = [[CHBBanner alloc] initWithSize:CHBBannerSizeStandard location:CBLocationMainMenu delegate:self];
banner.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:banner];
[NSLayoutConstraint activateConstraints:@[[banner.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor],
[banner.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor]]];
}
展示 Banner 横幅广告
您需要通过上面所说的方法先创建一个 Banner,然后调用下面的语句展示:
[banner showFromViewController:self];
Banner 横幅广告尺寸
- 320 x 50
- 300 x 250
- 728 x 90
关于自动刷新
默认情况下, Banner 会以30秒为间隔自动刷新其内容。
您只需要调用 showFromViewController:
一次,Banner 会展示广告并保持自动刷新,新的 Banner 会自动轮番出现。
Banner 被点击一次后,也会自动刷新。
手动控制 Banner 刷新
如果想关闭自动刷新,可以将 automaticallyRefreshesContent
属性设置为 NO
。
手动刷新需要使用 cache:
方法进行提前缓存,你可以使用相关的代理函数来获取缓存是否成功的通知。缓存成功后便可以展示了。
范例:
(void)cacheBanner {
[self.banner cache];
}
// 代理函数
(void)didCacheAd:(CHBCacheEvent *)event error:(nullable CHBCacheError *)error {
// 当 Banner 缓存成功时,展示
if (event.ad.isCached) {
[event.ad showFromViewController:self];
} else {
// 处理缓存失败时的错误
}
}
(void)didShowAd:(CHBShowEvent *)event error:(nullable CHBShowError *)error {
// 缓存下一个 Banner
[event.ad cache];
}
Banner 代理函数
每个 Banner 都有可选的代理函数,代理函数可以在 Banner 初始化时或者后续运行时指派。
通过实现代理函数,您可以获取 Banner 整个生命周期的消息通知。
所有的代理函数如下:
didCacheAd
- (void)didCacheAd:(CHBCacheEvent *)event error:(nullable CHBCacheError *)error
描述: 在缓存 Banner 后执行,无论是否成功从 Chartboost 服务器获得 Banner 广告。缓存失败时也会调用此函数。
参数 event: 缓存事件参数。
参数 error: 错误信息参数。它的值为 nil 时表示缓存成功。
范例:
(void)didCacheAd:(CHBCacheEvent *)event error:(nullable CHBCacheError *)error {
if (error) {
// Handle error
} else {
[event.ad showFromViewController:self]; // If auto-refresh is disabled.
}
}
willShowAd
- (void)willShowAd:(CHBShowEvent *)event error:(nullable CHBShowError *)error;
描述: 在执行 showFromViewController: 方法之后但 Banner 广告展示之前调用。
参数 event: 展示事件相关的参数。
参数 error: 错误信息参数。它的值为 nil 时表示调用展示成功。
范例:
(void)willShowAd:(CHBShowEvent *)event error:(nullable CHBShowError *)error {
if (error) {
// Handle error
} else {
// Make any necessary UI updates
}
}
didShowAd
- (void)didShowAd:(CHBShowEvent *)event error:(nullable CHBShowError *)error;
描述: 在执行 showFromViewController: 后调用, 无论 Banner 是否正常展示,此方法都会被调用。
参数 event: 展示事件相关的参数。
参数 error: 错误信息参数。它的值为 nil 时表示调用展示成功。
范例:
(void)didShowAd:(CHBShowEvent *)event error:(nullable CHBShowError *)error {
if (error) {
// Handle error
} else {
[event.ad cache]; // If auto-refresh is disabled.
}
}
shouldConfirmClick
- (BOOL)shouldConfirmClick:(CHBClickEvent *)event confirmationHandler:(void(^)(BOOL))confirmationHandler;
描述: 此方法在用户点击后但未点击有效之前调用,开发者可以通过此函数对点击事件进行定制化的处理。
参数 event: 点击事件相关的参数。
参数 confirmationHandler: 处理点击事件的函数或者代码块。它仅在本函数返回值为 YES
时执行。同时它也有一个 BOOL
参数来表明点击处理事件已通过。
返回值: YES
代表点击事件会被拦截,需要得到额外的代码逻辑确认才能继续, NO
代表点击事件不需要额外的代码逻辑确认。
注意: 如果你在此函数里返回了 YES
,必须确保您已经实现了额外的代码逻辑,否则广告的事件流会被中断。
如果您在代码逻辑里展示一个确认对话框界面来让用户确认,必须保证这个对话框在执行 confirmationHandler
函数时关闭。当缺少 confirmationHandler 函数时,点击事件会被默认视为已确认通过。
范例:
(BOOL)shouldConfirmClick:(CHBClickEvent *)event confirmationHandler:(void(^)(BOOL))confirmationHandler
if (self.needsClickConfirmation) {
MyAwesomeAgeGate *ageGate = [[MyAwesomeAgeGate alloc] initWithCompletion:^(BOOL confirmed) {
[ageGate dismissViewControllerAnimated:YES completion:^{
confirmationHandler(confirmed);
}];
}];
[event.viewController presentViewController:ageGate animated:YES completion:nil];
return YES;
} else {
return NO;
}
}
didClickAd
- (void)didClickAd:(CHBClickEvent *)event error:(nullable CHBClickError *)error;
描述: 当 Banner 被点击后调用。
参数 event: 点击事件相关的参数。
参数 error: 错误信息参数。它的值为 nil 时表示已成功点击。
范例:
(void)didClickAd:(CHBClickEvent *)event error:(nullable CHBClickError *)error {
if (error) {
// Handle error
} else {
// Maybe pause ongoing processes like video or gameplay.
}
}
didFinishHandlingClick
- (void)didFinishHandlingClick:(CHBClickEvent *)event error:(nullable CHBClickError *)error;
描述: 当广告点击事件被处理完时调用,无论是跳转链接或者忽略点击都会调用。这意味着当用户关闭点击 Banner 后打开的内嵌浏览器或者 AppStore 页面,再次返回 app 时触发此事件。
参数 event: 点击事件相关的参数。
参数 error: 错误信息参数。它的值为 nil 时表示事件处理成功。
范例:
(void)didFinishHandlingClick:(CHBClickEvent *)event error:(nullable CHBClickError *)error {
// Resume processes previously paused on didClickAd:error: implementation.
}