Menu

Custom Splash Ads

1. Description

Use splash ad placements to configure native ad sources.

Please go here to view the support scope of this feature

2. Developer Dashboard Configuration

  • Create a Splash ad placement in the management dashboard and add or edit ad sources that support mixed ad formats
  • Decide on the rendering method. If you choose SDK rendering, no additional integration code is needed. Choosing developer self-rendering requires additional integration code

3. SDK Configuration

  • SDK Rendering: Rendered using the SDK's built-in layout styles, no additional code setup required.
  • Developer Self-Rendering: Does not use the SDK's built-in layout styles, custom style rendering for ads. Requires additional code, specific steps as follows:

Step 1: When displaying splash ads, call the following API

objc Copy
[[ATAdManager sharedManager] showSplashWithPlacementID:xxxx config:xxx window:xxx inViewController:xxx extra:xxx delegate:xxx nativeMixViewBlock:^(ATSelfRenderingMixSplashView * _Nonnull selfRenderingMixSplashView) {
     [weakSelf renderSelfWith:selfRenderingMixSplashView];
}];

Step 2: In the nativeMixViewBlock:^(ATSelfRenderingMixSplashView * _Nonnull selfRenderingMixSplashView) callback, layout by obtaining the ATSelfRenderingMixSplashView object, for example:

objc Copy
- (void)renderSelfWith:(ATSelfRenderingMixSplashView *)selfRenderingMixSplashView {
    
    self.selfRenderingMixSplashView = selfRenderingMixSplashView;
    
    CGRect rect = selfRenderingMixSplashView.frame;

    UIImageView *bigImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, rect.size.width, rect.size.height)];
    [bigImage setContentMode:UIViewContentModeScaleAspectFit];
    [bigImage sd_setImageWithURL:[NSURL URLWithString:selfRenderingMixSplashView.mainImageURLString]];
    [selfRenderingMixSplashView addSubview:bigImage];
    
    //Media view, must be obtained
    UIView *mediaView = [selfRenderingMixSplashView networkMediaView];
    if (mediaView) {
        mediaView.frame = CGRectMake(0, 0, rect.size.width, rect.size.height);
        [selfRenderingMixSplashView addSubview:mediaView];
    }
    
    UIView *optionView = [selfRenderingMixSplashView networkOptionsView];
    if (optionView) {
        optionView.frame = CGRectMake(0, rect.size.height - 30, 25, 25);
        [selfRenderingMixSplashView addSubview:optionView];
    }
    
    UIImageView *iconImage = [[UIImageView alloc] initWithFrame:CGRectMake(20, rect.size.height - 200, 80, 80)];
    [iconImage setContentMode:UIViewContentModeScaleAspectFit];
    [iconImage sd_setImageWithURL:[NSURL URLWithString:selfRenderingMixSplashView.iconImageURLString]];
    [selfRenderingMixSplashView addSubview:iconImage];
    iconImage.layer.masksToBounds = YES;
    iconImage.layer.cornerRadius = 8;
    
    UILabel *label = [[UILabel alloc] init];
    label.text = selfRenderingMixSplashView.titleString;
    label.textColor = [UIColor whiteColor];
    label.frame = CGRectMake(120, rect.size.height - 190, 200, 30);
    [selfRenderingMixSplashView addSubview:label];
    
    UILabel *label2 = [[UILabel alloc] init];
    label2.text = selfRenderingMixSplashView.textString;
    label2.textColor = [UIColor whiteColor];
    label2.frame = CGRectMake(120, rect.size.height - 160, 200, 30);
    [selfRenderingMixSplashView addSubview:label2];
    
    UILabel *domainLabel = [[UILabel alloc] init];
    domainLabel.text = selfRenderingMixSplashView.domainString;
    domainLabel.textColor = [UIColor whiteColor];
    domainLabel.frame = CGRectMake(0, rect.size.height - 50, 200, 10);
    [selfRenderingMixSplashView addSubview:domainLabel];
    
    UILabel *sponsoredLabel = [[UILabel alloc] init];
    sponsoredLabel.text = selfRenderingMixSplashView.sponsorString;
    sponsoredLabel.textColor = [UIColor whiteColor];
    sponsoredLabel.frame = CGRectMake(120, rect.size.height - 30, 200, 30);
    [selfRenderingMixSplashView addSubview:sponsoredLabel];
    
    UILabel *label3 = [[UILabel alloc] init];
    label3.text = selfRenderingMixSplashView.ctaString;
    label3.textColor = [UIColor whiteColor];
    label3.frame = CGRectMake(120, rect.size.height - 90, 200, 40);
    [selfRenderingMixSplashView addSubview:label3];
    label3.layer.masksToBounds = YES;
    label3.layer.cornerRadius = 20;
    label3.backgroundColor = [UIColor blueColor];
    label3.textAlignment = NSTextAlignmentCenter;
    
    //Self-rendering shake view addition, only supported by some ad platforms, and requires permission activation on the third-party ad platform side
    UIView *shakeView = [selfRenderingMixSplashView getNetworkShakeViewWithFrame:CGRectMake(rect.size.width * 0.5, rect.size.height * 0.5, 100, 100)];
    [selfRenderingMixSplashView addSubview:shakeView];
    self.shakeView = shakeView;
    
    if (Whether to customize skip button) {
        CGFloat w = 80;
        UIButton *slef_skipBtn = [[UIButton alloc] init];
        self.skipButton = slef_skipBtn;
        slef_skipBtn.frame = CGRectMake(rect.size.width-w, 60, w, 30);
        [slef_skipBtn addTarget:self action:@selector(skipAction) forControlEvents:UIControlEventTouchUpInside];
        [slef_skipBtn setTitle:@"Close" forState:UIControlStateNormal];
        [selfRenderingMixSplashView addSubview:slef_skipBtn];
    }

    NSLog(@"Developer self-rendering:domainString:%@---sponsorString:%@",selfRenderingMixSplashView.domainString,selfRenderingMixSplashView.sponsorString);
    
    ATSelfRenderingMixSplashModel *mixInterstitialModel = [ATSelfRenderingMixSplashModel loadMixSplashModel:^(ATSelfRenderingMixSplashModel * _Nonnull mixSplashModel) {
        mixSplashModel.titleLabel = label;
        mixSplashModel.textLabel = label2;
        mixSplashModel.ctaLabel = label3;
        if (Whether to customize skip button) {
            mixSplashModel.skipButton = self.skipButton;
        }
        mixSplashModel.iconImageView = iconImage;
        mixSplashModel.domainLabel = domainLabel;
        mixSplashModel.advertiserLabel = sponsoredLabel;
    }];

    //Bind relationship, must be called
    [selfRenderingMixSplashView bindViewRelation:mixInterstitialModel];

    // Register event buttons, must be called
    if (mediaView) {
        [selfRenderingMixSplashView registerClickableViewArray:@[label,bigImage,mediaView,label2,label3,iconImage]];
    } else {
        [selfRenderingMixSplashView registerClickableViewArray:@[label,bigImage,label2,label3,iconImage]];
    }
}

Important Notes:

① When setting developer self-rendering mode in the developer dashboard, if self-rendering is not implemented in the code to return an ad View, the SDK's built-in layout style will be used for rendering by default.

② When setting developer self-rendering mode in the developer dashboard and implementing self-rendering in the code to return an ad View, the ad background is fully transparent by default.

Previous
Best practices for splash Ads
Next
Banner Ads
Last modified: 2025-08-07Powered by