Manual Integration

1. Installation

Tapdaq requires Android API 14 or higher, the following networks require higher minimum:

Network Minimum API Level
AppLovin 16
Maio 16
YouAppi 16

A. Add dependencies

Tapdaq SDK

Add the Tapdaq-BaseSDK_[VERSION].jar or Tapdaq-BaseSDK_[VERSION].aar to your project, usually your libs folder.

GSON

Add GSON library. Recommended version 2.8.2 or higher. Download

Play Services Identifier

If using play services 15.0.0 or higher, add the Play-Services-Identity library. Download

If using play services lower than 15.0.0, add the Play-Services-Basement library. Download

Android Support v4 Library

Add support v4 24.0.0 or higher. Download

Android Lifecycle Extension

Add the Android Lifecycle Extension 1.0.0 or higher and its dependencies. Download

B. Update permissions

Allow the following permissions and activities in your AndroidManifest.xml file, like so:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.company.name">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application>
        <!-- Debug Views -->
        <activity android:name="com.tapdaq.sdk.TMTestActivity"  android:configChanges="orientation|screenSize" />
    </application>
</manifest>

C. Add libraries

Download Tapdaq Base SDK and the adapters required, from each zip, add the .jar or .aar Adapter file as well as the ad network libraries to your project.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tapdaq.sample">

    <!-- Tapdaq Required -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <!-- Tapdaq Optional -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <!-- AdColony Optional -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <!-- Chartboost Optional -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- InMobi Optional -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- Kiip Optional -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <!-- Mintegral Required-->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

    <!-- MoPub Optional -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <!-- Receptiv Required -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- Tapjoy Required -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <!-- Vungle Required-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />

    <!-- Vungle Optional -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <!-- YouAppi Required -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <application>
 
        <!-- AdColony -->
        <activity android:name="com.adcolony.sdk.AdColonyInterstitialActivity"
          android:configChanges="keyboardHidden|orientation|screenSize"
          android:hardwareAccelerated="true"/>

        <!-- Applovin -->
        <activity
          android:name="com.applovin.adview.AppLovinInterstitialActivity"
          android:configChanges="orientation|screenSize"
          android:hardwareAccelerated="true" />
        <activity
          android:name="com.applovin.impl.adview.AppLovinOrientationAwareInterstitialActivity"
          android:configChanges="orientation|screenSize"
          android:hardwareAccelerated="true"
          android:screenOrientation="behind" />
        <activity
          android:name="com.applovin.sdk.AppLovinWebViewActivity"
          android:configChanges="keyboardHidden|orientation|screenSize" />
        <activity
          android:name="com.applovin.mediation.MaxDebuggerActivity"
          android:configChanges="keyboardHidden|orientation|screenSize"
          android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme" />
        <!-- Chartboost -->
        <activity
          android:name="com.chartboost.sdk.CBImpressionActivity"
          android:configChanges="keyboardHidden|orientation|screenSize"
          android:excludeFromRecents="true"
          android:hardwareAccelerated="true"
          android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />

        <!-- Facebook -->
        <activity
          android:name="com.facebook.ads.AudienceNetworkActivity"
          android:configChanges="keyboardHidden|orientation|screenSize"
          android:exported="false" />
        <activity
          android:name="com.facebook.ads.internal.ipc.RemoteANActivity"
          android:configChanges="keyboardHidden|orientation|screenSize"
          android:exported="false"
          android:process=":adnw" />

        <service
          android:name="com.facebook.ads.internal.ipc.AdsProcessPriorityService"
          android:exported="false" />
        <service
          android:name="com.facebook.ads.internal.ipc.AdsMessengerService"
          android:exported="false"
          android:process=":adnw" />

        <!-- HyprMX -->
        <activity android:name="com.tapdaq.adapters.TMHyprMXActivity"/>
        <activity
          android:name="com.hyprmx.android.sdk.activity.HyprMXOfferViewerActivity"
          android:hardwareAccelerated="true"
          android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
          android:label="HyprMX SDK"
          android:launchMode="singleTop"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
        <activity
          android:name="com.hyprmx.android.sdk.activity.HyprMXRequiredInformationActivity"
          android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
        <activity
          android:name="com.hyprmx.android.sdk.activity.HyprMXNoOffersActivity"
          android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
        <activity
          android:name="com.hyprmx.android.sdk.videoplayer.HyprMXVideoPlayerActivity"
          android:hardwareAccelerated="true"
          android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>

        <!-- InMobi -->
        <activity
          android:name="com.inmobi.rendering.InMobiAdActivity"
          android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize|screenLayout"
          android:hardwareAccelerated="true"
          android:resizeableActivity="false"
          android:theme="@android:style/Theme.NoTitleBar"
          tools:ignore="Unusedattr" />

        <!-- IronSource -->
        <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" />

          <!-- Maio -->
          <activity
            android:name="jp.maio.sdk.android.AdFullscreenActivity"
            android:configChanges="orientation|screenLayout|screenSize"
            android:hardwareAccelerated="true"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
          </activity>
          <activity
            android:name="jp.maio.sdk.android.HtmlBasedAdActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
          </activity>

          <!-- Mintegral -->
          <uses-library android:name="org.apache.http.legacy" android:required="false"/>

          <activity
              android:name="com.mintegral.msdk.activity.MTGCommonActivity"
              android:configChanges="keyboard|orientation"
              android:screenOrientation="portrait"
              android:exported="true"
              android:theme="@android:style/Theme.Translucent.NoTitleBar">
          </activity>

          <activity
          android:name="com.mintegral.msdk.reward.player.MTGRewardVideoActivity"
          android:configChanges="orientation|keyboardHidden|screenSize"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />

          <receiver android:name="com.mintegral.msdk.click.AppReceiver" >
              <intent-filter>
                  <action android:name="android.intent.action.PACKAGE_ADDED" />
                  <data android:scheme="package" />
              </intent-filter>
          </receiver>
          <service android:name="com.mintegral.msdk.shell.MTGService" >
              <intent-filter>
                  <action android:name="com.mintegral.msdk.download.action" />
              </intent-filter>
          </service>

          <provider
              android:name="com.mintegral.msdk.base.utils.MTGFileProvider"
              android:authorities="${applicationId}.mtgFileProvider"
              android:exported="false"
              android:grantUriPermissions="true">
              <meta-data
              android:name="android.support.FILE_PROVIDER_PATHS"
              android:resource="@xml/mtg_provider_paths"/>
          </provider>

        <!-- MoPub -->
        <activity android:name="com.mopub.mobileads.MoPubActivity"  android:configChanges="keyboardHidden|orientation|screenSize"/>
        <activity android:name="com.mopub.mobileads.MraidActivity" android:configChanges="keyboardHidden|orientation|screenSize"/>
        <activity android:name="com.mopub.common.MoPubBrowser" android:configChanges="keyboardHidden|orientation|screenSize"/>
        <activity android:name="com.mopub.mobileads.MraidVideoPlayerActivity" android:configChanges="keyboardHidden|orientation|screenSize"/>
        <activity android:name="com.mopub.mobileads.RewardedMraidActivity" android:configChanges="keyboardHidden|orientation|screenSize"/>
        <activity android:name="com.mopub.common.privacy.ConsentDialogActivity" android:configChanges="keyboardHidden|orientation|screenSize"/>

        <!-- Receptiv -->
        <activity
          android:name="com.mediabrix.android.core.AdViewActivity"
          android:configChanges="orientation|screenSize|keyboard"
          android:hardwareAccelerated="true"
          android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" >
        </activity>
        <activity
          android:name="com.mediabrix.android.core.ClickOutActivity"
          android:configChanges="orientation|screenSize|keyboard"
          android:hardwareAccelerated="true"
          android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" >
        </activity>

        <!-- Tapjoy -->
        <activity
          android:name="com.tapjoy.TJAdUnitActivity"
          android:configChanges="orientation|keyboardHidden|screenSize"
          android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
          android:hardwareAccelerated="true" />

        <activity
          android:name="com.tapjoy.TJContentActivity"
          android:configChanges="orientation|keyboardHidden|screenSize"
          android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <!-- UnityAds -->
        <activity
          android:name="com.unity3d.services.ads.adunit.AdUnitActivity"
          android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
          android:hardwareAccelerated="true"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <activity
          android:name="com.unity3d.services.ads.adunit.AdUnitTransparentActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
          android:hardwareAccelerated="true"
          android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
        <activity
          android:name="com.unity3d.services.ads.adunit.AdUnitTransparentSoftwareActivity"
          android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
          android:hardwareAccelerated="false"
          android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
        <activity
          android:name="com.unity3d.services.ads.adunit.AdUnitSoftwareActivity"
          android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
          android:hardwareAccelerated="false"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />

        <!-- Vungle -->
        <activity
          android:name="com.vungle.warren.ui.VungleActivity"
          android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
          android:launchMode="singleTop"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <activity
          android:name="com.vungle.warren.ui.VungleFlexViewActivity"
          android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
          android:hardwareAccelerated="true"
          android:launchMode="singleTop"
          android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <!-- YouAppi -->
        <activity android:name="com.youappi.sdk.AdActivity"
          android:configChanges="screenSize|orientation"/>

        <!-- ZPlay -->
        <activity
          android:name="com.playableads.presenter.PlayableADActivity"
          android:configChanges="orientation|screenSize|keyboardHidden"
          android:hardwareAccelerated="true"
          android:screenOrientation="portrait"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <activity
          android:name="com.playableads.presenter.NativeAdLandingPageActivity"
          android:configChanges="orientation|screenSize|keyboardHidden"
          android:hardwareAccelerated="true"
          android:screenOrientation="portrait"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <activity
          android:name="com.playableads.presenter.WebActivity"
          android:configChanges="orientation|screenSize|keyboardHidden"
          android:hardwareAccelerated="true"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <receiver android:name="com.playableads.PlayableReceiver">
          <intent-filter>
            <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
          </intent-filter>
        </receiver>

    </application>
</manifest>

2. Initialise Tapdaq

Continue to Quickstart to initialise Tapdaq SDK.

Need help?

If you are having any problems integrating, feel free to contact us on [email protected] and we will be more than happy to help.