Integration via Maven

SDK Version: 4.8.11

If you are upgrading the SDK from an older version, you have to repeat step 1 and re-import all effected classes. 

This document describes the basic procedure for integrating (Formerly StartApp) In-App Ads into your Android applications.

After this simple integration process, In-App Ads enables you to reap the benefits of's In-App monetization products, which maximize the revenue generated by your application. All this profit-making is achieved with minimal effort and minimal interference with your users' experience.

  • The code samples in this document can be copy/pasted into your source code
  • Feel Free to check out our sample project as a reference
  • We strongly recommend you incorporate Integration Tests during the integration and before going live
  • Please notice that steps 1-3 below are mandatory
  • If you have any questions, contact us here.


Getting Started

Step 1, Adding and Initializing the SDK to Your Project


Pull the latest version of the SDK with Maven integration.

  • You should implement only one of the initialization methods below based on your preference.
AndroidManifest.xml Initialization (Recommended) Code Initialization
1. Downloading the SDK

The simplest way to integrate our SDK into your project is by using Maven. Add the following repositories and dependencies to your app-level build.gradle file:

repositories {

dependencies {
  implementation 'com.startapp:inapp-sdk:4.8.+'
2. Updating Your AndroidManifest.xml File

You can add the following optional permissions under the main <manifest> element:

<uses-permission android:name="android.permission.BLUETOOTH" />
Add following meta-data tag with your ( Formerly StartApp) App Id under the <application> section in your manifest file:
android:value="startapp_app_id" />

Replace "startapp_app_id" with your own value provided in the developers’ portal

To find your application ID, click on the "My Apps" tab on the left pane and choose the relevant ID from your app list:


If you want to disable return ads (they are enabled by default) please add following meta-data tag:
android:value="false" />

Step 2, Obfuscation (Mandatory for Proguard users)

Obfuscation protects an application from reverse-engineering or modification by making it harder for a third-party to access your source (decompiled) code. In-Ad is already obfuscated! Therefore, if you did not obfuscate your application using ProGuard™, then you can skip this step. If you have obfuscated your application using ProGuard, then use the following in the ProGuard configuration file:

-keep class com.startapp.** {

-keep class com.truenet.** {

-keepattributes Exceptions, InnerClasses, Signature, Deprecated, SourceFile,
LineNumberTable, *Annotation*, EnclosingMethod
-dontwarn android.webkit.JavascriptInterface
-dontwarn com.startapp.**

-dontwarn org.jetbrains.annotations.**

Step 3, App Permissions (COPPA Compliant)

In case your app target children (as defined under applicable laws, such as 13 in the US and 16 in the EU) and you integrated the SDK version through Maven, you need to remove the WIFI permission from your manifest merger. In order to do so, follow these steps:

  1. Add this line to the manifest element:
  2. Add this line to your permission list:
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" tools:node="remove"/>


User Consent Consent 

We help you to be compliant with Privacy laws, when embedding our SDK.

Privacy laws require to disclose to the app users that ( Formerly StartApp) SDK is embedded in your app and collects and processes their personal data for the purpose of displaying personalized advertising. In some jurisdictions, users’ consent is required as well. We embedded a disclosure / consent box which will be presented to the app users and will enable them to review Privacy Policy, as well as exercise their rights. disclosure/ consent box is presented immediately after the application is launched. disclosure/ consent box is enabled by default. 

Consent From European Users (GDPR) 

In addition to ( Formerly StartApp) disclosure / consent box, as required under GDPR, you should report to us users’ consent by consent flag (“pas”), via the API detailed herein below,.

The user consent flag indicates whether a user based in the EU has provided consent for sharing his app data for the purpose of ads personalization. Based on this consent flag, will target the most relevant ads to your users. If a user has not consented, we will not show personalized ads to this user.

  • Collection of consent is only required in countries covered by GDPR (EU member states). Consent is not required for users that are based outside those countries.
  • We recommend you to pass the consent flag to right after initializing the SDK.
  • In case of any consent change during the lifetime of the user activity, you are required to re-submit the relevant consent flag to
  • Older SDK versions (before 3.9.3): We'll continue to support them with showing ads. It’s important to know that in case you cannot update the SDK version and the user consent is false for GDPR users, do not initialize SDK for such users.

Use this method in case the user has consented:

StartAppSDK.setUserConsent (this,  

Use this method in case the user has not consented:

StartAppSDK.setUserConsent (this,  

NOTE: timestamp parameter should represent the specific time a consent was given by the user.

To make the process easier, we have added a consent window to our demo apps. Please follow the link to see demo projects. 

Ad Formats

Splash Ad (recommended) ( Formerly StartApp) Splash Ad is a top performing ad unit, presenting the industry's highest CPM's

A Splash Ad is a full-page ad that is displayed immediately after the application is launched. A Splash Ad first displays a full page splash screen that you define (as described below) followed by a full page ad.

The Splash Ad is enabled by default. If you want to disable it simply call StartAppAd.disableSplash() after calling StartAppSDK.init.

By default, your application will be using a pre-defined splash screen designed by If you want to customize this screen or if you already have your own splash screen and want to use it, please refer to the Advanced Usage.

Return Ad

The Return Ad is a new ad unit which is displayed once the user returns to your application after a certain period of time. To minimize the intrusiveness, short time periods are ignored.

Return ads are enabled and activated by default. If you want to disable this feature, simply pass "false" as the 3th parameter of the StartAppSDK.init method:

StartAppSDK.init(this, "StartApp App ID", false);


Interstitial Ads

Interstitial Ads are full page ads, displayed before or after a certain content page or action, such as upon entering a stage, between stages, while waiting for an action, upon exiting the application and more. There are three ways of integrating Interstitial Ads:
Exit Ads - show an ad upon exiting your application
Standard Interstitial Ads - show an ad at a specific location(s) in your application
Autostitial Ads - show an ad automatically between activities

Exit Ads

To show an ad upon exiting your application when pressing the 'Back' button, override the onBackPressed() method and add the method StartAppAd.onBackPressed(this) BEFORE the method super.onBackPressed() (this is the activity/application context):

public void onBackPressed() {

Standard Interstitials

Use the showAd()  method to show an Interstitial Ad at a specific location inside your app.

Call StartAppAd.showAd(this) in the appropriate place(s) in the activity where you would like to show the Ad. The showAd method returns true in case the ad was displayed successfully, or false if not (for example, if an ad isn't ready yet).

The following is an example of showing an Interstitial Ad between Activities:

public void btnOpenActivity (View view){
    Intent nextActivity = new Intent(this, NextActivity.class);

Please notice - If you want to use Autostitial Ads and yet to show an Interstitial in a specific location, call StartAppAd.disbleAutoInterstitial(); before calling StartAppAd.showAd, otherwise two ads might be displayed together. Remember to call StartAppAd.enableAutoInterstitial(); afterthat to reanable Autostitial Ads.


Loading an ad might take a few seconds. In case you call showAd() while the ad hasn't been successfully loaded yet, nothing will be displayed. If you want to show an ad when your application is launched, use our "Splash Ad". You can also implement your interstitial ad as an object and use the "onReceiveAd" callback which is triggered when an ad was loaded and ready to use. See"Interstitial Ads"under the "Advanced Usage" section.


"Autostitial" stands for "Auto Interstitial"; use this integration to show an Interstitial Ad each time an activity is changed.
Simply call StartAppAd.enableAutoInterstitial(); after calling StartAppSDK.init. You can gain more control over the frequency of Autostitial Ads using two methods: time frequency and activity frequency.

Time Frequency

You can set a minimum time interval between consecutive Autostitial Ads.
For example, set a 1 minute interval between two consecutive ads (time in seconds):

                  new AutoInterstitialPreferences()

Activity Frequency

You can set a minimum number of activities between consecutive Autostitial Ads.
For example, show an Autostitial after each 3 activities:

                  new AutoInterstitialPreferences()

Time frequency and activity frequency can be used together.

Banner Ads

Add the following View inside your Activity layout XML

android:layout_centerHorizontal="true" />

This code places a View inside your Activity. You also have the option to add additional attributes for placing it in the desired location in your Activity.

For a full integration guide, please refer to the Advanced Usage page.

MRec Ads

MRec is a 300X250 rectangular ad integrated within an app's layout. The ad will be refreshed automatically.

Add the following View inside your Activity layout XML:

android:layout_centerHorizontal="true" />

This code places a View inside your Activity. You also have the option to add additional attributes for placing it in the desired location in your Activity.

For adding MRec programmatically, instead of using the layout XML:

// Get the Main relative layout of the entire activity
RelativeLayout mainLayout = (RelativeLayout)findViewById(;

// Define StartApp Mrec
Mrec startAppMrec = new Mrec(this);
RelativeLayout.LayoutParams mrecParameters =
            new RelativeLayout.LayoutParams(

// Add to main Layout
mainLayout.addView(startAppMrec, mrecParameters);

Cover Ads

Cover is a 1200X628 px. (300x157 DP)  rectangular ad integrated within an app's layout. The ad will be refreshed automatically.

Add the following View inside your Activity layout XML:

android:layout_centerHorizontal="true" />

This code places a View inside your Activity. You also have the option to add additional attributes for placing it in the desired location in your Activity.

For adding Cover programmatically, instead of using the layout XML:

// Get the Main relative layout of the entire activity
RelativeLayout mainLayout = (RelativeLayout)findViewById(;

// Define StartApp Cover
Cover startAppCover = new Cover(this);
RelativeLayout.LayoutParams coverParameters =
            new RelativeLayout.LayoutParams(

// Add to main Layout
mainLayout.addView(startAppCover, coverParameters);

Rewarded Video Ads

Rewarded Ads are interstitial video ads that provide a reward to the user in exchange for watching an entire video ad. The reward might be in-app goods, virtual currency or any premium content provided by the application. Because users actually opt-in to watch a rewarded video and are granted with something valuable in return, Rewarded Ads are an effective and clean monetization solution for stronger user retention and keeping users engaged in your application for a longer amount of time.

In order to show a Rewarded Ad, pass the following AdMode parameter when calling the loadAd() method:


Implement the following listener in order to get a callback when the user completes watching the video and is eligible for getting the reward:

startAppAd.setVideoListener(new VideoListener() {
     public void onVideoCompleted() {
          // Grant user with the reward

Native Ads

A "Native Ad" is a raw representation of an ad without any pre-defined wrapping UI, which gives you the freedom to design and control the ad exactly as you want. Using Native Ads, you can design an ad experience that perfectly fits your application's scene, content and functionality.

For a full integration guide, please refer to the "Using Native Ads" section under the "Advanced Usage" page.



What is app-ads.txt?

With a goal of increasing transparency to the mobile advertising echo system, IAB Tech Lab released app-ads.txt.

App-ads.txt allows the publishers to declare who is officially authorized to sell their inventory, this in return, allows the buyers to purchase the same inventory with confidence in terms of it's legitimacy and authenticity. 

Adding App-ads.txt with

At ( Formerly StartApp) we strive to comply with the highest industry standards, we strongly encourage you to add entries to your app-ads.txt file.
In order to do so, you need to simply follow the instructions on this article. 


Testing the Integration

Before you publish your app with ( Formerly StartApp), we strongly recommend that you test your integration to ensure it is operating properly.

Turn on Test Mode by adding the following:


Now you are all set to get test ads.

  • You MUST turn off the test mode by removing the code above before going live or else your app will fail to monetize.

Helpful Log Information's SDK automatically prints key logs to the DDMS console. These logs provide useful information about the initialization and ad load life cycle. 

The following table capture these logs:


Log Level

Log Message

The SDK successfully initialized with APP_ID

Info's SDK initialized with account id: %APP_ID%"

If appId was set empty or null


Invalid app id passed to init. Please provide a valid app id.

If a publisher didn’t write needed permissions in the manifest file


Please grant the mandatory permissions : INTERNET & ACCESS_NETWORK_STATE, SDK could not be initialized.

If an ad was successfully loaded, the placement AD_TYPE can be of following values depends on which ad has been loaded:

  1. VIDEO
  8. MREC
  9. COVER
  10. BANNER_3D
  11. NATIVE



Loaded %AD_TYPE% ad with creative ID - %ADID%"

if an ad failed to load, the AD_TYPE takes value from the previous ‘successful loaded’ column and ERROR_MESSAGE shows the reason which can be NO FILL


Failed to load %AD_TYPE% ad %ERROR_MESSAGE%

if an impression was sent successfully


Sending impression

if an impression wasn’t sent but the ad had been rendered, happens by different REASONs: if an ad was overlapped by an other view or an ad has been closed too quickly


Dropped impression because %REASON%"

If an ad was closed by the user, pressed [X] button


Closed Ad

If an ad was clicked by the user and click event has been sent


Clicked Ad

if an ad was prevented from loading by the SDK according to feature 'explicit loading'. PLACEMENT can be of following values:



Failed to load %PLACEMENT% ad: NO FILL

Sample Project (Formerly StartApp) provides a sample integration project available on "GitHub"

Advanced Usage

For advanced usage, please refer to the "Advanced Usage"