# Initialize Mediation

## Import the Mediation SDK

<ul class="tab" data-tab="b089a7b2-fa92-4836-9247-29b20f34701b" data-name="importMediationSDK">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="b089a7b2-fa92-4836-9247-29b20f34701b" data-name="importMediationSDK">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">import</span> <span class="nn">com.chartboost.heliumsdk.HeliumSdk</span>
</code></pre></div></div>

</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">com.chartboost.heliumsdk.HeliumSdk</span><span class="o">;</span>
</code></pre></div></div>

</li>
  
</ul>




## Initializing the Mediation SDK and setting a HeliumSdkListener

<div class="alert alert-info" role="alert">
  <b>Note:</b> Some Android API 21-24 (5.0-7.0) devices cannot initialize with Chartboost Mediation SDK due to their incompatibility with newer TLS versions and/or certificates.
</div>

Using the Mediation **application ID** and **application signature** from your dashboard, initialize the Mediation SDK:

<ul class="tab" data-tab="2aee6e75-f2e6-45c2-a147-b163c43d5f6e" data-name="HeliumSdkListener">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="2aee6e75-f2e6-45c2-a147-b163c43d5f6e" data-name="HeliumSdkListener">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">HeliumSdk</span><span class="p">.</span><span class="nf">start</span><span class="p">(</span><span class="k">this</span><span class="nd">@MyActivityContext</span><span class="p">,</span> <span class="n">myHeliumAppId</span><span class="p">,</span> <span class="n">myHeliumAppSignature</span><span class="p">,</span> <span class="n">heliumSdkListener</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">HeliumSdk</span><span class="o">.</span><span class="na">start</span><span class="o">(</span><span class="nc">MyActivityContext</span><span class="o">.</span><span class="na">this</span><span class="o">,</span> <span class="n">myHeliumAppId</span><span class="o">,</span> <span class="n">myHeliumAppSignature</span><span class="o">,</span> <span class="n">heliumSdkListener</span><span class="o">);</span>
</code></pre></div></div>

</li>
  
</ul>



Make sure the `AppId` and `AppSignature` are Mediation values obtained directly from the Mediation Dashboard for your app and not credentials from Chartboost or any other Ad Network.

In the above example, we’re passing in the `heliumSdkListener` object to act as our **HeliumSdkListener**. Implementing the `HeliumSdkListener` interface allows you to receive notifications about the Mediation SDK’s initialization process:


<ul class="tab" data-tab="13582b8d-c86d-4048-bd41-2fee19cb8ea1" data-name="heliumSdkListener">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="13582b8d-c86d-4048-bd41-2fee19cb8ea1" data-name="heliumSdkListener">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kd">val</span> <span class="py">heliumSdkListener</span> <span class="p">=</span> <span class="kd">object</span> <span class="err">: </span><span class="nc">HeliumSdk</span><span class="p">.</span><span class="nc">HeliumSdkListener</span> <span class="p">{</span> <span class="n">error</span> <span class="p">-&gt;</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">"Helium SDK failed to initialize. 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">// SDK Initialized with no errors. </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">"Helium SDK Initialized successfully"</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">HeliumSdk</span><span class="o">.</span><span class="na">HeliumSdkListener</span> <span class="n">heliumSdkListener</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">HeliumSdk</span><span class="o">.</span><span class="na">HeliumSdkListener</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">didInitialize</span><span class="o">(</span><span class="nc">Error</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">"Helium SDK failed to initialize. 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">//SDK Started,</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">"Helium SDK initialized successfully"</span><span class="o">);</span>
        <span class="o">}</span>
    <span class="o">}</span>
<span class="o">};</span>
</code></pre></div></div>

</li>
  
</ul>


The `didInitialize` method will be called when the SDK is ready to handle more calls. If the SDK is initialized successfully, then proceed. If the error parameter is not `null`, it will state the reason why the SDK failed to initialize.



## Advanced Settings

### Initialization Metrics

The Mediation SDK contains an optional callback for receiving SDK initialization metrics in a JSON format. To utilize the API, use the following code snippets. Subscribing is highly recommended once initialization has succeeded.

```kotlin
// In the HeliumSdkListener for init success:
val partnerInitializationResultsObserver = object : PartnerInitializationResultsObserver {
    override fun onPartnerInitializationResultsReady(data: PartnerInitializationResultsData) {
        // Data is available in data
    }
}
HeliumSdk.subscribeInitializationResults(partnerInitializationResultsObserver)
```

### Network Kill Switch

The Mediation SDK initialization method has been expanded to take in optional initialization parameters. One of those parameters is a set of network adapter identifiers to skip initialization for the session.

```kotlin
// When using HeliumSdk.start():
val skippedPartnerIds = mutableSetOf<String>()
// skippedPartnerIds.add("chartboost") // for example
HeliumSdk.start(context, myHeliumAppId, myHeliumAppSignature, HeliumInitializationOptions(skippedPartnerIds), heliumSdkListener)
```

#### Network Adapter Identifiers

| Network                   | Identifier           |
| ------------------------- | -------------------- |
| AdMob                     | admob                |
| Amazon Publisher Services | amazon_aps           |
| AppLovin                  | applovin             |
| BidMachine                | bidmachine           |
| Meta Audience Network     | facebook             |
| Digital Turbine Exchange  | fyber                |
| Google Bidding            | google_googlebidding |
| InMobi                    | inmobi               |
| IronSource                | ironsource           |
| Mintegral                 | mintegral            |
| Pangle                    | pangle               |
| Unity                     | unity                |
| Vungle                    | vungle               |
| MobileFuse                | mobilefuse           |
| Verve                     | verve                |
| HyprMX                    | hyprmx               |



