-
Notifications
You must be signed in to change notification settings - Fork 0
Quickstart
- 1. Requirements
- 2. Preparing Air SDK
- 3. Installation
- 3a. Android Specific Steps
- 3b. iOS Specific Steps
- 4. Initialise Tapdaq
- 5. Display an advert
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).
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/
Add required ANEs to your project.
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
- Add required Frameworks to
Frameworksfolder. - 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]
Tapjoy network requires both - framework and resources bundle.
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>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>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.
// 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.
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.
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.

