# Listener Usage

By implementing and providing  `HeliumFullscreenAdListener`  and  `HeliumBannerAdListerner`  interfaces to the Chartboost Mediation objects, you can get notifications about the success, failure, and other lifecycle events of Mediation Ads.

<div class="alert alert-info" role="alert">
  <b>Note: 4.0.0 Update</b><br>
  <li>As of 4.0.0, all listeners have combined the  <b>winning bid callback</b>  and the  <b>cache callback</b>. The winning bid info is now found in  <code>winningBidInfo</code>  of the  <code>onAdCached()</code>  callback. The load identifier has been moved into the  <code>onAdCached()</code>  callback.</li>
  <li>We have also clarified issues into an exception:  <code>ChartboostMediationAdException</code>.</li>
</div>




## HeliumFullscreenAdListener

You can implement the `HeliumFullscreenAdListener` interface to receive notifications about interstitial and rewarded ads loading, displaying, and closing.

<ul class="tab" data-tab="fc02cacc-b350-46ab-9c1a-1d5f63c28469" data-name="HeliumFullscreenAdListener">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="fc02cacc-b350-46ab-9c1a-1d5f63c28469" data-name="HeliumFullscreenAdListener">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">heliumFullscreenAdListener</span> <span class="p">=</span> <span class="kd">object</span> <span class="err">: </span><span class="nc">HeliumFullscreenAdListener</span> <span class="p">{</span>
    <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdCached</span><span class="p">(</span><span class="n">placementName</span><span class="p">:</span> <span class="nc">String</span><span class="p">,</span> <span class="n">loadId</span><span class="p">:</span> <span class="nc">String</span><span class="p">,</span> <span class="n">winningBidInfo</span><span class="p">:</span> <span class="nc">Map</span><span class="p">&lt;</span><span class="nc">String</span><span class="p">,</span> <span class="nc">String</span><span class="p">&gt;,</span> <span class="n">error</span><span class="p">:</span> <span class="nc">ChartboostMediationAdException</span><span class="p">?)</span> <span class="p">{</span>
        <span class="n">error</span><span class="o">?.</span><span class="nf">let</span> <span class="p">{</span>
            <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad cache failed for placement: $placementName "</span> <span class="p">+</span> 
            <span class="s">"reason: ${it.message}"</span><span class="p">)</span>
        <span class="p">}</span> <span class="o">?:</span> <span class="nf">run</span> <span class="p">{</span>
            <span class="c1">// Show the ad if it's ready</span>
            <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad cached for placement: $placementName"</span><span class="p">)</span>
        <span class="p">}</span>
    <span class="p">}</span>

    <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdShown</span><span class="p">(</span><span class="n">placementName</span><span class="p">:</span> <span class="nc">String</span><span class="p">,</span> <span class="n">error</span><span class="p">:</span> <span class="nc">ChartboostMediationAdException</span><span class="p">?)</span> <span class="p">{</span>
        <span class="n">error</span><span class="o">?.</span><span class="nf">let</span> <span class="p">{</span>
            <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad show failed for placement: $placementName "</span> <span class="p">+</span> 
            <span class="s">"reason: ${it.message}"</span><span class="p">)</span>
        <span class="p">}</span> <span class="o">?:</span> <span class="nf">run</span> <span class="p">{</span>
            <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad shown for placement: $placementName"</span><span class="p">)</span>
        <span class="p">}</span>
    <span class="p">}</span>

    <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdClicked</span><span class="p">(</span><span class="n">placementName</span><span class="p">:</span> <span class="nc">String</span><span class="p">)</span> <span class="p">{</span>
        
        <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad clicked for placement: $placementName"</span><span class="p">)</span>
    <span class="p">}</span>

    <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdClosed</span><span class="p">(</span><span class="n">placementName</span><span class="p">:</span> <span class="nc">String</span><span class="p">,</span> <span class="n">error</span><span class="p">:</span> <span class="nc">ChartboostMediationAdException</span><span class="p">?)</span> <span class="p">{</span>
        <span class="n">error</span><span class="o">?.</span><span class="nf">let</span> <span class="p">{</span>
            <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad closed and there was an error for placement: $placementName "</span> <span class="p">+</span> 
            <span class="s">"reason: ${it.message}"</span><span class="p">)</span>
        <span class="p">}</span> <span class="o">?:</span> <span class="nf">run</span> <span class="p">{</span>
            <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad closed for placement: $placementName"</span><span class="p">)</span>
        <span class="p">}</span>
    <span class="p">}</span>

    <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdImpressionRecorded</span><span class="p">(</span><span class="n">placementName</span><span class="p">:</span> <span class="nc">String</span><span class="p">)</span> <span class="p">{</span>
        <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad recorded impression for placement: $placementName"</span><span class="p">)</span>
    <span class="p">}</span>

    <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdRewarded</span><span class="p">(</span><span class="n">placementName</span><span class="p">:</span> <span class="nc">String</span><span class="p">)</span> <span class="p">{</span>
        <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad rewarded user for placement: $placementName"</span><span class="p">)</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>

</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">HeliumFullscreenAdListener</span> <span class="n">heliumFullscreenAdListener</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">HeliumFullscreenAdListener</span><span class="o">()</span> <span class="o">{</span>
    <span class="nd">@Override</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdCached</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">String</span> <span class="n">placementName</span><span class="o">,</span> <span class="nd">@NonNull</span> <span class="nc">String</span> <span class="n">loadId</span><span class="o">,</span> <span class="nd">@NonNull</span> <span class="nc">Map</span><span class="o">&lt;</span><span class="nc">String</span><span class="o">,</span> <span class="nc">String</span><span class="o">&gt;</span> <span class="n">winningBidInfo</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">ChartboostMediationAdException</span> <span class="n">error</span><span class="o">)</span> <span class="o">{</span>
        <span class="k">if</span> <span class="o">(</span><span class="n">error</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
            <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad cache failed for placement: "</span> <span class="o">+</span> <span class="n">placementName</span> <span class="o">+</span> <span class="s">" reason: "</span> <span class="o">+</span> <span class="n">error</span><span class="o">.</span><span class="na">getMessage</span><span class="o">());</span>
        <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
            <span class="c1">// Show the ad if it's ready</span>
            <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad cached for placement: "</span> <span class="o">+</span> <span class="n">placementName</span><span class="o">);</span>
        <span class="o">}</span>
    <span class="o">}</span>
 
    <span class="nd">@Override</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdShown</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">String</span> <span class="n">placementName</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">ChartboostMediationAdException</span> <span class="n">error</span><span class="o">)</span> <span class="o">{</span>
        <span class="k">if</span> <span class="o">(</span><span class="n">error</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
            <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad show failed for placement: "</span> <span class="o">+</span> <span class="n">placementName</span> <span class="o">+</span> <span class="s">" reason: "</span> <span class="o">+</span> <span class="n">error</span><span class="o">.</span><span class="na">getMessage</span><span class="o">());</span>
        <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
            <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad shown for placement: "</span> <span class="o">+</span> <span class="n">placementName</span><span class="o">);</span>
        <span class="o">}</span>
    <span class="o">}</span>
 
    <span class="nd">@Override</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdClicked</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">String</span> <span class="n">placementName</span><span class="o">)</span> <span class="o">{</span>
        <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad clicked for placement: "</span> <span class="o">+</span> <span class="n">placementName</span><span class="o">);</span>
    <span class="o">}</span>
 
    <span class="nd">@Override</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdClosed</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">String</span> <span class="n">placementName</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">ChartboostMediationAdException</span> <span class="n">error</span><span class="o">)</span> <span class="o">{</span>
        <span class="k">if</span> <span class="o">(</span><span class="n">error</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
            <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad closed with error for placement: "</span> <span class="o">+</span> <span class="n">placementName</span> <span class="o">+</span> <span class="s">" reason: "</span> <span class="o">+</span> <span class="n">error</span><span class="o">.</span><span class="na">getMessage</span><span class="o">());</span>
        <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
            <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad closed for placement: "</span> <span class="o">+</span> <span class="n">placementName</span><span class="o">);</span>
        <span class="o">}</span>
    <span class="o">}</span>

    <span class="nd">@Override</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdImpressionRecorded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">String</span> <span class="n">placementName</span><span class="o">)</span> <span class="o">{</span>
        <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad recorded impression for placement: "</span> <span class="o">+</span> <span class="n">placementName</span><span class="o">);</span>
    <span class="o">}</span>

    <span class="nd">@Override</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdRewarded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">String</span> <span class="n">placementName</span><span class="o">)</span> <span class="o">{</span>
        <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad rewarded user for placement: "</span> <span class="o">+</span> <span class="n">placementName</span><span class="o">);</span>
    <span class="o">}</span>
