1. What should I do when loading an ad got No Fill in return?

Please switch the network environment or device and try again. If it doesn't work, you may want to try the following steps.

Facts: As a mediation platform, OpenMediation's SDK routes ad requests to 3rd-party AdNetworks in addition to itself, and provides ads returned by all these AdNetworks to developers for display. For 3rd-party AdNetworks, OpenMediation has no control whatsoever over whether they will fill in an ad request or not. The overall fill rate can only be improved by continuous optimization.

Based on the above facts, when No Fill happens, we recommend that developers do the following checks:

① First of all, make sure you have properly integrated AdNetwork ads. You can turn on the test mode for AdNetwork (such as AdTiming), and if an ad gets returned, most likely the SDK has been integrated correctly. Otherwise, please follow the documentation to check where in your SDK integration has gone wrong. To learn how to use the test mode, please refer to:

② If you choose to mediate other AdNetworks at the same time, check if the corresponding AdNetwork's adapter and SDK have been added as required. For example, if you mediate AdMob with OpenMediation, you need to add the OpenMediation SDK to your project, the AdMob adapter provided by OpenMediation, and the AdMob's own SDK. For details, please refer to:

③ If the above checks went through, please check if your 3rd-party AdNetworks are configured correctly on the OpenMediation platform. And don't forget to turn on the test mode for the AdNetworks.

④ For more information about ads loading, please refer to:

⑤ If the problem persists, please submit a ticket at:


2. What's the function of ExtID for Rewarded video ads?

Rewarded video ad provides service-side callback service for developers. When the developer assigns value for the extid and the callback url was added to the relevant Rewarded video ad bit configuration. When the rewarded video is finished, we will send a callback request to the developer's present callback address. The developer's extid will replace the macro in the preset callback url.


3. Why did my ads not receive any callbacks?

① Please check whether the listener was setup correctly.
The listener's type and ad's type must match, otherwise you may not get the callback.

② Poor network reception can also lead to long loading time. Please just wait it out. If you need any help, please contact us via


4. Why is it always no filling when we test Banner ads?

If you test a banner ad with an AdNetwork other than these four, such as AppLovin, you will get no fill returned.In fact, we can't control the ad filling outside of AdTiming AdNetwork. If you want to see these AdNetwork ads, you should enable test mode or add test equipment on these platforms.every few minutes


5. Why is the number of impressions in the report more than the number of ad requests?

It is because of the timezone difference. The number of requests is the count the OpenMediation SDK recorded when the ad request was made, in UTC+08 time. The number of impressions is gathered from other AdNetworks through API, usually in UTC time. The eight-hour difference resulted in the disparity.


6. Does your SDK support cross-process calls?

No, we do not support cross-process calls. All operations of the SDK should be completed in the same process.


7. When mediating a third-party AdNetwork, do we still need to call their SDK interfaces separately?

No, just add the corresponding AdNetwork's SDK and the adapter provided by OpenMediation. OpenMediation is responsible for loading and displaying ads. Developers only need to call the interfaces provided by OpenMediation.


8. Why still nofill even after adding a test device on AdTiming?

You need also to enable the "Test Mode" for the specific adnetwork. For example, if the "Test Mode" switch on admob is turned on and your device is a registered test device on admob, the SDK should be able to load ads from admob's inventory. As a mediation platform, OpenMediation can't control the advertisement filling of other adnetworks. It's highly recommened to test run with AdTiming alone first to make sure your integration works fine before adding other adnetworks.


9. Does it count as an impression if a banner ad was loaded and added into a hidden view?

Yes, it still counts, as long as the ad has been loaded and added to a view, no matter if the view is visible or not.


10. With the current smart ads inventory management mechanism in effect, will the same ad be displayed every time for a Rewarded Video/Interstitial/Interactive adunit?

No, a new ad is shown every time an ad request is made.


11. When does the ad inventory automatically get updated for rewarded video and interstitial ads?

The smart inventory management system regularly evaluates the inventory, and starts loading new ads once the inventory availability level falls under the threshold. In addition to that, anytime an ad gets closed it immediately triggers the inventory re-evaluation action.


12. I turned on the "Test Mode" for AdNetwork A, but the SDK still loads ads from other AdNetworks.

Wait about 3-5 minutes before the "Test Mode" kicks in. The on/off switch needs to periodically sync with the servers to take effect, typically every few minutes.


