During the integration of the SDK for initialization, ads loading or showing, if any exception occurs or any operation fails, such as ads no fill, showing failure etc., the SDK will return corresponding error information to the callbacks that handle the error events, including error code and error messages to indicate the specific cause of the current problem.
For example, initialization is through the onError event method of the InitCallback, and showing is through the Listener callback for each ad unit, such as the RewardedVideoListener callback for Rewarded Video. The callback event method onRewardedVideoAdShowFailed is used to notify the possible failures during the rewarded video showing. Error, the only parameter of the failure events is an AdTimingError object, containing an error code and message, can help you determine the error cause and find a solution to fix it.
As for ad loading, since the Rewarded Video and Interstitial ads are automatically loaded and cached by the smart inventory engine, there is no load event methods and corresponding event callbacks. Error codes and messages related to the loading can be found in the SDK log.
For specific error codes and diagnostic methods, please refer to our documentation at our Help Center.
Here are some of the common mistakes and causes:
● Wrong/missing AdTiming AppKey for SDK initialization
Pay close attention to the format and accuracy of the AppKey otherwise AdTiming won't be able to tell which app made the ad requests. Don't use your Android key on iOS and vice versa.
● Required permissions were not granted in your AndroidManifest.xml
The SDK cannot function properly without necessary permissions. AdTiming SDK requires only the minimum necessary permissions: networking permissions. Add the following to the <manifest> section of your AndroidManifest.xml
<!-- Required permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
● Missing/disabled GooglePlay services on your device
Adtiming SDK functions on top of the GooglePlay services. In the rare cases some developers have reported some custom ROMs miss GooglePlay services or fail to let the SDK interact with it. Make sure the GooglePlay services is present and enabled on your device.
● Missing an AdNetwork's SDK & adapter
Believe it or not, developers mostly often forget to include either the SDK or adapter or both in their project. Make sure to follow the instructions of the help documentation to ensure that both the SDK and adapter are added. For example, copy the following to your gradle file:
● Forgot to call the SDK's init() method
Remember nothing happens until init() gets called.
● Trying to load an ad before SDK initialization is over
It is the best practice to make the first load() call in the onSuccess() callback.
● Placement type mismatch
For example your code deals with an Interstitial Ad using a PlacementID created for a Rewarded Video Ad.
● Passing a wrong PlacementID parameter
The PlacementID does not exist, or it belongs to another AppKey.
● The Activity instance was destroyed before ad loading
Do not use a temporary Activity for an ad, or destroy it before ad close.
● Referencing an ad object after calling the SDK's destroy()
This is obviously not going to work. Do not call destroy() on an ad object if you want to reference it later. Or you can re-create the object after it was destroyed.
● Missing callbacks for certain ad events
The callback method must be set up properly for those event types that your app intends to deal with. And load() must have been called explicitly or implicitly. Do not set the timeout value too small, otherwise you may not receive callbacks.
● Missing load() in your code or load() right before showing an Ad
Some ad types have been implicitly auto-loaded by the SDK, so you are no longer required to load them, but other ad types still have to be loaded by calling the load method in the app. It is always wise to make sure your ad gets enough time to download to your device.
● Not showing an ad in the main UI thread
Certain Ad Networks such as AdMob require that ads be shown in the main thread, otherwise there will be no fill. So please make sure that isReady and showAd are called in the main thread.
● Certain ad units not getting filled by certain Ad Networks
Some ad types, for example Banner Ads, are not offered by certain Ad Networks, thus no fill is what you'll get for those types from the Ad Networks that don't support them.
● No fill due to IP/Country/Device/Frequency restrictions
Some campaigns target certain country or IP addresses. And the number of impressions is capped. Switch to a new mobile device, or a new IP address and test again.
● No fill
There are many reasons for no fill. Sometimes there simply are no available ads. But most of the time misconfiguration here and there is the reason.
First, if the waterfall is not set, the server has no available instances. So check the mediation rule settings to make sure that there are active instances and weights in the waterfall are not set to 0.
Then, there may be restrictions on the service of the current device or app. You need to check the publisher account status, app status, device tracking settings, SDK version, etc.
In short, you may want to follow these steps:
1) Visit your developer’s account on AdTiming to check whether the app is activated. If the app is deleted or the service is suspended, please contact our technical support by email or ticket with the device and app related information as well as the SDK log.
2) If you use the mediation functionality, check the mediation rules configuration to ensure that there is at least one active instance and non-zero weight.
3) Switch device, IP address, WiFi to make a new request, or add the current device to the test mode to exclude the restrictions for specific devices, regions and networks.
4) Update to the latest release of the SDK and try again to rule out the possible old versions service restriction.
5) If the problem persists, please contact our technical support.
● Failed to load ads from Ad Networks
The specific reason for the loading failure from Ad Networks needs to be determined based on the error information returned by the third-party SDK in the log. You need to consult the help documentation of the third-party platform to find a solution.
In general, you may run into the following:
1) If a nofill error is returned: change the device, the IP address, switch WiFi, and so on before makeing another request, or add the current device to the platform's test mode to exclude restrictions on specific devices, regions and networks.
2) If the fill rate of the platform is low, reduce the floor price of the instance. If the problem persists, it is recommended to switch to another platform.
3) If the ads frequency is limited, relax the load frequency cap of the platform
4) If platform internal errors are returned, such as timeout or invalid request, errors in requesting ads, network error, server unknown error, etc., and the problem persists after multiple attempts, it is recommended to try another platform or try again after the platform recovers .
5) If other errors are returned, such as incorrect parameters, invalid requests, etc., please contact our technical support by email or ticket with device and app related information together with logs to help troubleshoot the problem.