Android SDK Integration
As of ironSource SDK 7.6.0, the minimum supported Kotlin version is 1.7.0.
The download, use and access to the SDK is subject to the ironSource Platform Online Terms and Conditions. If you do not agree to the terms of ironSource Mobile SDK Publisher Online Terms & Conditions, do not download, access, or use the SDK, or the underlying services.
Step 1. Add the ironSource SDK to Your Project
As of ironSource SDK Version 6.16.0, ironSource SDK will be released as AAR.
Please make sure that you update the dependency section according to the information below.
Please note that Manifest Activities are included in the AAR.
ironSource SDK supports both Gradle dependencies and manual download mechanisms to integrate our SDK:
Gradle
- Add the following to your app’s build.gradle file inside repositories section:
repositories { maven { url 'https://android-sdk.is.com/' } }
- Then add the following to the dependencies section:
dependencies { implementation 'com.ironsource.sdk:mediationsdk:8.4.0' implementation 'com.ironsource:adqualitysdk:7.21.1' }
To opt out Ad Quality from your project, remove the Ad Quality SDK dependency from the dependencies section.
Gradle version 7+
If you’re using Gradle version 7+, update your repository section on your settings.gradle file, instead of build.gradle. Please note the repository section should be included as part of the dependencyResolutionManagement section:
dependencyResolutionManagement {
repositories {
maven {
url 'https://android-sdk.is.com/'
}
}
}
Manual Download
- Download Android SDK Version 8.4.0
- Download Ad Quality SDK
- Import the .AAR file as a library project.
- If using Android Studio, download the ironSource .AAR file and add as a dependency to your own module.
- Go to File ➣ New ➣ New Module ➣ Import .AAR and navigate to the location where the ironSource .AAR file has been downloaded.
- Note: ironSource Manifest Activities are included in the AAR.
- Make sure you add the following to your build.gradle file under the dependencies section:
implementation(name: 'mediationsdk-8.4.0', ext:'aar') implementation(name: 'IronSourceAdQuality-v7.20.5', ext:'aar')
- As of ironSource SDK 7.0.4+ you are required to add the Kotlin JARs to your project. You can read more about Kotlin support here.
- Rename the new mediationsdk-xxx.aar to mediationsdk-xxx.zip.
- Rename the new IronSourceAdQuality-xxx.jar to IronSourceAdQuality-xxx.zip.
- Extract the classes.jar
- Rename it to mediationsdk_xxx.jar and IronSourceAdQuality-xxx.jar .
- Update AndroidManifest.xml
-
- Manifest Permissions
Add the following permissions to your AndroidManifest.xml file inside the manifest tag but outside the <application> tag:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- Manifest Activities and Provider
Add this section inside the <application> tag in your AndroidManifest:<activity android:name="com.ironsource.sdk.controller.ControllerActivity" android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" /> <activity android:name="com.ironsource.sdk.controller.InterstitialActivity" android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:theme="@android:style/Theme.Translucent" /> <activity android:name="com.ironsource.sdk.controller.OpenUrlActivity" android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:theme="@android:style/Theme.Translucent" /> <activity android:name="com.ironsource.mediationsdk.testSuite.TestSuiteActivity" android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:theme="@android:style/Theme.NoTitleBar" /> <provider android:name="com.ironsource.lifecycle.IronsourceLifecycleProvider" android:authorities="${applicationId}.IronsourceLifecycleProvider" />
- Manifest Permissions
- Add the Play Services dependencies into the dependencies block, to allow GAID and APP Set ID information to be retrieved.
Learn more about Google’s app set id here.dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.google.android.gms:play-services-appset:16.0.0' implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1' implementation 'com.google.android.gms:play-services-basement:18.1.0' }
- Apps updating their target API level to 33 (Android 13) will need to declare a Google Play services normal permission in the manifest file as follows:
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
Read more about Google Advertising ID changes here.
- For Rewarded Video
IronSource.setLevelPlayRewardedVideoListener(mLevelPlayRewardedVideoListener);
- For Interstitial
IronSource.setLevelPlayInterstitialListener(mLevelPlayInterstitialListener);
- For Banner
mBannerLayout.setLevelPlayBannerListener(mLevelPlayBannerListener);
- We recommend this approach as it will fetch the specific ad units you define in the adUnits parameter. Ad unit is a string array.
/** *Ad Units should be in the type of IronSource.Ad_Unit.AdUnitName, example */ IronSource.init(this, appKey, IronSource.AD_UNIT.INTERSTITIAL, IronSource.AD_UNIT.REWARDED_VIDEO, IronSource.AD_UNIT.BANNER);
When using this init approach, you can now initialize each ad unit separately at different touchpoints in your app flow in one session.
//Rewarded Video IronSource.init(this, appKey, IronSource.AD_UNIT.REWARDED_VIDEO); //Init Interstitial IronSource.init(this, appKey, IronSource.AD_UNIT.INTERSTITIAL); //Init Banner IronSource.init(this, appKey, IronSource.AD_UNIT.BANNER);
- Alternatively, you can init the SDK as detailed below and the SDK will init the ad units you’ve configured on the LevelPlay platform:
IronSource.init(this, appKey);
- Follow our integration guides and implement our Ad Units:
Rewarded Video
Interstitial
Banner Mediation - Interested in Mediation? Integrate our Rewarded Video, Interstitial or Banner Ads in your app and follow our Mediation articles.
- Verify your integration with the Integration Helper.
Optional: Manual JAR Integration
If you are using mediationsdk_xxx.jar and IronSourceAdQuality_xxx.jar in your project, you can still use the same configuration.
Update AndroidManifest.xml for Manual JAR Integration
To update your AndroidManifest.xml, please complete the following steps:
Demo Application
The Integration Demo application demonstrate how to integrate the LevelPlay Mediation in your app.
Download Android Demo ApplicationStep 2. Google identifier permissions
Step 3. Override Your Activity Lifecycle Methods
Application Lifecycle
Override the onPause(), onResume() methods in each of your activities to call the corresponding ironSource methods as follows:
protected void onResume() { super.onResume(); IronSource.onResume(this); } protected void onPause() { super.onPause(); IronSource.onPause(this); }
Step 4. Set the Listeners
The ironSource SDK fires several events to inform you of your ad unit activity. To receive these events, register to the listener of the ad units you set up on the LevelPlay platform.
Make sure you set the listeners before initializing the SDK, to avoid any loss of information.
Step 5. Initialize the SDK
If you’re using server-to-server callbacks to reward your users with our rewarded ad units, or using ad Quality user journey, you must set the UserID.
Init the SDK
The SDK can be initialized in two ways:
Init Complete Callback
The ironSource SDK fires callback to inform you that the ironSource SDK was initialized successfully, for ironSource SDK 7.2.1+ . This listener will provide you an indication that the initialization process was completed, and you can start loading ads. The callback will be sent once per session, and will indicate the first initialization of the SDK.
IronSource.init(this, APP_KEY, new InitializationListener() {
@Override
public void onInitializationComplete() {
// ironSource SDK is initialized
}
});
IronSource.init(this, APP_KEY) {
// ironSource SDK is initialized
}
For ProGuard Users Only
If you are using ProGuard with the ironSource SDK, you must add the following code to your ProGuard file (Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt):
-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
#noinspection ShrinkerUnresolvedReference
#unity
-keep class com.google.android.gms.ads.** {public *;}
-keep class com.google.android.gms.appset.** { *; }
-keep class com.google.android.gms.tasks.** { *; }
#adapters
-keep class com.ironsource.adapters.** { *; }
#sdk
-dontwarn com.ironsource.**
-dontwarn com.ironsource.adapters.**
-keepclassmembers class com.ironsource.** { public *; }
-keep public class com.ironsource.**
-keep class com.ironsource.adapters.** { *;
}
#omid
-dontwarn com.iab.omid.**
-keep class com.iab.omid.** {*;}
#javascript
-keepattributes JavascriptInterface
-keepclassmembers class * { @android.webkit.JavascriptInterface <methods>; }
#For AmazonAps integration
-keep class com.amazon.device.ads.DtbThreadService {
static *;
}
-keep public interface com.amazon.device.ads** {*; }
#For AppLovin integration
-keepclassmembers class com.applovin.sdk.AppLovinSdk {
static *;
}
-keep public interface com.applovin.sdk** {*; }
-keep public interface com.applovin.adview** {*; }
-keep public interface com.applovin.mediation** {*; }
-keep public interface com.applovin.communicator** {*; }
#For Bytedance integration
-keep public interface com.bytedance.sdk.openadsdk** {*; }
#For Facebook integration
-keepclassmembers class com.facebook.ads.internal.AdSdkVersion {
static *;
}
-keepclassmembers class com.facebook.ads.internal.settings.AdSdkVersion {
static *;
}
-keepclassmembers class com.facebook.ads.BuildConfig {
static *;
}
-keep public interface com.facebook.ads** {*; }
#For Fairbid
-keep public interface com.fyber.fairbid.ads.interstitial** {*; }
-keep public interface com.fyber.fairbid.ads.rewarded** {*; }
-keep class com.fyber.offerwall.*
#For Fivead
-keep public interface com.five_corp.ad** {*; }
#For Fyber(Inneractive) integration
-keep public interface com.fyber.inneractive.sdk.external** {*; }
-keep public interface com.fyber.inneractive.sdk.activities** {*; }
-keep public interface com.fyber.inneractive.sdk.ui** {*; }
#For HyprMX integration
-keepclassmembers class com.hyprmx.android.sdk.utility.HyprMXProperties {
static *;
}
-keepclassmembers class com.hyprmx.android.BuildConfig {
static *;
}
-keep public interface com.hyprmx.android.sdk.activity** {*; }
-keep public interface com.hyprmx.android.sdk.graphics** {*; }
# For Inmobi integration
-keep class com.inmobi.*
-keep public interface com.inmobi.ads.listeners** {*; }
-keep public interface com.inmobi.ads.InMobiInterstitial** {*; }
-keep public interface com.inmobi.ads.InMobiBanner** {*; }
# For ironSource integration
-keep public interface com.ironsource.mediationsdk.sdk** {*; }
-keep public interface com.ironsource.mediationsdk.impressionData.ImpressionDataListener {*; }
#For Maio integration
-keep public interface jp.maio.sdk.android.MaioAdsListenerInterface {*; }
# For Mintergral integration
-keep public interface com.mbridge.msdk.out** {*; }
-keep public interface com.mbridge.msdk.videocommon.listener** {*; }
-keep public interface com.mbridge.msdk.interstitialvideo.out** {*; }
-keep public interface com.mintegral.msdk.out** {*; }
-keep public interface com.mintegral.msdk.videocommon.listener** {*; }
-keep public interface com.mintegral.msdk.interstitialvideo.out** {*; }
#For MyTarget integration
-keep class com.my.target.** {*;}
#For Ogury integration
-keep public interface io.presage.interstitial** {*; }
-keep public interface io.presage.interstitial.PresageInterstitialCallback {*; }
#For Pubnative integration
-keep public interface net.pubnative.lite.sdk.interstitial.HyBidInterstitialAd** {*; }
-keep public interface net.pubnative.lite.sdk.rewarded.HyBidRewardedAd** {*; }
-keep public interface net.pubnative.lite.sdk.views.HyBidAdView** {*; }
#For Smaato integration
-keep public interface com.smaato.sdk.interstitial** {*; }
-keep public interface com.smaato.sdk.video.vast** {*; }
-keep public interface com.smaato.sdk.banner.widget** {*; }
-keep public interface com.smaato.sdk.core.util** {*; }
# For Tapjoy integration
-keep public interface com.tapjoy.** {*; }
# For Tencent integration
-keep public interface com.qq.e.ads.interstitial2** {*; }
-keep public interface com.qq.e.ads.interstitial3** {*; }
-keep public interface com.qq.e.ads.rewardvideo** {*; }
-keep public interface com.qq.e.ads.rewardvideo2** {*; }
-keep public interface com.qq.e.ads.banner2** {*; }
-keep public interface com.qq.e.comm.adevent** {*; }
#For Verizon integration
-keepclassmembers class com.verizon.ads.edition.BuildConfig {
static *;
}
-keep public interface com.verizon.ads.interstitialplacement** {*; }
-keep public interface com.verizon.ads.inlineplacement** {*; }
-keep public interface com.verizon.ads.vastcontroller** {*; }
-keep public interface com.verizon.ads.webcontroller** {*; }
#For Vungle integration
-keep public interface com.vungle.warren.PlayAdCallback {*; }
-keep public interface com.vungle.warren.ui.contract** {*; }
-keep public interface com.vungle.warren.ui.view** {*; }
#For AndroidX
-keep class androidx.localbroadcastmanager.content.LocalBroadcastManager { *;}
-keep class androidx.recyclerview.widget.RecyclerView { *;}
-keep class androidx.recyclerview.widget.RecyclerView$OnScrollListener { *;}
#For Android
-keep class * extends android.app.Activity
Step 6. Verify Your Integration
The ironSource SDK provides an easy way to verify that your Rewarded Video Mediation integration was completed successfully. To verify your ironSource SDK integration as well as any additional Ad Networks you have implemented, simply add this method to your project:
IntegrationHelper.validateIntegration(activity);
For more details on the Integration Verification tool navigate to this article.
Done! You just integrated the ironSource SDK in your app.
You are now ready to start working with Ad Units and Mediation Tools.