The deltaDNA SmartAds SDK provides your Android game with access to our intelligent ad mediation platform. It supports both interstitial and rewarded type ads.
- Adding to a Project
- Initialising
- Showing Ads
- User Consent for Tracking and Age Restriction (GDPR)
- Permissions
- Diagnostics
- ProGuard
- FAQs
- Changelog
- Migrations
- License
- Contact Us
The deltaDNA SmartAds SDK can be used in Android projects using minimum SDK version 16 and newer (Android 4.1+).
In your top-level build script
allprojects {
repositories {
maven { url 'https://deltadna.bintray.com/android' }
maven { url 'https://dl.bintray.com/ironsource-mobile/android-sdk' }
maven { url 'https://raw.githubusercontent.com/HyprMXMobile/Android-SDKs/master' }
maven { url 'https://s3.amazonaws.com/moat-sdk-builds' }
maven { url 'https://tapjoy.bintray.com/maven' }
// repositories for your other dependencies...
}
}
In your app's build script
implementation 'com.deltadna.android:deltadna-sdk:VERSION'
implementation 'com.deltadna.android:deltadna-smartads:1.10.0'
// ad providers (can mix and match depending on which ones need to be used)
implementation 'com.deltadna.android:deltadna-smartads-provider-adcolony:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-admob:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-amazon:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-applovin:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-chartboost:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-facebook:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-flurry:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-hyprmx:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-inmobi:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-ironsource:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-loopme:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-mobfox:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-mopub:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-tapjoy:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-thirdpresence:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-unity:1.10.0'
implementation 'com.deltadna.android:deltadna-smartads-provider-vungle:1.10.0'
The Java source and target compatibility needs to be set to 1.8 in you app's build script:
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Please note that the versions used for SmartAds and the providers should be the same. We cannot guarantee that a provider will work correctly if there is a version mismatch.
The SDK needs to be initialised in an Application
subclass:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// initialise the Analytics SDK
DDNA.initialise(...);
// initialise the SmartAds SDK after Analytics
DDNASmartAds.initialise(new DDNASmartAds.Configuration(this));
}
}
The class needs to be registered in the manifest file:
<application
android:name=".MyApplication"
...>
</application>
After the initialise()
call the SDK will be available throughout the entire lifecycle of the application by calling DDNASmartAds.instance()
. The SDK will automatically register for ads and forward lifecycle callbacks after the Analytics SDK has been started.
Listening to the registration status for interstitial and rewarded ads can be done by using the setAdRegistrationListener(AdRegistrationListener)
method.
DDNASmartAds.instance().setAdRegistrationListener(new AdRegistrationListener() {
// callback methods
});
Showing interstitial ads can be done by creating an instance of an InterstitialAd
and calling show()
. The result should be null-checked after create()
is called as the creation may fail if the time or session limits have been exceeded.
InterstitialAd ad = InterstitialAd.create();
if (ad != null) {
ad.show();
}
Rewarded ads are created in a similar way, but through the RewardedAd
class instead.
Ads can be created off an Engage request by using the EngageFactory
and using one of the requestInterstitialAd
or requestRewardedAd
methods. Unlike with the analytics EngageFactory
the SmartAds instance will always return a non-null ad object in the onCompleted
callback.
DDNASmartAds.instance().getEngageFactory().requestInterstitialAd(
"myDecisionPoint",
new Callback<InterstitialAd>() {
@Override
public void onCompleted(InterstitialAd action) {
// do something with the ad action
}
});
Alternatively, if more control over the possible Engage responses is needed, Engage checked ads can be created by performing an Engage request and then creating an InterstitialAd
or RewardedAd
instance from the returned Engagement
. The following example shows how to handle Engage returning an ad or an image message.
DDNA.instance().requestEngagement(
new Engagement("showAdOrImageMessage"),
new EngageListener<Engagement>() {
@Override
public void onCompleted(Engagement engagement) {
RewardedAd ad = RewardedAd.create(engagement);
ImageMessage image = ImageMessage.create(engagement);
if (image != null) {
// code for showing Image Message
} else if (ad != null) {
ad.show();
}
}
@Override
public void onError(Throwable t) {
// act on error
}
});
Both ad classes allow for a listener to be passed in at creation and by calling setListener
for listening to ad lifecycle events.
By default user consent is not given for advertising user tracking and the user is assumed to not be age restricted (16 and over). These settings can be changed through the Settings
class by calling DDNASmartAds.instance().getSettings()
or when SmartAds is being initialised. Changes to either of the values while SmartAds is running will take effect during the next session.
The library includes all the required permissions in its manifest file which will get included by Android's manifest merger during the build process. The included permissions are the minimal required set for ensuring functionality of the ad providers, and all of them are non-dangerous permissions and thus don't require explicit granting of permissions on Android 6+ versions.
Additional (often dangerous) permissions may be added to increase the functionality/performance for the ad network providers. These have been listed in every provider's manifest file as a comment. You may add any of these to your application's manifest as needed.
More details can be shown about which ads are loaded and have been shown by adding the deltadna-smartads-debug
dependency to your project. We only recommend adding this for debug builds of your application. You can achieve this with Gradle with the following example:
dependencies {
implementation 'com.deltadna.android:deltadna-smartads:1.10.0'
debugImplementation 'com.deltadna.android:deltadna-smartads-debug:1.10.0'
}
The notification can be hidden, until the application is restarted, by swiping away on it.
There is no need to add additional directives in your ProGuard configuration if you are setting minifyEnabled true
for your application as the library provides its own configuration file which gets included by the Android build tools during the build process.
-
I'm getting a
TransformException
on thetransformClassesWithDexForDebug
task when my project is being built.This can happen if you have included more ad providers which can result in your app containing more than 65K methods. Ad providers can either be removed to decrease the method count, or an official workaround can be implemented.
Can be found here.
The sources are available under the Apache 2.0 license.
For more information, please visit deltadna.com. For questions or assistance, please email us at [email protected].