Banner 横幅广告

创建一个 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.
}