<span class="o">};</span>
</code></pre></div></div>

</li>
  
</ul>




## HeliumBannerAdListener

You can implement the `HeliumBannerAdListener` interface to receive notifications about banner ads loading, displaying, and closing.

Starting with version 3.0.0, the `HeliumBannerAdListener` no longer has the `didShow` and `didClose` callbacks. In addition, the `didReceiveWinningBid` callback is only called when the placement has auto-refresh disabled.


<ul class="tab" data-tab="64b57f5c-dd69-44bd-839d-2c80a4bffc0a" data-name="HeliumBannerAdListener">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="64b57f5c-dd69-44bd-839d-2c80a4bffc0a" data-name="HeliumBannerAdListener">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">heliumBannerAdListener</span> <span class="p">=</span> <span class="kd">object</span> <span class="err">: </span><span class="nc">HeliumBannerAdListener</span> <span class="p">{</span>
    <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdCached</span><span class="p">(</span>
        <span class="n">placementName</span><span class="p">:</span> <span class="nc">String</span><span class="p">,</span>
        <span class="n">loadId</span><span class="p">:</span> <span class="nc">String</span><span class="p">,</span>
        <span class="n">winningBidInfo</span><span class="p">:</span> <span class="nc">HashMap</span><span class="p">&lt;</span><span class="nc">String</span><span class="p">,</span> <span class="nc">String</span><span class="p">&gt;,</span>
        <span class="n">error</span><span class="p">:</span> <span class="nc">ChartboostMediationAdException</span><span class="p">?</span>
    <span class="p">)</span> <span class="p">{</span>
        <span class="n">error</span><span class="o">?.</span><span class="nf">let</span> <span class="p">{</span>
            <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad cache failed for placement: $placementName "</span> <span class="p">+</span> 
            <span class="s">"reason: ${it.message}"</span> <span class="p">)</span>
        <span class="p">}</span> <span class="o">?:</span> <span class="nf">run</span> <span class="p">{</span>
            <span class="c1">// Show the ad if it's ready</span>
            <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad cached for placement: $placementName with loadId $loadId and winningBidInfo $winningBidInfo"</span><span class="p">)</span>
        <span class="p">}</span>
    <span class="p">}</span>

    <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdClicked</span><span class="p">(</span><span class="n">placementName</span><span class="p">:</span> <span class="nc">String</span><span class="p">)</span> <span class="p">{</span>
        <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad clicked for placement: $placementName"</span><span class="p">)</span>
    <span class="p">}</span>

    <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdImpressionRecorded</span><span class="p">(</span><span class="n">placementName</span><span class="p">:</span> <span class="nc">String</span><span class="p">)</span> <span class="p">{</span>
        <span class="nc">Log</span><span class="p">.</span><span class="nf">d</span><span class="p">(</span><span class="nc">TAG</span><span class="p">,</span> <span class="s">"Ad impression recorded for placement: $placementName"</span><span class="p">)</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>

</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">HeliumBannerAdListener</span> <span class="n">heliumBannerAdListener</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">HeliumBannerAdListener</span><span class="o">()</span> <span class="o">{</span>

    <span class="nd">@Override</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdCached</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">String</span> <span class="n">placementName</span><span class="o">,</span> <span class="nd">@NonNull</span> <span class="nc">String</span> <span class="n">loadId</span><span class="o">,</span> <span class="nd">@NonNull</span> <span class="nc">Map</span><span class="o">&lt;</span><span class="nc">String</span><span class="o">,</span> <span class="nc">String</span><span class="o">&gt;</span> <span class="n">winningBidInfo</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">ChartboostMediationAdException</span> <span class="n">error</span><span class="o">)</span> <span class="o">{</span>
        <span class="k">if</span> <span class="o">(</span><span class="n">error</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
            <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad cache failed for placement: "</span> <span class="o">+</span> <span class="n">placementName</span> <span class="o">+</span> <span class="s">" reason: "</span> <span class="o">+</span> <span class="n">error</span><span class="o">.</span><span class="na">getMessage</span><span class="o">());</span>
        <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
            <span class="c1">// Banners should automatically show if they are on screen</span>
            <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad cached for placement: "</span> <span class="o">+</span> <span class="n">placementName</span> <span class="o">+</span> <span class="s">" with loadId "</span> <span class="o">+</span> <span class="n">loadId</span> <span class="o">+</span> <span class="s">" and winningBidInfo "</span> <span class="o">+</span> <span class="n">winningBidInfo</span><span class="o">);</span>
        <span class="o">}</span>
    <span class="o">}</span>

    <span class="nd">@Override</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdClicked</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">String</span> <span class="n">placementName</span><span class="o">)</span> <span class="o">{</span>
        <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad clicked for placement: "</span> <span class="o">+</span> <span class="n">placementName</span><span class="o">);</span>
    <span class="o">}</span>

    <span class="nd">@Override</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdImpressionRecorded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">String</span> <span class="n">placementName</span><span class="o">)</span> <span class="o">{</span>
        <span class="nc">Log</span><span class="o">.</span><span class="na">d</span><span class="o">(</span><span class="no">TAG</span><span class="o">,</span> <span class="s">"Ad impression recorded for placement: "</span> <span class="o">+</span> <span class="n">placementName</span><span class="o">);</span>
    <span class="o">}</span>
<span class="o">};</span>
</code></pre></div></div>

</li>
  
</ul>



> **Note**
> Not all partner SDKs support the `onAdClicked` and `onAdRewarded` callbacks.


