1. My app loads ads correctly, but why was my ads loading callback not triggered?
- Check if your app correctly set up delegate
- Check if your app used the right callback method matching the SDK version
2. Why does my app only display ads from the one AdNetwork, but none from the other mediated AdNetworks?
- Check on your publisher web console if you have correctly set up for the AdNetworks
- Check in your project if the AdNetworks SDKs are present
- Check if the SDK initialization was successful
3. App Runtime error: +[NSString ADTDataPath]: unrecognized selector sent to class
Check your project's Building settings and make sure Other Linker Flag includes -ObjC.
4. App Runtime error: The Google Mobile Ads SDK was initialized incorrectly.
Check your Info.plist and make sure GADApplicationIdentifier settings is present.
5. The OpenMediation SDK was initialized successfully, but it shows "Invalid placmentID, please try again with correct placementId" error in the Xcode log.
Check your placement type setting and make sure AppName and Type is aligned.
6. 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.
7. Apple prohibits the use of UIWebView components. Are this kind of component being used in your SDK?
No. We have upgraded the use of webview accordingly, and using our SDK will not violate Apple's policies.
8.With the current smart ads inventory management mechanism in effect, will the same ad be displayed every time for a Rewarded Video/Interstitial adunit?
No, a new ad is shown every time an ad request is made.
9.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.
10.I turned on the "Test Mode" for AdNetwork A, but the SDK still loads ads from other AdNetworks.
Wait about 1 minute before the "Test Mode" kicks in. The on/off switch needs to periodically sync with the servers to take effect, typically every few minutes.
11. Is there an API in the SDK for us to know which AdNetwork the currently shown ad is from?
No, there is no API available currently for such purpose.
12. 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.
13. Why are there no callbacks for the clicks of ads during IronSource Interstitial and Rewarded Video ads?
IronSource SDK is designed in such a way that clicks can jump normally during video playback but without firing any click event, while in the landing page clicks can jump normally, plus firing click events.
14. Manually importing the FBAudienceNetwork Advertising SDK conflicts with the existing FB Analytics SDK. What can I do?
The FBAudienceNetwork Advertising SDK includes the FBSDKCoreKit framework. If your project has already imported the FB Analytics SDK, there should have been another instance of FBSDKCoreKit framework included. That's the reason why it failed. You should simply skip importing this FBSDKCoreKit in this case.
15. 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:
- Please make sure that your reward logic is processed in the reward callback, not in the PlayEnd callback. They're NOT the same thing.
- If you have processed the reward logic in the reward 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 reward callback correctly.
16. Why do users still get rewards after skipping rewarded videos?
Please check if your reward processing logic is in the reward callback. The reward callback is the right place to dish out rewards, not the PlayEnd callback.
17. Why does the video in the Rewarded-Video/Interstitial ad not play automatically?
Please confirm whether the device has activated the Low Power mode, since in the Low Power mode iOS tries to save battery by reducing some animations and prohibiting video autoplay.
18. When does *AvailabilityChanged() callback get triggered for a Rewarded Video/Interstitial/Interactive adunit?
- During ad loading, if at least one instance gets filled, the inventory increases and the callback gets triggered and returns a True
- During ad showing, the callback gets triggered and returns a False, regardless of the inventory. This prevents you from showing any other ad until the next time when you check it and get a True returned
- During ad closing, it gets triggered and returns a True as long as the inventory is not drained, otherwise it won't be triggered until the inventory gets replenished when it will return a True
- For manual ad loading, the callback always gets triggered and returns a True with a fill and a 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.
19. 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 ads, the SDK will automatically load the ads for you. On the otherhand, native and banner ads need manual loading.
20. 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.