13. During the playback of an Interstitial video ad, I pressed the system's Back button and it didn't turn off the ad.

This is not a bug but rather an AdNetwork related behavior. On some AdNetworks the Back button does turn off the ad, but on some others it doesn't. The same applies to closing the landing page after the Interstitial video ad playback is complete. Some AdNetworks allow for the Back button to close the page, while others don't.


14. Is there an API in the SDK for us to know which AdNetwork the currently shown ad is from?

For support from v2.1.0 and above, please refer to .


15. Chartboost video ads sometimes show loading during playback, and will automatically close after a period of time. Is this normal?

Yes, it's normal. When a chartboost video ad is shown and due to network lag or other reasons the loading takes too long, its SDK will automatically close the ad. In this case, the ad closed callback should have been normally received. It will not affect the subsequent ad loading.


16. Why do users not receive rewards after watching rewarded video ads?

First of all, on some adnetworks rewarded video ads can be skipped. When a user chooses to skip the ads, obviously there shouldn't be any reward callback.

In addition, if a user has not received the reward after watching the rewarded video completely, take the following steps:

  1. Please make sure that your reward logic is processed in the onRewardedVideoRewarded callback, not in the onRewardedVideoEnded callback. They're NOT the same thing.
  2. If you have processed the reward logic in the onRewardedVideoRewarded callback but the user has not yet received the reward, please watch the ad completely and output a log in the callback to help check whether the SDK has made the onRewardedVideoRewarded callback correctly.


17. Why do users still get rewards after skipping rewarded videos?

Please check if your reward processing logic is in the onRewardedVideoRewarded callback. The reward callback is the right place to dish out rewards, not the onRewardedVideoEnded callback.


18. My app crashes after importing the AdMob SDK.

Make sure that your AdMob application id has been correctly added in the AndroidManifest.xml. See here for more details.


19. Does your SDK on Android devices without the Google Services Framework?

On Android devices without the Google Services Framework, the AdTiming SDK will initialize but won't show any ads. The inability to get the device's GAID drastically limits the fillrate on all AdNetworks.


20. When does *AvailabilityChanged() callback get triggered for a Rewarded Video/Interstitial adunit?

  • During ad loading, if at least one instance gets filled, the inventory increases and the callback gets triggered and returns True
  • During ad showing, the callback gets triggered and returns False, regardless of the inventory. This prevents you from showing any other ad until the next time when you check it and get True returned
  • During ad closing, it gets triggered and returns True as long as the inventory is not drained, otherwise it won't be triggered until the inventory gets replenished when it will return True
  • For manual ad loading, the callback always gets triggered and returns True with a fill and False with no fill.
  • For automatic(default) ad loading, the callback gets triggered and returns a True with a fill, but does NOT get triggered and return a False with no fill. 


21. Do I need to re-initialize the SDK after the device is disconnected from the network, and do I need to manually call the load() method to load the ad again?

No, the SDK initialization method only needs to be called once. After the network is disconnected and reconnected, for rewarded video or interstitial or interactive ads, the SDK will automatically load the ads for you. On the otherhand, native and banner ads need manual loading.


22. What's the difference between is*Ready() and *AvailabilityChanged()?

is*Ready() is used to know whether the current inventory has certain type of ads;  while *AvailabilityChanged() is used to tell you whether you can currently show ads of certain type. When is*Ready() returns true, it does not necessarily mean that the current ad can be shown. If there are two rewarded video ready in the inventory, one of which is shown by calling show(). Calling isRewardedVideoReady() during the ad playback will return True, but the callback of onRewardedVideoAvailabilityChanged() will give you False.

Suppose there is a button for the user to click to start showing rewarded video ads. This button should not be visible or clickable until onRewardedVideoAvailabilityChanged() returns True. After the user clicks the button, you should first use isRewardedVideoReady() to determine whether the ad is ready. If it returns True, call the show() method to show the ad. If it returns False, you should prompt the user with something like "The ad is not ready. Try again later". When onRewardedVideoAvailabilityChanged() returns False, you should make the button unclickable again.


23.How to deal with the compilation conflict between AppsFlyer and Vungle?

There are two ways to resolve the conflict between Appsflyer and Vungle:

①Add the following configuration to the Application tag in AndroidManifest.xml:


②Use Vunlge's jar package integration method,how to add please refer toVungle SDK access document


Was this article helpful?
2 out of 2 found this helpful



Article is closed for comments.