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
<application>
<!-- 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:
![](png/article09_1.png)
● 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.