使用开屏广告位配置原生广告源。
步骤 1,展示开屏广告时,调用以下 API
[[ATAdManager sharedManager] showSplashWithPlacementID:xxxx config:xxx window:xxx inViewController:xxx extra:xxx delegate:xxx nativeMixViewBlock:^(ATSelfRenderingMixSplashView * _Nonnull selfRenderingMixSplashView) {
[weakSelf renderSelfWith:selfRenderingMixSplashView];
}];
步骤 2,在nativeMixViewBlock:^(ATSelfRenderingMixSplashView * _Nonnull selfRenderingMixSplashView)
回调中,通过获取ATSelfRenderingMixSplashView
对象进行布局,例如:
- (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];
//媒体视图,必须获取
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;
//自渲染摇一摇视图添加,仅部分广告平台支持,且需要在第三方广告平台那边开通权限
UIView *shakeView = [selfRenderingMixSplashView getNetworkShakeViewWithFrame:CGRectMake(rect.size.width * 0.5, rect.size.height * 0.5, 100, 100)];
[selfRenderingMixSplashView addSubview:shakeView];
self.shakeView = shakeView;
if (是否自定义跳过按钮) {
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:@"关闭" forState:UIControlStateNormal];
[selfRenderingMixSplashView addSubview:slef_skipBtn];
}
NSLog(@"开发者自渲染:domainString:%@---sponsorString:%@",selfRenderingMixSplashView.domainString,selfRenderingMixSplashView.sponsorString);
ATSelfRenderingMixSplashModel *mixInterstitialModel = [ATSelfRenderingMixSplashModel loadMixSplashModel:^(ATSelfRenderingMixSplashModel * _Nonnull mixSplashModel) {
mixSplashModel.titleLabel = label;
mixSplashModel.textLabel = label2;
mixSplashModel.ctaLabel = label3;
if (是否自定义跳过按钮) {
mixSplashModel.skipButton = self.skipButton;
}
mixSplashModel.iconImageView = iconImage;
mixSplashModel.domainLabel = domainLabel;
mixSplashModel.advertiserLabel = sponsoredLabel;
}];
//绑定关联,必须调用
[selfRenderingMixSplashView bindViewRelation:mixInterstitialModel];
// 注册事件按钮,必须调用
if (mediaView) {
[selfRenderingMixSplashView registerClickableViewArray:@[label,bigImage,mediaView,label2,label3,iconImage]];
} else {
[selfRenderingMixSplashView registerClickableViewArray:@[label,bigImage,label2,label3,iconImage]];
}
}
注意点:
① 当在开发者后台设置开发者自渲染方式时,如果没在代码实现自渲染返回广告View,则会默认用SDK内置的布局样式进行渲染。
② 当在开发者后台设置开发者自渲染方式并且有在代码设置自渲染返回广告View时,则广告背景默认是全透明。