Menu

Manual loading

1. Introduction

1.1 Integration suggestions

  1. Loading Advertising:
    • After the opening screen advertisement is displayed, load the advertisement through loadADWithPlacementID . Please call the loading method in advance to request the advertisement (for example, when opening the screen Ads can be preloaded after being displayed) so that they can be displayed quickly when ads need to be triggered
    • It is recommended to call entryInterstitialScenarioWithPlacementID after entering the displayable ad scene to count the cache status of the current ad slot, specific For statistical explanation, you can view Advertising scenarios to distinguish data between different business scenarios
  2. Display advertising:
    • Please call interstitialReadyForPlacementID  before displaying to determine whether the ad is ready
      • YES: call showInterstitialWithPlacementID Row advertising display
      • NO: You need to decide based on your needs whether to give up the impression and preload the next ad, or reload the ad and wait for it to be displayed after success
  3. Ad preloading:
    • After the interstitial ad is displayed, it can be interstitialDidShowForPlacementID  after the ad is displayed or interstitialDidCloseForPlacementID  after the ad is closed. Calling loadADWithPlacementID  in the callback for preloading will help increase the impression volume of higher priority advertising sources
    • Please refer to Automatically request ads, enable automatic request for ads. If the pre-loading logic after display above has been implemented, automatic request does not need to be enabled, and vice versa
  4. Preset strategy:
    • We recommend using the preset strategy to improve the ad loading effect of the first cold start. Specific instructions For access tutorials, see SDK preset policy instructions

1.2 Notes

    • Disabled in didFailToLoadADWithPlacementID  Execute the ad loading method in the callback, otherwise it will cause a lot of useless requests and may cause the application to freeze
    • Avoid didFinishLoadingADWithPlacementID  Display interstitial ads directly in the callback. If automatic request for ads is enabled in the background, the SDK will automatically request ads after the ads are displayed. Developers cannot accurately control the timing of interstitial ad display
    • It is not recommended to load ads when the app is in the background to avoid unnecessary exceptions caused by system recycling of resources

2. API description

2.1 Loading ads

ATAdManager: Interstitial ad management class

MethodDescription
sharedManagerGet ATAdManager singleton object
loadADWithPlacementID: extra: delegate:Interstitial loading method
placementId: TopOn's advertising slot id
extra: local configuration parameters
delegate: delegate object

Example of loading code:

#import <AnyThinkInterstitial/AnyThinkInterstitial.h>

- (void)loadAd {
    // Setting the extra custom parameter will be returned to the Extra of the agent 
    // and can be used to match the custom rules of the AD space
      NSDictionary *extra = @{
          kATAdLoadingExtraMediaExtraKey:@"custom_values",
      };
        // Load the interstitial ads
      [[ATAdManager sharedManager] loadADWithPlacementID:@"your iv placementID" extra:extra delegate:self];
}

2.2 Display ads

MethodDescription
interstitialReadyForPlacementID:Check to see if the AD is ready before showing
placementId: TopOn's ad slot id
showInterstitialWithPlacementID: inViewController: delegate:Display Splash ads
placementId: TopOn's ad slot id
inViewController: Display ads window
delegate: proxy object
showInterstitialWithPlacementID: scene: inViewController: delegate:Display Splash ad with scene id
placementId: TopOn's advertising slot id
scene: scene id, If you do not differentiate between scenes, you can pass empty
inViewController: window for displaying ads
delegate: proxy object

Example showing code:

- (void)showInterstitialAd {
    // Check to see if the AD is ready before showing
    if ([[ATAdManager sharedManager] interstitialReadyForPlacementID:@"your iv placementID"]) {
        
        [[ATAdManager sharedManager] showInterstitialWithPlacementID:@"your iv placementID" inViewController:self delegate:self];
    } else {
        // AD not filled, whether to reload
    }
}

2.3 Scene statistics

User statistics The probability of reaching the scene is displayed in the background data report -> Funnel Analysis Report -> reaching the advertising scene, so it is recommended that developers make calls in the right place.

MethodDescription
entryInterstitialScenarioWithPlacementID: scene: The corresponding advertising space enters the business scene cache status statistics placementId: advertising space Id scene: advertising display scene, the scene parameters can be created from the background, please refer to Business scenario cache status statistics

Sample code called:

/* To collect scene arrival rate statistics, you can view related information https://docs.toponad.com/#/zh-cn/ios/NetworkAccess/scenario/scenario 
Call the "Enter AD scene" method when an AD trigger condition is met, such as: 
** The scenario is a pop-up AD after the cleanup, which is called at the end of the cleanup. 
* 1、Call entryXXX to report the arrival of the scene. 
* 2、Call xxRewardedVideoReadyForPlacementID. 
* 3、Call showXX to show AD view. 
* (Note the difference between auto and manual) */
[[ATAdManager sharedManager] entryInterstitialScenarioWithPlacementID:@"your iv placement id" scene:@"your scenarioID"];
// Check to see if the AD is ready before showing
if ([[ATAdManager sharedManager] interstitialReadyForPlacementID:@"your iv placementID"]) {
    
   [[ATAdManager sharedManager] showInterstitialWithPlacementID:@"your iv placementID" scene:@"your scenarioID" inViewController:self delegate:self];
} else {
    // AD not filled, whether to reload
}

2.4 Delegate callback

ATAdLoadingDelegate delegate method

MethodDescription
didFinishLoadingADWithPlacementID:corresponds to Advertising slot Ad loading success callback
placementId: Advertising slot Id
didFailToLoadADWithPlacementID: error:corresponds to Advertising slot Ad loading failure callback
placementId: Advertising slot Id
error: Ad loading failure information
didStartLoadingADSourceWithPlacementID: extra:corresponds to Callback when an advertising source in the advertising slot starts loading ads
placementId: Advertising slot Id
extra: Advertising additional parameters
didFinishLoadingADSourceWithPlacementID: extra:corresponds to a certain advertising source in the advertising slot callback for successful loading of ads
placementId: advertising slot Id
extra: additional advertising parameters
didFailToLoadADSourceWithPlacementID: extra: error:corresponds to loading of an advertising source in the advertising slot Callback for advertising failure
placementId: advertising slot Id
extra: advertising additional parameters
error: advertising loading failure information
didStartBiddingADSourceWithPlacementID: extra:corresponds to an advertising source in the advertising slotCallback for bidding ad start bidding
placementId: Advertising slot Id
extra: Advertising additional parameters
didFinishBiddingADSourceWithPlacementID: extra:corresponds to a certain advertising source in the advertising slot callback for successful advertising bidding
placementId: advertising slot Id
extra: Advertising additional parameters
didFailBiddingADSourceWithPlacementID: extra: error:Corresponds to a certain advertising source in the advertising slot Callback for bidding failure of bidding ads
placementId: Advertising slot Id
extra: Advertising additional parameters
error: Bidding advertising failure information


ATInterstitialDelegate
delegate method

Callback function nameCallback function meaning
interstitialDidShowForPlacementID: extra:Interstitial ad displayed successfully
interstitialFailedToShowForPlacementID: extra:Interstitial ad display failed
interstitialDidStartPlayingVideoForPlacementID: extra:Interstitial video ad play start
InterstitialDidEndPlayingVideoForPlacementID: extra: Interstitial video ad play ends
interstitialDidFailToPlayVideoForPlacementID: error: extra:Interstitial video ad playback failed
interstitialDidClickForPlacementID: extra:Interstitial Ad Click
interstitialDidCloseForPlacementID: extra: Interstitial ads closed
interstitialDeepLinkOrJumpForPlacementID: extra: result:Interstitial ads click to jump Whether it is in Deeplink form, currently only returned for TopOn Adx ads
extra: Extended parameter reference Documentation

sample code:

#pragma mark - loading delegate
- (void)didStartLoadingADSourceWithPlacementID:(NSString *)placementID extra:(NSDictionary*)extra{
    NSLog(@"ADSource--AD--start--ATInterstitialViewController::didStartLoadingADSourceWithPlacementID:%@---extra:%@", placementID,extra);
}

- (void)didFinishLoadingADSourceWithPlacementID:(NSString *)placementID extra:(NSDictionary*)extra{
    NSLog(@"ADSource--AD--finish--ATInterstitialViewController::didFinishLoadingADSourceWithPlacementID:%@---extra:%@", placementID,extra);
}

- (void)didFailToLoadADSourceWithPlacementID:(NSString*)placementID extra:(NSDictionary*)extra error:(NSError*)error{
    NSLog(@"ADSource--AD--Fail--ATInterstitialViewController::didFailToLoadADSourceWithPlacementID:%@---error:%@", placementID,error);
}

// bidding
- (void)didStartBiddingADSourceWithPlacementID:(NSString *)placementID extra:(NSDictionary*)extra{
    NSLog(@"ADSource--bid--Start--ATInterstitialViewController::didStartBiddingADSourceWithPlacementID:%@---extra:%@", placementID,extra);
}

- (void)didFinishBiddingADSourceWithPlacementID:(NSString *)placementID extra:(NSDictionary*)extra{
    NSLog(@"ADSource--bid--Finish--ATInterstitialViewController::didFinishBiddingADSourceWithPlacementID:%@--extra:%@", placementID,extra);
}

