Skip to content
This repository was archived by the owner on Nov 7, 2023. It is now read-only.

Quickstart

Dominic Roberts edited this page Dec 6, 2017 · 26 revisions

Installation of the AIR SDK

Contents

1. Requirements

Adobe Air SDK 23.0 or greater is required for Android applications and 27.0 for iOS applications (Version 2.0.0+ has new shared frameworks included in ANEs).

2. Preparing Air SDK

To compile your application with Tapdaq Air SDK you need to update your Air SDK with the following frameworks:

  • FileProvider.framework
  • FileProviderUI.framework
  • ISSurface.framework

To do so, copy them from your iOS SDK and put under AIR_SDK_HOME/lib/aot/stub.

XCode 9.0 Frameworks located here:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/

3. Installation

Add required ANEs to your project.

How to add ANEs to your project

Android

TapdaqGoogle contains Google Play Services libraries, if included elsewhere, this can be omitted, it contains:

  • Play-services-ads-10.2.0
  • Play-services-ads-lite-10.2.0
  • Play-services-base-10.2.0
  • Play-services-basement-10.2.0
  • Play-services-clearcut-10.2.0
  • Play-services-gass-10.2.0
  • Play-services-tasks-10.2.0
  • RecyclerView-v7-25.3.1
  • Support-annotations-25.3.1
  • Support-v4-25.3.1
  • Support-compat-25.3.1
  • Support-core-ui-25.3.1
  • Support-core-ui-25.3.1
  • Support-core-utils-25.3.1
  • Support-fragment-25.3.1
  • Support-media-compat-25.3.1

iOS

  • Add required Frameworks to Frameworks folder.
  • Add resources to root folder.

We recommend creating the following folders structure in your project and add resources folder

Resources>[Place .bundles here]
Resources>Frameworks>[Place .frameworks here]

How to add frameworks and resources to your project

Tapjoy network requires both - framework and resources bundle.

Include ANE's in project

Inside your application descriptor specify ANEs your added to the project

<extensions>
    <extensionID>com.tapdaq.airsdk</extensionID>
    <extensionID>com.tapdaq.airsdk.google</extensionID>
    <extensionID>com.tapdaq.airsdk.adcolony</extensionID>
    <extensionID>com.tapdaq.airsdk.admob</extensionID>
    <extensionID>com.tapdaq.airsdk.applovin</extensionID>
    <extensionID>com.tapdaq.airsdk.chartboost</extensionID>
    <extensionID>com.tapdaq.airsdk.fan</extensionID>
    <extensionID>com.tapdaq.airsdk.hyprmx</extensionID>
    <extensionID>com.tapdaq.airsdk.inmobi</extensionID>
    <extensionID>com.tapdaq.airsdk.ironsource</extensionID>
    <extensionID>com.tapdaq.airsdk.mopub</extensionID>
    <extensionID>com.tapdaq.airsdk.receptiv</extensionID>
    <extensionID>com.tapdaq.airsdk.tapjoy</extensionID>
    <extensionID>com.tapdaq.airsdk.unity</extensionID>
    <extensionID>com.tapdaq.airsdk.vungle</extensionID>
</extensions>

3a. Android Specific Steps

Inside your application descriptor, add this to android manifest additions:

