# Delegate Methods

## Overview

The Chartboost SDK's delegate methods allow you to exercise a greater degree of control over your integration. For example, you can:

- Log debug messages when your game attempts to load an interstitial.
- Determine when an ad is done loading and ready to be shown.
- Determine whether a user has clicked an ad or just closed it and react accordingly.

You can view the Chartboost iOS SDK methods at your disposal in the `CHBAdDelegate.h` header file in the Chartboost framework. You can see many of these methods in use within the Chartboost [sample project.](https://github.com/ChartBoost/ios-sdk-example) 

All iOS 14 information can be found on [Upgrading the SDK](/en/monetization/integrate/ios/upgrading-the-sdk/).



## SDK Configuration Methods

See [SDK Configuration Methods](/en/monetization/integrate/ios/sdk-privacy-methods/). 



## Ad Delegate Setup

In order to receive delegate method calls you need to set the ad's delegate:

<ul class="tab" data-tab="f472e780-9266-4a41-9734-291416954a4a" data-name="adDelegateSetup">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="f472e780-9266-4a41-9734-291416954a4a" data-name="adDelegateSetup">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">var</span> <span class="nv">interstitial</span> <span class="o">=</span> <span class="kt">CHBInterstitial</span><span class="p">(</span><span class="nv">location</span><span class="p">:</span> <span class="s">"Default"</span><span class="p">,</span> <span class="nv">delegate</span><span class="p">:</span> <span class="k">self</span><span class="p">)</span>
<span class="c1">// now self will receive delegate calls for the methods it has implemented</span>

<span class="n">interstitial</span><span class="o">.</span><span class="n">delegate</span> <span class="o">=</span> <span class="n">anotherObject</span>
<span class="c1">// now anotherObject will receive delegate calls for this ad instead of self</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">CHBInterstitial</span> <span class="o">*</span><span class="n">interstitial</span> <span class="o">=</span> <span class="p">[[</span><span class="n">CHBInterstitial</span> <span class="nf">alloc</span><span class="p">]</span> <span class="nf">initWithLocation</span><span class="p">:</span><span class="s">@"Default"</span> <span class="nf">delegate</span><span class="p">:</span><span class="n">self</span><span class="p">];</span>
<span class="c1">// now self will receive delegate calls for the methods it has implemented</span>

<span class="n">interstitial</span><span class="p">.</span><span class="n">delegate</span> <span class="o">=</span> <span class="n">anotherObject</span><span class="p">;</span>
<span class="c1">// now anotherObject will receive delegate calls for this ad instead of self</span>
</code></pre></div></div>
</li>
  
</ul>




## Ad Identifier

All the event objects passed as parameters in delegate method calls include an `adID` property. This is a string that uniquely identifies a cached ad and may assist in identifying faulty creatives when working with Chartboost.



## Static & Video Interstitial Delegate Methods

### `didCacheAd`

- **Description:** Called after a cache call if
  - an ad has been loaded from the Chartboost servers and cached.
  - an ad has failed to be loaded from the Chartboost servers.
- **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:** Get notified of when an ad is ready to be shown after the cache method has been called.

Example:
<ul class="tab" data-tab="a34d4d87-1e62-4a5c-8bde-75d42ece04a7" data-name="interstitialDidCacheAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="a34d4d87-1e62-4a5c-8bde-75d42ece04a7" data-name="interstitialDidCacheAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didCacheAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBCacheEvent</span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">CHBCacheError</span><span class="p">?){</span>
    <span class="k">if</span> <span class="k">let</span> <span class="nv">error</span> <span class="o">=</span> <span class="n">error</span> <span class="p">{</span>
        <span class="c1">// Handle error. Maybe trigger a retry mechanism.</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didCacheAd</span><span class="p">:(</span><span class="n">CHBCacheEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="nf">error</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">CHBCacheError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
        <span class="c1">// Handle error. Maybe trigger a retry mechanism.</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>


<div class="alert alert-warning" role="alert">
  <b>Caution: </b>Don't make cache requests inside a <code>didCacheAd:error</code> or your app may enter an infinite loop which may cause, but not limited to, connectivity-issues and crashing.
</div>



### `willShowAd`

- **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.
- **Discussion:** Get notified of when an ad is about to be presented.

Example:

<ul class="tab" data-tab="437bcf4c-b4bd-47af-b0c7-886a4afeb4cb" data-name="interstitialWillShowAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="437bcf4c-b4bd-47af-b0c7-886a4afeb4cb" data-name="interstitialWillShowAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">willShowAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBShowEvent</span><span class="p">){</span>
    <span class="c1">// Pause ongoing processes like video or gameplay.</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="nf">willShowAd</span><span class="p">:(</span><span class="n">CHBShowEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
    <span class="c1">// Pause ongoing processes like video or gameplay.</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didShowAd`

- **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:** Get notified when the ad presentation process has finished.

Example:

<ul class="tab" data-tab="449c7ea7-4b22-447b-83e1-c08f5db3386c" data-name="interstitialdidShowAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="449c7ea7-4b22-447b-83e1-c08f5db3386c" data-name="interstitialdidShowAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didShowAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBShowEvent</span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">CHBShowError</span><span class="p">?){</span>
    <span class="k">if</span> <span class="k">let</span> <span class="nv">error</span> <span class="o">=</span> <span class="n">error</span> <span class="p">{</span>
        <span class="c1">// Handle error, possibly resuming processes paused in willShowAd</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didShowAd</span><span class="p">:(</span><span class="n">CHBShowEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="nf">error</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">CHBShowError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
        <span class="c1">// Handle error, possibly resuming processes paused in willShowAd</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>





### `didClickAd`

- **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:** Get notified of 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:


<ul class="tab" data-tab="a19140ae-32d9-42b7-bb4d-482448531d3a" data-name="interstitialdidClickAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="a19140ae-32d9-42b7-bb4d-482448531d3a" data-name="interstitialdidClickAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didClickAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBClickEvent</span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">CHBClickError</span><span class="p">?)</span> <span class="p">{</span>
  <span class="k">if</span> <span class="k">let</span> <span class="nv">error</span> <span class="o">=</span> <span class="n">error</span> <span class="p">{</span>
        <span class="c1">// Handle error</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didClickAd</span><span class="p">:(</span><span class="n">CHBClickEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="nf">error</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">CHBClickError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
        <span class="c1">// Handle error</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didDismissAd`

- **Description:** Called after an ad is dismissed.
- **Parameter Event:** A dismiss event with info related to the dismissed ad.
- **Discussion:** Get notified of when an ad is no longer displayed.

Example:

<ul class="tab" data-tab="3809aead-ad45-42e5-8818-222f20b16697" data-name="interstitialdidDismissAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="3809aead-ad45-42e5-8818-222f20b16697" data-name="interstitialdidDismissAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didDismissAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBDismissEvent</span><span class="p">)</span> <span class="p">{</span>
    <span class="c1">// Resume processes paused in willShowAd</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didDismissAd</span><span class="p">:(</span><span class="n">CHBDismissEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
   <span class="c1">// Resume processes paused in willShowAd:</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didRecordImpression`

- **Description:** Called after an ad has recorded an impression.
- **Parameter Event:** An impression event with info related to the visible ad.
- **Discussion:** Implement to be notified of when an ad has recorded an impression. This method will be called once a valid impression is recorded after showing the ad.

Example:
<ul class="tab" data-tab="c37eb42f-260e-48a8-b408-1933f51bf660" data-name="interstitialdidRecordImpression">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="c37eb42f-260e-48a8-b408-1933f51bf660" data-name="interstitialdidRecordImpression">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didRecordImpression</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBImpressionEvent</span><span class="p">){</span>
    <span class="c1">// Resume app gameplay state to reflect that the user has watched an ad</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didRecordImpression</span><span class="p">:(</span><span class="n">CHBImpressionEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
    <span class="c1">// Resume app gameplay state to reflect that the user has watched an ad</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didExpireAd`

- **Description:** Called when a loaded ad has expired.
- **Parameter Event:** An expiration event with info related to the expired ad.
- **Discussion:** Implement to be notified of when an ad has expired. This method will be called if a loaded ad is not shown before a predetermined expiration interval. After expiration a new ad may be loaded.

Example:
<ul class="tab" data-tab="e9b2083c-37a7-4fc1-a7d5-2a9d2efb598a" data-name="interstitialdidExpireAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="e9b2083c-37a7-4fc1-a7d5-2a9d2efb598a" data-name="interstitialdidExpireAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didExpireAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBExpirationEvent</span><span class="p">)</span> <span class="p">{</span>
    <span class="c1">// The cached ad has expired, cache a new one</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didExpireAd</span><span class="p">:(</span><span class="n">CHBExpirationEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
    <span class="c1">// The cached ad has expired, cache a new one</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




## Rewarded video delegate methods:

### `didCacheAd`

- **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:** Get notified of when an ad is ready to be shown after the cache method has been called.

Example:
<ul class="tab" data-tab="4aed56f8-5b60-4d62-8701-14300f5541fb" data-name="rewardeddidCacheAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="4aed56f8-5b60-4d62-8701-14300f5541fb" data-name="rewardeddidCacheAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didCacheAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBCacheEvent</span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">CHBCacheError</span><span class="p">?){</span>
    <span class="k">if</span> <span class="k">let</span> <span class="nv">error</span> <span class="o">=</span> <span class="n">error</span> <span class="p">{</span>
        <span class="c1">// Handle error. Maybe trigger a retry mechanism.</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didCacheAd</span><span class="p">:(</span><span class="n">CHBCacheEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="nf">error</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">CHBCacheError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
        <span class="c1">// Handle error. Maybe trigger a retry mechanism.</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>





### `willShowAd`

- **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.
- **Discussion**: Get notified of when an ad is about to be presented.

Example:

<ul class="tab" data-tab="2c83d380-530e-4c37-ab39-e8a7f8fa1a38" data-name="rewardedwillShowAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="2c83d380-530e-4c37-ab39-e8a7f8fa1a38" data-name="rewardedwillShowAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">willShowAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBShowEvent</span><span class="p">){</span>
    <span class="c1">// Pause ongoing processes like video or gameplay.</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="nf">willShowAd</span><span class="p">:(</span><span class="n">CHBShowEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
    <span class="c1">// Pause ongoing processes like video or gameplay.</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didShowAd`

- **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:** Get notified of when the ad presentation process has finished.

Example:

<ul class="tab" data-tab="0d76c4f2-d404-4f40-b224-70d05a1f1761" data-name="rewardeddidShowAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="0d76c4f2-d404-4f40-b224-70d05a1f1761" data-name="rewardeddidShowAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didShowAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBShowEvent</span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">CHBShowError</span><span class="p">?){</span>
    <span class="k">if</span> <span class="k">let</span> <span class="nv">error</span> <span class="o">=</span> <span class="n">error</span> <span class="p">{</span>
        <span class="c1">// Handle error, possibly resuming processes paused in willShowAd</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didShowAd</span><span class="p">:(</span><span class="n">CHBShowEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="nf">error</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">CHBShowError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
        <span class="c1">// Handle error, possibly resuming processes paused in willShowAd</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didClickAd`

- **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:** Get notified of when an ad has been clicked. If the click does not result into the opening of a link, then an error will be provided explaining why.

Example:

<ul class="tab" data-tab="635e704e-06e7-4951-937a-d8e4bd5c911b" data-name="rewardeddidClickAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="635e704e-06e7-4951-937a-d8e4bd5c911b" data-name="rewardeddidClickAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didClickAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBClickEvent</span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">CHBClickError</span><span class="p">?)</span> <span class="p">{</span>
  <span class="k">if</span> <span class="k">let</span> <span class="nv">error</span> <span class="o">=</span> <span class="n">error</span> <span class="p">{</span>
        <span class="c1">// Handle error</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didClickAd</span><span class="p">:(</span><span class="n">CHBClickEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="nf">error</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">CHBClickError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
        <span class="c1">// Handle error</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didDismissAd`

- **Description**: Called after an ad is dismissed.
- **Parameter Event:** A dismiss event with info related to the dismissed ad.
- **Discussion:** Get notified of when an ad is no longer displayed.

Example:

<ul class="tab" data-tab="5ca26f0f-8d14-4107-95df-7a925a91d6b7" data-name="rewardeddidDismissAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="5ca26f0f-8d14-4107-95df-7a925a91d6b7" data-name="rewardeddidDismissAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didDismissAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBDismissEvent</span><span class="p">)</span> <span class="p">{</span>
    <span class="c1">// Resume processes paused in willShowAd</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didDismissAd</span><span class="p">:(</span><span class="n">CHBDismissEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
   <span class="c1">// Resume processes paused in willShowAd:</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>





### `didEarnReward`

- **Description**: Called when a rewarded ad has completed playing.
- **Parameter Event:** A reward event with info related to the ad and the reward.
- **Discussion**: Get notified when a reward is earned.

Example:

<ul class="tab" data-tab="3bf1eed6-a786-439e-b483-11be4aeb3852" data-name="rewardeddidEarnReward">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="3bf1eed6-a786-439e-b483-11be4aeb3852" data-name="rewardeddidEarnReward">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didEarnReward</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBRewardEvent</span><span class="p">)</span> <span class="p">{</span>
    <span class="c1">// Update app internal state to reflect the earned reward</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didEarnReward</span><span class="p">:(</span><span class="n">CHBRewardEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
    <span class="c1">// Update app internal state to reflect the earned reward</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didRecordImpression`

- **Description:** Called after an ad has recorded an impression.
- **Parameter Event:** An impression event with info related to the visible ad.
- **Discussion:** Implement to be notified of when an ad has recorded an impression. This method will be called once a valid impression is recorded after showing the ad.

Example:

<ul class="tab" data-tab="27464e90-e925-46ea-b15b-5308c5ce20a3" data-name="rewardeddidRecordImpression">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="27464e90-e925-46ea-b15b-5308c5ce20a3" data-name="rewardeddidRecordImpression">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didRecordImpression</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBImpressionEvent</span><span class="p">){</span>
    <span class="c1">// Resume app gameplay state to reflect that the user has watched an ad</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didRecordImpression</span><span class="p">:(</span><span class="n">CHBImpressionEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
    <span class="c1">// Resume app gameplay state to reflect that the user has watched an ad</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didExpireAd`

- **Description:** Called when a loaded ad has expired.
- **Parameter Event:** An expiration event with info related to the expired ad.
- **Discussion:** Implement to be notified of when an ad has expired. This method will be called if a loaded ad is not shown before a predetermined expiration interval. After expiration a new ad may be loaded.

Example:
<ul class="tab" data-tab="6380924a-8595-429f-8350-8c33f6fcbb6c" data-name="rewardeddidExpireAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="6380924a-8595-429f-8350-8c33f6fcbb6c" data-name="rewardeddidExpireAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didExpireAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBExpirationEvent</span><span class="p">)</span> <span class="p">{</span>
    <span class="c1">// The cached ad has expired, cache a new one</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didExpireAd</span><span class="p">:(</span><span class="n">CHBExpirationEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
    <span class="c1">// The cached ad has expired, cache a new one</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>



<div class="alert alert-warning" role="alert">
  <b>Caution:</b> Don't make cache requests inside a <code>didCacheAd:error</code> or your app may enter an infinite loop which may cause, but not limited to, connectivity-issues and crashing.
</div>



## Banner Delegate Methods

### `didCacheAd`

- **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**: Get notified of when an ad is ready to be shown after the cache method has been called.

Example:

<ul class="tab" data-tab="8e036767-b311-4a9d-9bb7-1741d47c45b7" data-name="bannerdidCacheAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="8e036767-b311-4a9d-9bb7-1741d47c45b7" data-name="bannerdidCacheAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didCacheAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBCacheEvent</span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">CHBCacheError</span><span class="p">?){</span>
    <span class="k">if</span> <span class="k">let</span> <span class="nv">error</span> <span class="o">=</span> <span class="n">error</span> <span class="p">{</span>
        <span class="c1">// Handle error. Maybe trigger a retry mechanism.</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didCacheAd</span><span class="p">:(</span><span class="n">CHBCacheEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="nf">error</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">CHBCacheError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
        <span class="c1">// Handle error. Maybe trigger a retry mechanism.</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `willShowAd`

- **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.
- **Discussion**: Get notified of when an ad is about to be presented.

Example:

<ul class="tab" data-tab="88c4eda2-a13b-4382-814b-b41cc8382b19" data-name="bannerwillShowAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="88c4eda2-a13b-4382-814b-b41cc8382b19" data-name="bannerwillShowAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">willShowAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBShowEvent</span><span class="p">){</span>
    <span class="c1">// Pause ongoing processes like video or gameplay.</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="nf">willShowAd</span><span class="p">:(</span><span class="n">CHBShowEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
    <span class="c1">// Pause ongoing processes like video or gameplay.</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didShowAd`

- **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**: Get notified of when the ad presentation process has finished.

Example:

<ul class="tab" data-tab="7557e1e1-96eb-49d0-8d9a-c5eda0e59ce1" data-name="bannerdidShowAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="7557e1e1-96eb-49d0-8d9a-c5eda0e59ce1" data-name="bannerdidShowAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didShowAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBShowEvent</span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">CHBShowError</span><span class="p">?){</span>
    <span class="k">if</span> <span class="k">let</span> <span class="nv">error</span> <span class="o">=</span> <span class="n">error</span> <span class="p">{</span>
        <span class="c1">// Handle error, possibly resuming processes paused in willShowAd</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didShowAd</span><span class="p">:(</span><span class="n">CHBShowEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="nf">error</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">CHBShowError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
        <span class="c1">// Handle error, possibly resuming processes paused in willShowAd</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didClickAd`

- **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:** Get notified of when an ad has been clicked. If the click does not result into the opening of a link, then an error will be provided explaining why.

Example:

<ul class="tab" data-tab="b14a9d4a-184a-46a9-a4ce-4e4df82aa999" data-name="bannerdidClickAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="b14a9d4a-184a-46a9-a4ce-4e4df82aa999" data-name="bannerdidClickAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didClickAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBClickEvent</span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">CHBClickError</span><span class="p">?)</span> <span class="p">{</span>
  <span class="k">if</span> <span class="k">let</span> <span class="nv">error</span> <span class="o">=</span> <span class="n">error</span> <span class="p">{</span>
        <span class="c1">// Handle error</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didClickAd</span><span class="p">:(</span><span class="n">CHBClickEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="nf">error</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">CHBClickError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
        <span class="c1">// Handle error</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didRecordImpression`

- **Description:** Called after an ad has recorded an impression.
- **Parameter Event:** An impression event with info related to the visible ad.
- **Discussion:** Implement to be notified of when an ad has recorded an impression. This method will be called once a valid impression is recorded after showing the ad.

Example:

<ul class="tab" data-tab="e5c69253-a410-4ce6-9448-adb9df4b976c" data-name="bannerdidRecordImpression">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="e5c69253-a410-4ce6-9448-adb9df4b976c" data-name="bannerdidRecordImpression">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didRecordImpression</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBImpressionEvent</span><span class="p">){</span>
    <span class="c1">// Resume app gameplay state to reflect that the user has watched an ad</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didRecordImpression</span><span class="p">:(</span><span class="n">CHBImpressionEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
    <span class="c1">// Resume app gameplay state to reflect that the user has watched an ad</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### `didExpireAd`

- **Description:** Called when a loaded ad has expired.
- **Parameter Event:** An expiration event with info related to the expired ad.
- **Discussion:** Implement to be notified of when an ad has expired. This method will be called if a loaded ad is not shown before a predetermined expiration interval. After expiration a new ad may be loaded.

Example:
<ul class="tab" data-tab="e6528c7f-3de6-4757-8f7b-3a864d081067" data-name="bannerdidExpireAd">
  
      <li class="active">
          <a href="#">swift </a>
      </li>
  
      <li>
          <a href="#">objective-c </a>
      </li>
  
</ul>
<ul class="tab-content" id="e6528c7f-3de6-4757-8f7b-3a864d081067" data-name="bannerdidExpireAd">
  
      <li class="active">
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">didExpireAd</span><span class="p">(</span><span class="n">_</span> <span class="nv">event</span><span class="p">:</span> <span class="kt">CHBExpirationEvent</span><span class="p">)</span> <span class="p">{</span>
    <span class="c1">// The cached ad has expired, cache a new one</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-objectivec highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">didExpireAd</span><span class="p">:(</span><span class="n">CHBExpirationEvent</span> <span class="o">*</span><span class="p">)</span><span class="nv">event</span> <span class="p">{</span>
    <span class="c1">// The cached ad has expired, cache a new one</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




