Menu

Notes before integration of each ad formats


Ⅰ. 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.

Suggestion: Avoid having any elements cover the splash ad area during display.
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)

Suggestion: Don't remove or destroy the ads after they are displayed, wait for the ads to trigger a close callback (the ads close automatically or the user clicks on the close button) and then remove the splash page.
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:

Android: Please refer to the requirements in Notes for Native Advertising Platforms for rendering. Some networks require Views such as MediaView and AdIconView to be rendered to the layout.
iOS: Please refer to the requirements in Self-rendering creative instructions, you need to determine if it's rendering properly by displaying the callback.
Affect: If the specified View is not rendered as required, invalid display, no revenue

 

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.

Suggestion: Scrolling without destroying, please save the rendered view instead of rendering it again. Please refer to the NativeListActivity in the demo.
Affect: Ads not displayed when sliding back, interface anomalies, poor user experience

 

4. Omission of specified width and height for template ad prior to loading.

Suggestion: The TopOn's dashboard selects the width/height that is consistent or close to the network and passes in the same width/height before loading.Please refer to the following code.
Android:
Map localExtra = new HashMap<>();
localExtra.put(ATAdConst.KEY.AD_WIDTH, adViewWidth);
localExtra.put(ATAdConst.KEY.AD_HEIGHT, adViewHeight);
mATNative.setLocalExtra(localExtra);
mATNative.makeAdRequest();
iOS:
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];
Affect: Incomplete and distorted display of ad
 

 

Ⅲ. Banner Ads

1.Ads are still being loaded manually, even though auto-refresh is enabled.

Suggestion: There is no need to load ads manually when the TopOn's dashboard is set to auto-refresh. If you need to control the Banner refresh, you can set auto-refresh to 0 in Mediation-Advanced-Auto Refresh, turn off auto-refresh and then use manual load.
Affect: May  be invalid display

 

2. Displaying multiple BannerViews with the same placement in different locations on a single page.

Suggestion: The BannerView can use different placement for different locations.
Affect: Ads may load with only one banner filled and the rest of the banners may not be displayed. Wasted ad display opportunities

 

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?

Suggestion: Pass in the specified width and height of the banner area via LocalExtra before loading the ad.
Android:
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];
Affect: Without passing in the width and height, banner ads on some networks will not be able to fill the banner area, resulting in fewer clicks on the ads

 

4. Whether to set up a timed refresh of the Banner in the third-party platform?

Suggestion: Enable timed refresh only in TopOn's dashboard.
Affect: May cause inconsistencies between TopOn's dashboard requests, display data and network

 

Ⅳ. Rewarded Video

1. [Android]Whether the ad object is created following provided guidelines?

Suggestion: Follow the proper procedures for creating rewarded video ad objects as outlined in Rewarded Video Ad.
Affect: Some networks will fail to load, resulting in no fill, affecting fill rates

 

2. Getting reward needs to depend on rewarded callbacks, not playback end callbacks.

Notes: Different networks have different conditions for getting reward.
Android: Depending on onReward() callback
iOS: Depending on rewardedVideoDidRewardSuccessForPlacemenID: extra:
Affect: May cause an exception in getting reward

 

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)

Suggestion: Don't remove or destroy the ads after they are displayed, wait for the ads to trigger a close callback (the ads close automatically or the user clicks on the close button) and then remove the splash page.
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?

Suggestion: Please refer to Interstitial Ad when creating interstitial ad object.
Affect: Some networks will fail to load, resulting in no fill, affecting fill rates

 

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)

Suggestion: Avoid continuous API of the interstitial ad calls to display or overlaying additional views post-ad display.
Affect: Invalid displayed, no revenue

 

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)

Suggestion: Don't remove or destroy the ads after they are displayed, wait for the ads to trigger a close callback (the ads close automatically or the user clicks on the close button) and then remove the splash page.
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.
Last modified: 2025-05-30Powered by