💡Tips
- 🚀 采用预加载机制提升用户体验
- ⚠️ 注意处理生命周期防止内存泄漏
- 🔧 推荐使用标准化回调处理流程
- ⭐ 自动刷新功能 请详见-HyperBid Tools控制台-应用管理-聚合单元-高级设置
@interface BannerVC () <MCBannerAdViewAdDelegate, MCAdRevenueDelegate>
@property (nonatomic, strong) UIView *adView; // 广告容器视图
@property (nonatomic, strong) MCBannerAdView *bannerView; // 横幅广告视图
@property (nonatomic, assign) BOOL hasLoaded; // 广告加载状态标识
@end
@implementation BannerVC
// 横幅广告聚合单元ID,需要替换为您的实际聚合单元ID
#define BannerPlacementID @"your mediation unit id"
// 场景ID,用于区分不同的广告展示场景
#define BannerSceneID @""
// 配置横幅广告尺寸,例如:320x50
#define BannerSize CGSizeMake(320, 50)
#pragma mark - Load Ad
- (void)loadAd {
// 如果横幅广告视图不存在,则创建新的实例
if (!self.bannerView) {
_bannerView = [[MCBannerAdView alloc] initWithPlacementId:BannerPlacementID adFormat:[MCAdFormat banner]];
}
// 设置广告代理和收益代理
self.bannerView.delegate = self;
self.bannerView.revenueDelegate = self;
// 设置横幅广告尺寸
self.bannerView.bannerSize = BannerSize;
// 设置广告场景ID
self.bannerView.placement = BannerSceneID;
// 开始加载广告
[self.bannerView loadAd];
}
#pragma mark - MCBannerAdViewAdDelegate
// 广告加载成功
- (void)didLoadAd:(MCAdInfo *)ad {
self.hasLoaded = YES;
}
// 广告加载失败
- (void)didFailToLoadAdWithError:(MCError *)error {
self.hasLoaded = NO;
}
// 广告展示成功
- (void)didDisplayAd:(MCAdInfo *)ad {
}
// 广告关闭
- (void)didHideAd:(MCAdInfo *)ad {
[self removeAd];
}
// 广告点击
- (void)didClickAd:(MCAdInfo *)ad {
}
// 广告展示失败
- (void)didFailToDisplayAd:(MCAdInfo *)ad withError:(MCError *)error {
}
// 可折叠横幅广告展开时触发(如果广告网络支持)
- (void)didExpandAd:(MCAdInfo *)ad { }
// 可折叠横幅广告收起时触发(如果广告网络支持)
- (void)didCollapseAd:(MCAdInfo *)ad { }
#pragma mark - MCAdRevenueDelegate
// 收益跟踪回调
- (void)didPayRevenueForAd:(MCAdInfo *)ad {
}
// 判断当前是否存在可展示的广告
BOOL isready = self.hasLoaded;
if (isready && self.bannerView) {
self.adView = [[UIView alloc]init];
self.adView.backgroundColor = randomColor;
[self.adView addSubview:self.bannerView];
[self.view insertSubview:self.adView belowSubview:self.footView];
[self.adView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.equalTo(@(_adSize.height));
make.width.equalTo(@(_adSize.width));
make.top.equalTo(self.view).offset(100);
}];
[self.bannerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.adView);
}];
}
// 移除广告BannerView
- (void)removeAd {
if (self.adView && self.adView.superview) {
[self.adView removeFromSuperview];
[self.bannerView destroyAd];
_bannerView = nil;
self.adView = nil;
self.hasLoaded = NO;
}
}
- (void)loadAd {
MCBannerAdView *bannerView = [[MCBannerAdView alloc] initWithPlacementId:self.placementID];
bannerView.delegate = self;
bannerView.revenueDelegate = self;
[bannerView setLoadExtraParameter:@{
@"userData": @"test_userData"
}];
[bannerView setExtraParameter:@{
@"test_extra_key": @"test_extra_value"
}];
[bannerView loadAd];
self.bannerView = bannerView;
}
- (void)didLoadAd:(MCAdInfo *)ad {
// 获取自定义参数
NSString *originDataJsonString = ad.originData;
}