Banners

Creating a banner

To create a banner you use the provided initializer initWithSize:location:delegate: providing a size, a Chartboost location, and an optional delegate.

A banner ad has a CHBBannerSize which corresponds to the view’s intrinsicContentSize. There are currently 3 banner sizes: CHBBannerSizeStandard, CHBBannerSizeMedium and CHBBannerSizeLeaderboard.

If AutoLayout is being used you just give the banner an X and Y position constraint and it will be automatically sized. On the other hand, if you assign frames manually make sure to have the banner frame’s size equal to its CHBBannerSize property.

Example:

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

Showing banner ads

To make the banner show an ad first create and present it as seen before, and then call this method:

[banner showFromViewController:self];

Banner ads sizes

  • 320 x 50
  • 300 x 250 
  • 728 x 90 

Auto-refreshing

By default, a banner will automatically update its content on its own. The refresh default rate is 30s.

This means you only need to call showFromViewController: once and the banner will get new ads and show them by itself, gracefully handling errors if they occur.

Banners will be also refreshed once clicked.

Manually handling banner refresh

If you decide to disable banner auto-refreshing you can do that by setting the automaticallyRefreshesContent property to NO.

In this case, you’ll need to call the cache: method to load an ad and implement the corresponding delegate method to be notified of when the ad is ready to be shown.

Example:

 (void)cacheBanner {
[self.banner cache];
}
// Delegate methods
(void)didCacheAd:(CHBCacheEvent *)event error:(nullable CHBCacheError *)error {
// Show banner after it has been cached
if (event.ad.isCached) {
[event.ad showFromViewController:self];
} else {
// Handle error
}
}
(void)didShowAd:(CHBShowEvent *)event error:(nullable CHBShowError *)error {
// Cache new ad so the next time you want to show a banner it is ready.
[event.ad cache];
}

Banner delegates methods

Every banner has an optional delegate which can be provided when initialized or assigned afterwards.

Implementing delegate methods is the way you can be notified and respond to events related to the banner life-cycle.

These are all the delegate methods:

didCacheAd

- (void)didCacheAd:(CHBCacheEvent *)event error:(nullable CHBCacheError *)error 

Description: Called after a cache call, either if an ad has been loaded from the Chartboost servers and cached, or tried to but failed.
Parameter event: A cache event with info related to the cached ad.
Parameter error: An error specifying the failure reason, or nil if the operation was successful.
Discussion: Implement to be notified of when an ad is ready to be shown after the cache method has been called.

Example:

 (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;

Description: Called after a showFromViewController: call, right before an ad is presented.
Parameter event: A show event with info related to the ad to be shown.
Parameter error: An error specifying the failure reason, or nil if the operation was successful.
Discussion: Implement to be notified of when an ad is about to be presented.
Example:

 (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;

Description: Called after a showFromViewController: call, either if the ad has been presented and an ad impression logged, or if the operation failed.
Parameter event: A show event with info related to the ad shown.
Parameter error: An error specifying the failure reason, or nil if the operation was successful.
Discussion: Implement to be notified of when the ad presentation process has finished.

Example:

 (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;

Description: Called whenever the user clicks an ad to give a chance to the developer to present a confirmation gate before the click is handled.
Parameter event: A click event with info related to the ad clicked.
Parameter confirmationHandler: A block to be executed only if the return value is YES. It takes a BOOL parameter that indicates if the confirmation gate was passed or not.
ReturnsYES if the handling of the triggering click should be paused for confirmation, NO if the click should be handled without confirmation.
Warning: If you return YES in your implementation make sure to execute the confirmationHandler at some point, since the ad flow will be paused until then.
If you use the event’s view controller to present a confirmation view make sure it has been dismissed by the time you execute the confirmationHandler.
Discussion: If you return YES it is your responsibility to implement some confirmation method that triggers the execution of the confirmationHandler.
If this method is not implemented clicks will be handled without confirmation.

Example:

 (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;

Description: Called after an ad has been clicked.
Parameter event: A click event with info related to the ad clicked.
Parameter error: An error specifying the failure reason, or nil if the operation was successful.
Discussion: Implement to be notified when an ad has been clicked.
If the click does not result into the opening of a link an error will be provided explaining why.

Example:

 (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;

Description: Called when the link viewer presented as result of an ad click has been dismissed.
Parameter event: A click event with info related to the ad clicked.
Parameter error: An error specifying the failure reason, or nil if the operation was successful.
Discussion: Implement to be notified of when an ad click has been handled.
This can mean an in-app web browser or App Store app sheet has been dismissed, or that the user came back to the app after the link was opened on an external application.

Example:

 (void)didFinishHandlingClick:(CHBClickEvent *)event error:(nullable CHBClickError *)error {
// Resume processes previously paused on didClickAd:error: implementation.
}