Use splash ad placements to configure native ad sources.
Please go here to view the support scope of this feature
Step 1: When displaying splash ads, call the following API
[[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:
- (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.