- (void)didFailBiddingADSourceWithPlacementID:(NSString*)placementID extra:(NSDictionary*)extra error:(NSError*)error{
    NSLog(@"ADSource--bid--Fail--ATInterstitialViewController::didFailBiddingADSourceWithPlacementID:%@--error:%@", placementID,error);
}

-(void) didFinishLoadingADWithPlacementID:(NSString *)placementID {
    NSLog(@"ATInterstitialViewController::didFinishLoadingADWithPlacementID:%@", placementID);
}

-(void) didFailToLoadADWithPlacementID:(NSString*)placementID error:(NSError*)error {
    NSLog(@"ATInterstitialViewController::didFailToLoadADWithPlacementID:%@ error:%@", placementID, error);
}

#pragma mark - showing delegate
-(void) interstitialDidShowForPlacementID:(NSString *)placementID extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidShowForPlacementID:%@ extra:%@", placementID, extra);
}

-(void) interstitialFailedToShowForPlacementID:(NSString*)placementID error:(NSError*)error extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialFailedToShowForPlacementID:%@ error:%@ extra:%@", placementID, error, extra);
}

-(void) interstitialDidFailToPlayVideoForPlacementID:(NSString*)placementID error:(NSError*)error extra:(NSDictionary*)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidFailToPlayVideoForPlacementID:%@ error:%@ extra:%@", placementID, error, extra);
}

-(void) interstitialDidStartPlayingVideoForPlacementID:(NSString*)placementID extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidStartPlayingVideoForPlacementID:%@ extra:%@", placementID, extra);
}

-(void) interstitialDidEndPlayingVideoForPlacementID:(NSString*)placementID extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidEndPlayingVideoForPlacementID:%@ extra:%@", placementID, extra);
}

-(void) interstitialDidCloseForPlacementID:(NSString*)placementID extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidCloseForPlacementID:%@ extra:%@", placementID, extra);
}

-(void) interstitialDidClickForPlacementID:(NSString*)placementID extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidClickForPlacementID:%@ extra:%@", placementID, extra);
}

- (void)interstitialDeepLinkOrJumpForPlacementID:(NSString *)placementID extra:(NSDictionary *)extra result:(BOOL)success {
    NSLog(@"ATInterstitialViewController:: interstitialDeepLinkOrJumpForPlacementID:placementID:%@ with extra: %@, success:%@", placementID,extra, success ? @"YES" : @"NO");
}

2.5 Other API

MethodDescription
getInterstitialValidAdsForPlacementID:Query all cached information of this ad slot. The first item in the array is the ad data to be displayed.
placementId: the advertising slot Id to be queried

Call the sample code

// Query all cache information for the AD space
 NSArray *array = [[ATAdManager sharedManager] getInterstitialValidAdsForPlacementID:self.placementID];
 NSLog(@"ValidAds.count:%ld--- ValidAds:%@",array.count,array);

3. Sample code

#import <AnyThinkInterstitial/AnyThinkInterstitial.h>

@interface ATInterstitialViewController () <ATAdLoadingDelegate, ATInterstitialDelegate>
@end

@implementation ATInterstitialViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self loadAd];
}

- (void)loadAd {
 // Setting the extra custom parameter will be returned to the Extra of the agent  
 // and can be used to match the custom rules of the AD space
    NSDictionary *extra = @{
        kATAdLoadingExtraMediaExtraKey:@"media_val",
    };
    
    [[ATAdManager sharedManager] loadADWithPlacementID:@"your iv placementID" extra:extra delegate:self];
}

- (void)entryAdScenario {
    /* To collect scene arrival rate statistics, you can view related information https://docs.toponad.com/#/zh-cn/ios/NetworkAccess/scenario/scenario 
    Call the "Enter AD scene" method when an AD trigger condition is met, such as: 
    ** The scenario is a pop-up AD after the cleanup, which is called at the end of the cleanup. 
    * 1、Call entryXXX to report the arrival of the scene. 
    * 2、Call xxRewardedVideoReadyForPlacementID. 
    * 3、Call showXX to show AD view. 
    * (Note the difference between auto and manual) */
    [[ATAdManager sharedManager] entryInterstitialScenarioWithPlacementID:@"your iv placement id" scene:@"your scenarioID"];
}

// show ad
- (void)showInterstitialAd {
       [self entryAdScenario];
       
       if ([[ATAdManager sharedManager] interstitialReadyForPlacementID:@"your iv placement id"]) {
           [[ATAdManager sharedManager] showInterstitialWithPlacementID:@"your iv placement id" scene:@"your scenarioID" inViewController:self delegate:self];
       } else {
//           reload AD
       }
}

