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