FAQ
Find answers to common Tapjoy Offerwall questions about integration, setup, and troubleshooting.
Read time 7 minutesLast updated 3 hours ago
General Questions
Google size support requirement
Google now requires all apps targeting Android 15+ devices with C++ libraries to support a 16 KB page size by November 1st, 2025.
For the Tapjoy SDK, support for a 16 KB page size is available in version 14.1.0 and above. If you are using an older version, we recommend updating to the latest Tapjoy SDK to ensure compliance.
TapjoySDK certificate expired
Since Tapjoy SDK 13.3.0 the Frameworks have been signed using the Tapjoy Inc. Apple Certificate to verify that the Framework is genuine. However certificates will expire and on occasion be revoked and you should try updating to the latest SDK.Certificate Details:
- Team Name: Tapjoy, Inc.
- Team ID: VLCPHQMND2
- Kind: Apple Developer Program
pod cache clean TapjoySDK --all
SDK download
Here is our SDK Download Page.
SDK size
For Android, the 12.9.0 SDK adds 692KB (the size of the library jar) to your app and has a method count of approximately 4688.For iOS, the arm64 slice with the 12.9.0 SDK adds 906,290 bytes to the size of the application. Note that this includes all the necessary frameworks and libraries that Tapjoy requires. The actual size increase will probably be less than this, as it is likely your application already uses many of these frameworks.
Device operating systems
- 13.2.0+ API 21
- 12.0.0-13.1.2 API 14+
Development environments
Tapjoy supports native iOS and Android, and we have a plugin for Unity, React Native and Flutter as well. We also have a C++ library for those using Cocos2d-x.
Open source software
Here is the open source list for the Tapjoy SDK.
Troubleshooting integration
There are a number of reasons why you might not be seeing advertisements. Check the following list of causes:
The most common reason for not seeing ads is that there is no advertising content associated with the placement. Once you set up the placement on the dashboard and integrate it into your code, it will not actually show anything until you link content to it.
The placement is integrated in code, but **not set up on the dashboard.
The placement name in your app's code does not exactly match the placement in the dashboard. For example, if you have "app open" in your code, but "app launch" set up on the dashboard, calling the "app open" placement will return no content, and you will not see any ads. Check the names of the placements in code and in the dashboard, paying particular attention to spaces (" "), underscores "_", spelling, and common synonyms (for example, "exit_store" versus "quit_store").
The app doesn't yet have an approved currency. To use Tapjoy to show advertisements, you must set up at least one currency in the dashboard. To see your virtual currency status, go to Settings > App Settings > Content > Virtual Currency.
You are calling the placement before Tapjoy has successfully connected. You must wait until the Tapjoy Connect call has successfully completed before calling your placement, otherwise the placement call will fail and you will see no content. (In fact, almost all Tapjoy calls will fail if executed before Tapjoy has successfully connected.)
You are using the wrong SDK Key in your app. Check that the SDK Key in your apps code matches the SDK key in the correct app in your dashboard. Often when copying and pasting Tapjoy code from one project to another, an SDK key from another app or from the wrong platform can get into your code.
There is not any "fill" for your region for that kind of ad. At times, Tapjoy does not have any ads to show for a particular format in a particular region. This is more likely to happen in smaller markets. To determine whether a lack of content is due to fill or due to an implementation issue, it is often useful to designate a device as a test device. A test device will see a test advertisement from Tapjoy even if there is no actual ad inventory for that region. (Note that sometimes this test advertisement will only actually reward the user once every 5 minutes, depending on the ad format. This is to curb fraud.) To designate a device as a test device, go to App Settings > Test Devices > Create Test Device.
You are on a VPN. If your are on a VPN, our system might think your device is pretending to be in a different region, and not provide any ads as an anti-fraud precaution. This is particularly likely to happen if your VPN makes your device have an IP address that does not match other characteristics of the device, such as its country code.
Your Ad content is set to Test Devices Only and you are checking for ads with a non-test device. Use a properly configured test device (Dashboard > App Settings > Test Devices) to view the content.To set the content to be viewable by all devices, do the following in the Content settings:
- Go to the content list and find the content unit.
- Click the Edit icon
- Uncheck the Test Only box.
You are trying to see a test ad for an ad content unit that has its currency set to Non-rewarded. If an ad unit (Video) is set to non-rewarded, you won't see any test advertisements for it, even if your device is set up as a test device.
If your exchange rate (App Settings > Content > Virtual Currency > Exchange Rate) is too low, there may not be any ads available that pay at least one unit of your currency. For example, if you set your gem currency to equal $1 USD, only ads that pay at least $1 would be shown. Since few ads pay that much, it is likely you wouldn't see any ads at all. While our system does do some shifting to help make offers appear in these types of situations, we recommend your currency exchange rate be set to at least 100 = $1. That will ensure you are not losing out on ad inventory due to your currency being too expensive.
If you see content the first time it is shown, but not on subsequent shows, you might not be loading content again once you have shown it. Once you display the placement to the user, you must make the placement call again to "reload" the placement. If you do not do this, subsequent attempts to show that placement will fail.
You're not connected to the internet. Obviously, Tapjoy requires connectivity to its servers in order to show advertising content to the user. If the device or simulator you are using does not have connectivity, no ads will appear.
You are running in the Unity3d editor. If you are using Tapjoy with Unity3d, you must actually build to a device to check your Tapjoy integration. Tapjoy does not function properly when your app is being run within the Unity3d editor.
The clock on your device does not match present time. This will cause the SSL handshake to fail, which will prevent Tapjoy's connect call from succeeding, which in turn will prevent you from seeing Tapjoy content.
You're using the same Publisher User ID across many devices**. Sometimes, when testing, an engineer or tester will run the game on many devices. If our system detects the same publisher user ID being used across a large number of devices, we assume it is a user attempting to set up a fraudulent "click farm" to complete ad offers, and we stop showing content to the user ID. For security purposes, we do not release the exact thresholds that trigger this. As a workaround, one can use different user IDs on different test devices.
Your content has an eCPM floor or goal for the current region and Tapjoy does not have any content that can meet that floor or goal. This can happen if those floors are too high, or if Tapjoy’s algorithm has come to think of a user as less likely to install (this often happens with test accounts and devices) and is therefore bidding lower for that user.
Where are Tapjoy's servers physically located?Tapjoy has a global customer base. To serve this customer base, Tapjoy has servers hosted in the Asia-Pacific region, Western Europe, Western United States, and Eastern United States. This ensures both redundancy and high performance for multiple geographic regions.
I installed an app from the offerwall, but I did not get a reward. What is happening?Before the install can be tracked you must first open and run the advertised application. Once you run the application that will make it track the install, and once Tapjoy gets the install tracking data you will be rewarded. In most cases the installs are tracked within a few minutes. However in the worst cases it can take over an hour before the install tracking service reports the install to our servers.
Preloading
Once you get the isContentAvailable response you do not necessarily need to wait for the content to finish pre-loading. If you call showContent before the content has finished loading, the SDK will attempt to stream the remaining ad. We recommend waiting for the SDK callback for content ready so that you know all of the content has finished downloading. Otherwise the user might see the ad buffering while it downloads.
Support
Contact support.
Unity
Tapjoy in the Unity Editor
No. You must build to an actual device to test Tapjoy. If you try to run Tapjoy in the Unity editor, you will get a message like the following:
E/TapjoyConnect(20815): ERROR -- call requestTapjoyConnect and make sure to receive the Tapjoy connectSuccess response from the TapjoyConnectNotifier before calling any other Tapjoy methods
SDK initial connection
In SDK 11.2.1 and below this is not possible. In SDK 11.2.2 and above it is possible to programmatically control the connection step. You can find the documentation here.