Frequently Asked Questions (FAQ)
Where can I download the latest SDKs?
What Device OS's are supported?
How much size will Tapjoy add to my application?
- Connect SDK: ~25kB
- Publisher SDK: ~60kB
When should an Advertiser obtain a Tapjoy AppID?
- When a free or lite version is created, or any other version that is a separate app in the app store.
- Apps for different platforms (iPad vs iPhone)
- When updating an app.
- When updating the Tapjoy SDK.
- iOS - The requestTapjoyConnect:secretKey: method should be called when the app starts, in the applicationDidFinishLaunching method.
- Android - The TapjoyConnect.requestTapjoyConnect() method should be called in the onCreate() method of the initial app Activity.
- Windows - The TapjoyConnect.Instance.RequestTapjoyConnect method called once when the app starts, the Initialize() method provided in an XNA Game class works well.
Can Advertisers test/integrate the Connect SDK on non-live apps?Yes, it’s recommended Advertisers first integrate on non-live apps so that we can confirm it’s properly integrated before they submit their app to the app store.
Can Advertisers look at exactly what is being done behind the scenes?Yes, the SDKs are open source. Advertisers can take a look at the code if they want to know what the SDK does.
How long does Connect SDK take to integrate?It should take no longer than 2 - 3 minutes. Check out this video for proof!
I'm not seeing a connect call ping in the Tapjoy Dashboard for my app. The Integrated status appears as "NO" and the Reporting tab shows no sessions or new users.
- Double check and make sure the app ID and secret key you are using in the requestTapjoyConnect call matches the app ID and secret key for your app in the Tapjoy Dashboard.
- Android - You can also enable logging by putting this line of code before the requestTapjoyConnect call:
- Capture the connect call request and response output from logcat and attach this in your email.
Exactly what information is sent to Tapjoy on each connect call?
General Device Parameters (common on all platforms)
- device_type - The model name of the device. (e.g. iPod%20touch)
- os_version - the device system version.
- platform -ios/android
- device_name - Specific device name (e.g. iPhone6%2C1)
- store_view - whether the in-app store view is available
- device_location - Returns true if the app allows location services
User Level Parameters (common on all platforms)
- country_code - The country code is retrieved from the locale object, from user data (not device)
- language_code - The language is retrieved from the locale object, from user data (not device).
- connection_type - connection type of the user (e.g. wifi)
Additional parameters passed only on mobile connections (common on all platforms)
- carrier_name - The name of the user’s home cellular service provider.
- carrier_country_code - The ISO country code for the user’s cellular service provider.
- mobile_country_code - The mobile country code (MCC) for the user’s cellular service provider.
- mobile_network_code - The mobile network code (MNC) for the user’s cellular service provider.
iOS Only Parameters
- library_revision - internal (git sha of last commit of the SDK)
- lad - used to identify fraudulent devices
- advertising_id - advertisingIdentifier (introduce in iOS 6)
- ad_tracking_enabled - Indicates whether the user has limited ad tracking. (introduce in iOS 6)
- allows_voip - Indicates if the carrier allows VoIP calls to be made on its network (iOS only)
Android Only Parameters
- udid - Unique ID of the device (IMEI/MEID on mobile devices, SerialID on wifi devices)
- android_id - ANDROID_ID of the device
- mac_address - The device's mac address
- device_manufacturer - The device's manufacturer (e.g. samsung)
- screen_density - device screen density in dpi
- screen_layout_size - dimension of the screen
- connection_subtype - Connection subtype when on mobile (e.g. CDMA, EDGE, HSDPA, etc)
- store_name - name of android app store to use
Parameters passed in by the developer via the SDK (common on all platforms)
- app_id - internal Tapjoy App ID
- display_multiplier - Used if developer wants to inflate currency values
- publisher_user_id - The developer defined unique user id (used by Non-Managed currency)
Parameters set via the SDK automatically (common on all platforms)
- library_version - version of the Tapjoy SDK
- plugin - Name of plugin being used: phonegap, unity, air, etc. If no plugin is being used value is set to 'native'
- sdk_type - The type of SDK. Hardcoded to 'events' in SDK 9.1 and higher
- install_id - Tapjoy-specific app-specific identifier
- session_id - generated guid on app launch, resume, and between long periods of activity
- timestamp - The time in seconds when a connect call is made.
- verifier - Tapjoy generated hash used to sign requests to prevent fraud
Why does my app crash when I call the views of library a second time?Make sure you are not releasing any view returned by the Library. This is very important because the Library handles the memory of the views inside it.
Why don't any offers appear when I call showOffers? Also I am not seeing any display ads or featured ads either.You probably haven't setup your virtual currency. Login to your Dashboard and setup your virtual currency values. Look here for more details:
If a Publisher has integrated the Publisher SDK, do they also need to integrate the Connect SDK?No, the SDKs are supersets/subsets of each other. Advertisers integrate the Connect SDK while Publishers integrate the Publisher SDK.
When I try to compile my project I see a lot of errors related to TJCZipArchive on iOS. How can I fix that?
These errors occur because the project is missing the libz.1.2.5.dylib framework. Add it to your project, and you should be able to compile.
How are the offers in the marketplace generated?The offers are displayed based on the deviceID, appID, and region. Other factors include featured apps, whitelisted offers, and blacklisted offers.
Can Publishers manipulate the order of ads in the app offerwall?The marketplace is ordered by our own ranking algorithm. Publishers cannot change the order. They also cannot change the look of it.
Are there other ways to access the data from the in app offerwall?No, they must integrate the Publisher SDKand display the in app offerwall through a web view, taken care of by the SDK.
When is Tapjoy managed currency used?Currency managed by Tapjoy is usually used for anyone who doesn’t want to manage their own servers to keep track of their user's virtual currency.
Can Publishers modify the amount of currency of the user when it is managed by Tapjoy?When currency is managed by Tapjoy, it can only be earned by completing offers. The amount the user has is the amount ever earned by them. This currency may also be spent by calling the spendTapPoints method in the SDK. Refer to the SDK readme for more information.
How is conversion rate rounded?We round up for any conversion discrepancies. Low currency to $1 ratios can potentially cause problems (eg: 5 virtual currency per $1). It’s better to set a high amount of currency per $1 (eg: 1000 virtual currency per $1) to avoid rounding issues.
- Each Featured Ad is displayed 5 times by default before being hidden. You may manually set the number of times this shows up. For more details: Featured App (iOS) Featured App (Android) Featured App (Windows)
- This particular Featured Ad has already been completed on the device
- There may not be an active Featured Ad campaign currently running. You can enable a test Featured App for QA purposed by adding your device id to the test devices field under the Virtual Currency section of the Tapjoy Apps Dashboard
- There isn't an active internet connection
Why am I getting a "Record Not Found" error when I view the offer wall in my app?The "Record Not Found" message appears when you haven't setup your virtual currency. Login to your Dashboard and setup your virtual currency values. Look here for more details:
Is there a way to test video offers in my app?
Does Tapjoy support the Amazon Kindle App Store?
How do I scale banner ads for a certain screen size or device?
If you need to rescale the banner, you can do it with the following code inside the banner ad notifier (
desired_width with the width of the banner you wish. This code assumes the banner ad view (adView) is going to be added to a LinearLayout (adLinearLayout).
I'm using the Android Unity plugin and running into issues during runtime. I'm getting errors such asPlease update your Android SDKs so you have all the latest platforms and updates. You can do this via the ADT plugin for Eclipse or the Android SDK and AVD Manager.
Why am I getting a nullPointerException whenever I call a method in the Tapjoy SDK?
requestTapjoyConnect(Context context, String appID, String secretKey)must be called before any other Tapjoy methods.
Also if your app is using multiple Activities, it's best to pass in
getApplicationContext()as the Context since the original Activity Context used in requestTapjoyConnect may be invalid if that Activity has finished. This will cause issues if you call Tapjoy methods from another Activity because the Context reference it's trying to access will be null in this scenario.
The Tapjoy SDK uses android-9 APIs and needs to be compiled on at least android-9. Will it run on devices using older versions of Android?
- Make sure your AndroidManifest.xml has these two properties added (new for video offers):
If you want to test with a test video offer, follow these steps here: testing video offers
- Google Play
- GFan (China) - If you're interested in GFan to contact your Account Manager for more details.
- Amazon - Offerwalls can show only CPA offers. The Amazon App Store doesn't support CPI offers.
- TStore (Korea) - If you're interested in SK Planet's TStore to contact your Account Manager for more details.
Is the Publisher SDK compatible with iPad?
Why do I get a runtime exception of "selector not recognized" when calling a Tapjoy method even though all relevant files have been added to my project?
There are compiler errors when enabling ARC. How do I deal with this?
-fobjc-arc compiler flag is set as the default for all Objective-C source files. You can disable ARC for a specific class using the
-fno-objc-arc compiler flag for that class. In Xcode, in the target Build Phases tab, open the Compile Sources group to reveal the source file list. Double-click the file for which you want to set the flag, enter
-fno-objc-arc in the pop-up panel, then click Done.