#pragma mark - loading delegate
- (void)didStartLoadingADSourceWithPlacementID:(NSString *)placementID extra:(NSDictionary*)extra{
    NSLog(@"ADSource--AD--Start--ATInterstitialViewController::didStartLoadingADSourceWithPlacementID:%@---extra:%@", placementID,extra);
}

- (void)didFinishLoadingADSourceWithPlacementID:(NSString *)placementID extra:(NSDictionary*)extra{
    NSLog(@"ADSource--AD--Finish--ATInterstitialViewController::didFinishLoadingADSourceWithPlacementID:%@---extra:%@", placementID,extra);
}

- (void)didFailToLoadADSourceWithPlacementID:(NSString*)placementID extra:(NSDictionary*)extra error:(NSError*)error{
    NSLog(@"ADSource--AD--Fail--ATInterstitialViewController::didFailToLoadADSourceWithPlacementID:%@---error:%@", placementID,error);
}

// bidding
- (void)didStartBiddingADSourceWithPlacementID:(NSString *)placementID extra:(NSDictionary*)extra{
    NSLog(@"ADSource--bid--Start--ATInterstitialViewController::didStartBiddingADSourceWithPlacementID:%@---extra:%@", placementID,extra);
}

- (void)didFinishBiddingADSourceWithPlacementID:(NSString *)placementID extra:(NSDictionary*)extra{
    NSLog(@"ADSource--bid--Finish--ATInterstitialViewController::didFinishBiddingADSourceWithPlacementID:%@--extra:%@", placementID,extra);
}

- (void)didFailBiddingADSourceWithPlacementID:(NSString*)placementID extra:(NSDictionary*)extra error:(NSError*)error{
    NSLog(@"ADSource--bid--Fail--ATInterstitialViewController::didFailBiddingADSourceWithPlacementID:%@--error:%@", placementID,error);
}

-(void) didFinishLoadingADWithPlacementID:(NSString *)placementID {
    NSLog(@"ATInterstitialViewController::didFinishLoadingADWithPlacementID:%@", placementID);
}

-(void) didFailToLoadADWithPlacementID:(NSString*)placementID error:(NSError*)error {
    NSLog(@"ATInterstitialViewController::didFailToLoadADWithPlacementID:%@ error:%@", placementID, error);
}

#pragma mark - showing delegate
-(void) interstitialDidShowForPlacementID:(NSString *)placementID extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidShowForPlacementID:%@ extra:%@", placementID, extra);
}

-(void) interstitialFailedToShowForPlacementID:(NSString*)placementID error:(NSError*)error extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialFailedToShowForPlacementID:%@ error:%@ extra:%@", placementID, error, extra);
}

-(void) interstitialDidFailToPlayVideoForPlacementID:(NSString*)placementID error:(NSError*)error extra:(NSDictionary*)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidFailToPlayVideoForPlacementID:%@ error:%@ extra:%@", placementID, error, extra);
}

-(void) interstitialDidStartPlayingVideoForPlacementID:(NSString*)placementID extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidStartPlayingVideoForPlacementID:%@ extra:%@", placementID, extra);
}

-(void) interstitialDidEndPlayingVideoForPlacementID:(NSString*)placementID extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidEndPlayingVideoForPlacementID:%@ extra:%@", placementID, extra);
}

-(void) interstitialDidCloseForPlacementID:(NSString*)placementID extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidCloseForPlacementID:%@ extra:%@", placementID, extra);
}

-(void) interstitialDidClickForPlacementID:(NSString*)placementID extra:(NSDictionary *)extra {
    NSLog(@"ATInterstitialViewController::interstitialDidClickForPlacementID:%@ extra:%@", placementID, extra);
}

- (void)interstitialDeepLinkOrJumpForPlacementID:(NSString *)placementID extra:(NSDictionary *)extra result:(BOOL)success {
    NSLog(@"ATInterstitialViewController:: interstitialDeepLinkOrJumpForPlacementID:placementID:%@ with extra: %@, success:%@", placementID,extra, success ? @"YES" : @"NO");
}

@end

For detailed interstitial ad sample code, please refer to: Demo’s ATInterstitialViewController class

4. Advertising platform special configuration instructions

4.1 Sigmob

Rewarded video is used as an interstitial (calling Sigmob's rewarded video API). The Sigmob advertising source of TopOn's background interstitial advertising space needs to be configured with Sigmob's rewarded video ads slot id.

 NSDictionary *extra = @{kATInterstitialExtraUsesRewardedVideo:@YES};
[[ATAdManager sharedManager] loadADWithPlacementID:@"your interstitial placement id" extra:extra delegate:self];


Last modified: 2025-05-30Powered by