<manifest android:installLocation="auto">

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

    <!-- Optional for Tapdaq. Required for Mediation Networks -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    <application>
        ...
	<!-- Debug Views -->
	<activity android:name="com.tapdaq.sdk.TMTestActivity" />
	<activity android:name="com.tapdaq.sdk.TMTestNativeActivity"/>
	<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent"/>

	<!-- Cross Promo -->
	<activity android:name="com.tapdaq.sdk.TMInterstitialActivity" />

	<!-- More Apps -->
	<activity android:name="com.tapdaq.sdk.TMMoreAppsActivity"/>

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

	<activity android:name="com.adcolony.sdk.AdColonyAdViewActivity"
		android:configChanges="keyboardHidden|orientation|screenSize"
		android:hardwareAccelerated="true"/>

	<!-- Applovin -->
	<activity android:name="com.applovin.adview.AppLovinInterstitialActivity" />
	<activity android:name="com.applovin.adview.AppLovinConfirmationActivity" />

	<!-- 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 Adapter -->
	<activity android:name="com.facebook.ads.AudienceNetworkActivity" 
		android:configChanges="keyboardHidden|orientation|screenSize" />

	<!-- 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"/>
	<receiver
		android:name="com.inmobi.commons.core.utilities.uid.ImIdShareBroadCastReceiver"
		android:enabled="true"
		android:exported="true">
	<intent-filter>
		<action android:name="com.inmobi.share.id"/>
	</intent-filter>
	</receiver>

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

	<!-- 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"/>
	
	<!-- Receptiv -->
	<activity
            android:name="com.mediabrix.android.service.AdViewActivity"
            android:configChanges="orientation|screenSize|keyboard"
            android:hardwareAccelerated="true"
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" >
        </activity>
        <activity
            android:name="com.mediabrix.android.service.ClickOutActivity"
            android:configChanges="orientation|screenSize|keyboard"
            android:hardwareAccelerated="true"
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" >
        </activity>
        <service
            android:name="com.mediabrix.android.service.MediaBrixService" >
        </service>
	
	<!-- 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.mraid.view.ActionHandler"
		android:configChanges="orientation|keyboardHidden|screenSize" />
	<activity
		android:name="com.tapjoy.mraid.view.Browser"
		android:configChanges="orientation|keyboardHidden|screenSize" />
	<activity
		android:name="com.tapjoy.TJContentActivity"
		android:configChanges="orientation|keyboardHidden|screenSize"
		android:theme="@android:style/Theme.Translucent.NoTitleBar" />

	<!-- UnityAds -->
	<activity
		android:name="com.unity3d.ads.adunit.AdUnitActivity"
		android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
	<activity
		android:name="com.unity3d.ads.adunit.AdUnitSoftwareActivity"
		android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>

	<!-- Vungle -->
	<activity android:name="com.vungle.publisher.VideoFullScreenAdActivity"
		android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
		android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>

	<activity android:name="com.vungle.publisher.MraidFullScreenAdActivity"
		android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
		android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>

	<activity android:name="com.vungle.publisher.FlexViewAdActivity"
		android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
		android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
        
    </application>
</manifest>

3b. iOS Specific Steps

Inside your application descriptor, add this to iPhone additions part:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fb</string>
    <string>instagram</string>
    <string>tumblr</string>
    <string>twitter</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
	
    <!-- Required for AdMob -->
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
    <key>NSAllowsArbitraryLoadsForMedia</key>
    <true/>
	
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>test-ads.tapdaq.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

<!-- Required Permissions for AdColony -->
<key>NSCalendarsUsageDescription</key>
<string>Ad networks may require it</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Ad networks may require it</string>
<key>NSMotionUsageDescription</key>
<string>Some ad content may require access to accelerometer for interactive ad experience</string>
<key>NSCameraUsageDescription</key>
<string>Some ad content may access camera to take picture</string>

You are now ready to use Tapdaq ANE in your project.

4. Initialise Tapdaq

// create a config
var config:TapdaqConfig = new TapdaqConfig(APPLICATION_ID, CLIENT_KEY);

// Setup the placements with ad types your app will use
var placements:Array = [
	new Placement([TapdaqCreativeType.STATIC_INTERSTITIAL],PlacementTag.MAIN_MENU)
];

// register placements in config
config.withPlacementTagSupport(placements);

// init Tapdaq ANE
_tapdaq = Tapdaq.init(config);

// add event listeners
_tapdaq.addEventListener(TapdaqEvent.DID_INITIALIZE, onTapdaqInitialized);
_tapdaq.addEventListener(TapdaqAdEvent.AD_LOADED, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.WILL_DISPLAY, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.DID_DISPLAY, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.DID_CLICK, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.DID_CLOSE, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.DID_FAIL_TO_LOAD, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.DID_COMPLETE, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.DID_ENGAGEMENT, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.DID_REACH_LIMIT, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.DID_FAIL, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.ON_USER_DECLINED, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.DID_VERIFY, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.NOT_AVAILABLE, onAdEvent);
_tapdaq.addEventListener(TapdaqAdEvent.ON_REJECTED, onAdEvent);

_tapdaq.addEventListener(TapdaqNativeAdDataEvent.AD_DATA, onNativeAdData);

After the event onTapdaqInitialized is received you can load and display ads.

5. Display an advert

To display an advert, please click on one of the following guides.

You can test that each ad network has been integrated correctly by visiting the Debugging page.

Need help?

If you are having any problems integrating, feel free to contact us on support@tapdaq.com and we will be more than happy to help.

Clone this wiki locally