Ⅰ. Splash Ads
1. Using a custom timer to jump to the app home page without using the splash ad timeout callback.
Suggestion: Please refer to Android Best practices for Splash Ads or iOS Best practices for Splash Ads.
Affect: Invalid display, no revenue
2. Displaying ads while the app is in the background. (e.g., show ads directly in fill callbacks)
Suggestion: The method of displaying ads should be called when the app is in the foreground before displaying the ads
Affect: Some networks will determine that the display is invalid, no revenue
3. There are other views or ads covering the area of the splash ad.
Affect: If it is covered, it may affect the effectiveness of the ad display or the countdown timer may get stuck
Notes: If adding views to the splash ad area is necessary, ensure they do not exceed 20% of the screen size and check for normal ad display callbacks and countdown timer functionality.
4. Self-removal or destruction of the ad post-display. (e.g., timer to automatically destroy ads, add extra button to destroy ads on click)
Affect: Self-removal or destruction can cause some networks not closing callbacks. It may cause the network determining that the ad is invalid displayed and no revenue is generated because the ad exposure time is not met.
Notes: Additionally, self-removal may cause issues such as residual video ad sounds or unintentional jumps in the ad content, and some unknown issues.
Ⅱ. Native Ads
1. [Self-Rendering Ads] Material Rendering Requirements:
iOS: Please refer to the requirements in Self-rendering creative instructions, you need to determine if it's rendering properly by displaying the callback.
2. The ad request was successful, but the fetched ad material was empty
Suggestion:
Android: Checks if no rendering is done after calling getNativeAd(). If only getNativeAd() is called without rendering, the cache will be consumed, because every time getNativeAd() is executed, a cache entry is deleted.
iOS: Checks if no rendering is done after calling getNativeAdOfferWithPlacementID(). If only getNativeAdOfferWithPlacementID() is called without rendering, the cache will be consumed, because every time getNativeAdOfferWithPlacementID() is executed, a cache entry is deleted.
Affect: Wasted ad caching and ad display opportunities
3. Destroy ads while scrolling the list.
4. Omission of specified width and height for template ad prior to loading.
Map localExtra = new HashMap<>();
localExtra.put(ATAdConst.KEY.AD_WIDTH, adViewWidth);
localExtra.put(ATAdConst.KEY.AD_HEIGHT, adViewHeight);
mATNative.setLocalExtra(localExtra);
mATNative.makeAdRequest();
CGSize size = CGSizeMake(UIScreen.mainScreen.bounds.size.width, 350);
NSDictionary *extra = @{
kATExtraInfoNativeAdSizeKey:[NSValue valueWithCGSize:size],
kATNativeAdSizeToFitKey:@YES,
};
[[ATAdManager sharedManager] loadADWithPlacementID:@"your Native placement id" extra:extra delegate:self];
Ⅲ. Banner Ads
1.Ads are still being loaded manually, even though auto-refresh is enabled.
2. Displaying multiple BannerViews with the same placement in different locations on a single page.
3. If the ad source is configured with an aspect ratio, is the specified width and height of the banner area passed through LocalExtra before loading the ad?
Map localMap = new HashMap<>();
localMap.put(ATAdConst.KEY.AD_WIDTH, width);
localMap.put(ATAdConst.KEY.AD_HEIGHT, height);
mATBannerView.setLocalExtra(localMap);
mATBannerView.loadAd();
iOS:
// for example 320*50
CGSize size = CGSizeMake([UIScreen mainScreen].bounds.size.width, ([UIScreen mainScreen].bounds.size.width * 50) / 320);
NSDictionary *extra = @{ kATAdLoadingExtraBannerAdSizeKey : [NSValue valueWithCGSize:size], };
[[ATAdManager sharedManager] loadADWithPlacementID:@"your banner placementID" extra:extra delegate:self];
4. Whether to set up a timed refresh of the Banner in the third-party platform?
Ⅳ. Rewarded Video
1. [Android]Whether the ad object is created following provided guidelines?
2. Getting reward needs to depend on rewarded callbacks, not playback end callbacks.
onReward() callbackrewardedVideoDidRewardSuccessForPlacemenID: extra:
3. Self-removal or destruction of the ad post-display. (e.g., timer to automatically destroy ads, add extra button to destroy ads on click)
Affect: Self-removal or destruction can cause some networks not closing callbacks. It may cause the network determining that the ad is invalid displayed and no revenue is generated because the ad exposure time is not met.
Notes: Additionally, self-removal may cause issues such as residual video ad sounds or unintentional jumps in the ad content, and some unknown issues.
Ⅴ. Interstitial Ads
1. [Android]Whether the ad object is created following provided guidelines?
2. After calling the API for displaying interstitial ads, will the ad view be covered or overlapped by other views or ads? (e.g., Calling the API of the interstitial ad display continuously)
3. Self-removal or destruction of the ad post-display. (e.g., timer to automatically destroy ads, add extra button to destroy ads on click)
Affect: Self-removal or destruction can cause some networks not closing callbacks. It may cause the network determining that the ad is invalid displayed and no revenue is generated because the ad exposure time is not met.
Notes: Additionally, self-removal may cause issues such as residual video ad sounds or unintentional jumps in the ad content, and some unknown issues.