In this section you will learn what to do with some of the most common error messages you will get when loading ads.
1. No Fill
- Placement/Country/Frequency configuration
Check your configuration here to see if it allows your ads to fill.
- Switch to a new mobile device, or a new IP address
To rule out the possibility of device or country related cause.
- Make sure the GooglePlay services is present and enabled on your device
Adtiming SDK functions on top of the GooglePlay services. In the rare cases developers have reported some custom ROMs do not include the GooglePlay services or fail to let the SDK interact with it.
- Make sure the mediated adNetworks and their adapters are present
If you did NOT use maven:
1. Make sure the core SDK and each adapter exists in the libs folder:
2. Make sure they were correctly referenced in gradle:
implementation(name: 'Adtiming-5.5.3', ext: 'aar')
implementation(name: 'AdColonyAdapter-3.0.1' ,ext: 'aar')
implementation(name: 'AdmobAdapter-3.0.0', ext: 'aar')
implementation(name: 'UnityAdapter-3.1.1', ext: 'aar')
implementation(name: 'AppLovinAdapter-3.0.1', ext: 'aar')
implementation(name: 'ChartboostAdapter-3.0.1', ext: 'aar')
implementation(name: 'MopubAdapter-3.1.0', ext: 'aar')
implementation(name: 'TapjoyAdapter-3.0.1', ext: 'aar')
implementation(name: 'VungleAdapter-3.1.0', ext: 'aar')
implementation(name: 'FacebookAdapter-3.0.1', ext: 'aar')
If you used maven:
1. Check your project-level gradle setup:
2. Check your app-level gradle setup:
2. Not init
- Make sure AdtAds.init() was called
- Diagnose initialization failure
3. Init is running
- SDK initialization is not complete when an ad is about to load
Always wait until the initialization phase is over before trying to load any ads. It is a good choice to invoke the first load method in the onSuccess callback.
4. Placement type match error
- Check if the placement type matches the SDK method type you called in your app
Log on to the AdTiming Platform and check your placement type.
5. Placement id is empty
- Pass the correct placement ID
Make sure the placement ID in your code is correct.
6. Activity is null or destroyed
- The activity instance was destroyed before ad loading
Make sure the activity instance would not be destroyed.
7. Config does not contain this placement
- PlacementId and appKey mismatch
Check if the placementId belongs to the app corresponding to the appKey.
- PlacementId not matching configuration
Logon to the AdTiming Platform to make sure the PlacementId was actually configured.
8. This ad object has been destroyed
- The ad object was destroyed by calling the SDK's destroy()
Do not call destroy() on an ad object if you want to reference it later. Or re-create the object after it was destroyed.
9. Create ad object failed
- Something went wrong during the ad object creation
The object may be referenced but will likely malfunction. Go back to check what went wrong.
10. Callbacks not triggered
- The listener setup
Check here to see if the listener was set up correctly for the event type.
- Missing load()
Make sure you called ad load() in your app.
- Make sure you have added the adapter for that AdNetwork
Version 5.5.0+ switches to a modular design, and developers need to have both the core SDK and the adapter for each AdNetwork to be able to mediate that AdNetwork through AdTiming. Failing to do so will result in no ad requests to be sent to the AdNetwork, and no corresponding callback to be tiggered.
- Rare case scenario: wait out the timeout
All of your ads are waiting for the resources to be downloaded from the internet. Sometimes they are done in parallel, and occasionally due to reasons like poor connection, none of them could be completed before it times out, so your callbacks don't get called.
Grab a coffee, sit back and relax a bit when you give it a couple of more tries and wait it out. You should eventually get a "No fill" in one of the failed callbacks in the worst case where it keeps timing out.