Trouble Shooting
The error code.
(lldb) po error.description Error Domain=com.cheetahmobile.ads.
error Code=-1004 "no fill" UserInfo={NSLocalizedDescription=no fill}
typedef NS_ENUM(NSInteger, CMAErrorCode) {
kCMAErrorInternalError = -1001,
kCMAErrorTimeout = -1002,
kCMAErrorNetworkError = -1003,
kCMAErrorNoFill = -1004,
kCMAErrorJSONTransform = -1005,
kCMAErrorServerError = -1006,
kCMAErrorInvalidArgument = -1007,
kCMAErrorResourceLoadError = -1008,
kCMAErrorVASTResolveError = -1009
};
The Solution to handle “didFailToLoadWithError(null)”
Here is the demo to show you how to handle the error (null)
-(void) loadAd {
// If there is no Ad ready, try to load ad.
NSLog(@"Requesting ad...");
CMAPosIDConfig *posIDConfig =
[[CMAPosIDConfig alloc] initWithOrionPosID:@"YOUR_GLOBAL_POSID"
liehuPosID:@"YOUR_POSID_FOR_CHINA"];
[[CMARewardVideoAd sharedInstance] loadAdWithPosIDConfig:posIDConfig];
}
#pragma mark - CMARewardVideoAdDelegate
- (void)rewardVideoAdDidReceiveAd:(CMARewardVideoAd *)rewardVideoAd;
{
NSLog(@"Ad was loaded. Ready to show ad");
self.errorCount = 0;
}
- (void)rewardVideoAd:(CMARewardVideoAd *)rewardVideoAd didFailToLoadWithError:(CMARequestError *)error;
{
NSLog(@"didFailToLoadAdWithError %@", error);
// if error == nil , Retry
if(error == nil) {
if ([CMARewardVideoAd sharedInstance].isReady) {
NSLog(@"It is ok to show video Ad.");
return;
}
self.errorCount += 1;
if(self.errorCount < 3) {
// Clear Cache
[CheetahMobileAds clearCache];
// Try to load ad again.
[self loadAd];
}
}
}
Last updated