💡Tips
- 🚀 采用预加载机制提升用户体验
- ⚠️ 注意处理生命周期防止内存泄漏
- 🔧 推荐使用标准化回调处理流程
宽高设置需要与在Taku后台配置的宽高比一致,并根据实际效果进行调整。
//导入头文件
#import <AnyThinkBanner/AnyThinkBanner.h>
@interface BannerVC () <ATADXPublicLoadingDelegate, ATADXPubBannerDelegate>
@property (nonatomic, strong) ATADXBannerAd *bannerAd;
@end
@implementation BannerVC
//广告位ID
#define BannerPlacementID @"对应广告位id"
//场景ID,可选,可在后台生成。没有可传入空字符串
#define BannerSceneID @""
//请注意,banner size需要和后台配置的比例一致
#define BannerSize CGSizeMake(320, 50)
#pragma mark - Load Ad 加载广告
/// 加载广告
- (void)loadAd {
NSMutableDictionary * loadConfigDict = [NSMutableDictionary dictionary];
[loadConfigDict setValue:[NSValue valueWithCGSize:BannerSize] forKey:kATAdLoadingExtraBannerAdSizeKey];
// 设置自定义参数
// [loadConfigDict setValue:@"media_val_BannerVC" forKey:kATAdLoadingExtraMediaExtraKey];
ATADXBannerAd *adInfo = [[ATADXBannerAd alloc] initAdWithPlacementId:BannerPlacementID];
adInfo.extra = loadConfigDict;
adInfo.loadDelegate = self;
adInfo.showDelegate = self;
self.bannerAd = adInfo;
// 开始加载
[adInfo loadAd];
}
#pragma mark - ATADXPublicLoadingDelegate
/// 广告位加载完成
- (void)didFinishLoadingADXItem:(ATADXBaseAd *)item bannerView:(UIView *)bannerView {
}
/// 广告位加载失败
- (void)didFailToLoadADXItem:(ATADXBaseAd *)item
error:(NSError*)error {
}
#pragma mark - Show Ad 展示广告
/// 展示广告
- (void)showAd {
// 场景统计功能,呈现在后台的 数据报表 -> 漏斗分析报表 -> 到达广告场景 ,在展示广告前调用。可选接入
// [[ATAdManager sharedManager] entryBannerScenarioWithPlacementID:BannerPlacementID scene:BannerSceneID];
// 检查是否有就绪
BOOL isReady = [self.bannerAd isReady];
if (!isReady) {
return;
}
// 展示配置,Scene传入后台的场景ID,没有可传入空字符串,showCustomExt参数可传入自定义参数字符串
ATShowConfig *config = [[ATShowConfig alloc] initWithScene:BannerSceneID showCustomExt:@"testShowCustomExt"];
[self.bannerAd showBannerViewWithConfig:config];
// 展示广告
UIView *bannerView = self.bannerAd.bannerContainerView;
if (bannerView != nil) {
// 赋值
bannerView.delegate = self;
bannerView.presentingViewController = self;
bannerView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:bannerView];
self.bannerView = bannerView;
// 布局
[self.bannerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(self.view);
make.height.equalTo(@(BannerSize.height));
make.width.equalTo(@(BannerSize.width));
make.top.equalTo(self.textView.mas_bottom).offset(5);
}];
}
}
#pragma mark - ATADXPubBannerDelegate
/// 横幅广告已展示
- (void)adxBannerDidShowAd:(ATADXBaseAd *)item {
}
/// 横幅广告被点击
- (void)adxBannerDidClick:(ATADXBaseAd *)item {
}
/// 关闭按钮点击
- (void)adxBannerDidTapCloseButton:(ATADXBaseAd *)item {
}
/// 横幅广告已打开或跳转深链接页面
- (void)adxBannerDidDeepLinkOrJump:(ATADXBaseAd *)item result:(BOOL)success {
}
#pragma mark - 销毁广告
- (void)removeAd {
if (self.bannerAd) {
[self.bannerAd destroy];
}
}
可参考此文档:客户端竞价