Draw视频流广告
概述
YTDrawVideoAdManager 属性及方法介绍
| 属性 | 说明 | 是否必填 |
|---|
| | |
| adSize | 广告尺寸 | |
| delegate | | |
| enableShake | 是否允许摇一摇广告,默认YES | 可选 |
| 方法 | 说明 |
|---|
| - (instancetype)initWithSlotId:(NSString *)slotId | 构造方法,slotId不能为空 |
| - (void)loadAd | 加载广告 |
YTDrawVideoAdManagerDelegate 代理方法介绍
@protocol YTDrawVideoAdManagerDelegate <NSObject>
@optional
- (void)yt_drawVideoAdManager:(YTDrawVideoAdManager *) manager loadSuccess:(YTDrawVideoView *)drawVideoView;
- (void)yt_drawVideoAdManager:(YTDrawVideoAdManager *)drawVideoView didFailWithError:(NSError * _Nullable)error;
@end
YTDrawVideoView 属性及方法
| 属性 | 说明 | 是否必填 |
|---|
| delegate | | 必填 |
| viewController | 所在的viewController,用于点击事件的跳转等,弱引用 | 必填 |
| videoMuted | 广告中的视频是否静音,默认静音 | 可选 |
| adInfo | 获取广告素材基本信息 | 只读 |
| 方法 | 声明 |
|---|
| - (BOOL) isReady; | |
| - (void) render; | |
| - (void)destroyDrawVideoView; | 销毁广告 |
YTNativeExpressAdDelegate 方法介绍
@protocol YTDrawVideoAdViewDelegate <NSObject>
@optional
- (void)yt_drawVideoAdRenderSuccess:(YTDrawVideoView *)adView;
- (void)yt_drawVideoRenderAdView:(YTDrawVideoView *)adView didFailWithError:(NSError *_Nullable)error;
- (void)yt_drawVideoAdView:(YTDrawVideoView *)adView playerFailWithError:(NSError *_Nullable)error;
- (void)yt_drawVideoAdViewWillShow:(YTDrawVideoView *)adView;
- (void)yt_drawVideoAdViewDidClose:(YTDrawVideoView *)adView;
- (void)yt_drawVideoAdViewDidExposed:(YTDrawVideoView *)adView;
- (void)yt_drawVideoViewDidClick:(YTDrawVideoView *)drawVideoView;
- (void)yt_drawVideoAdView:(YTDrawVideoView *)adView playerControlStatusDidChange:(YTPlayerControlStatus)playerControlStatus;
- (void)yt_drawVideoAdViewDidShowOtherController:(YTDrawVideoView *)adView;
- (void)yt_drawVideoAdViewDidCloseOtherController:(YTDrawVideoView *)adView;
@end
接入示例
@interface YTDrawVideoViewController ()<UITableViewDelegate, UITableViewDataSource, YTDrawVideoAdManagerDelegate,YTDrawVideoAdViewDelegate>
@property (nonatomic, strong) YTDrawVideoAdManager *adManager;
@property (nonatomic, strong) YTDrawVideoView* adView;
@property (nonatomic, strong) UITableView *tableView;
- (void)loadAd:(NSString*)slotId {
_adManager = [[YTDrawVideoAdManager alloc] initWithSlotId:slotId];
_adManager.adSize = _adSize;
_adManager.delegate = self;
_adManager.enableShake = _enableShakeSwitch.on;
_adManager.videoMuted = NO;
[_adManager loadAd];
}
- (void)drawVideoViewRender:(YTDrawVideoView*)drawVideoView {
if ([drawVideoView isReady]) {
drawVideoView.delegate = self;
drawVideoView.viewController = self;
drawVideoView.videoMuted = self.enableMuteSwitch.isOn;
[drawVideoView render];
}
}
#pragma mark - YTDrawVideoAdManagerDelegate
- (void)yt_drawVideoAdManager:(YTDrawVideoAdManager *) manager loadSuccess:(YTDrawVideoView*)drawVideoView {
self.adView = drawVideoView;
YTPageItem *adItem = [YTPageItem new];
adItem.type = YTPageItemTypeAd;
adItem.color = UIColor.clearColor;
adItem.drawView = drawVideoView;
[self.items addObject:adItem];
}
- (void)yt_drawVideoAdManager:(YTDrawVideoView *)adView didFailWithError:(NSError *_Nullable)error {
}
#pragma mark - YTDrawVideoAdViewDelegate
- (void)yt_drawVideoAdRenderSuccess:(YTDrawVideoView *)adView {
}
- (void)yt_drawVideoRenderAdView:(YTDrawVideoView *)adView didFailWithError:(NSError *_Nullable)error {
}
- (void)yt_drawVideoAdViewWillShow:(YTDrawVideoView *)adView {
}
- (void)yt_drawVideoAdViewDidExposed:(YTDrawVideoView *)adView {
}
- (void)yt_drawVideoViewDidClick:(YTDrawVideoView *)drawVideoView {
}
- (void)yt_drawVideoAdViewDidShowOtherController:(YTDrawVideoView *)adView {
}
- (void)yt_drawVideoAdViewDidCloseOtherController:(YTDrawVideoView *)adView {
}
- (void)yt_drawVideoAdViewDidClose:(YTDrawVideoView *)adView {
[adView removeFromSuperview];
}
- (void)yt_drawVideoAdView:(YTDrawVideoView *)adView playerFailWithError:(NSError *_Nullable)error {
}
#pragma mark - YTNativeAdVideoPlayerViewDelegate
- (void)yt_drawVideoAdView:(YTDrawVideoView *)adView playerControlStatusDidChange:(YTPlayerControlStatus)playerControlStatus {
NSString *playStatus = @"";
switch (playerControlStatus) {
case YTPlayerControlStatusReady:
playStatus = @"播放准备就绪";
break;
case YTPlayerControlStatusPlaying:
playStatus = @"正在播放";
break;
case YTPlayerControlStatusPaused:
playStatus = @"暂停";
break;
case YTPlayerControlStatusFinish:
playStatus = @"完毕";
break;
default:
playStatus = @"unknown";
break;
}
}
#pragma mark - UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return self.items.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
YTPageItem *item = self.items[indexPath.row];
YTDrawTableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:@"YTDrawTableViewCell"
forIndexPath:indexPath];
cell.contentView.backgroundColor = item.color;
return cell;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
YTPageItem *item = self.items[indexPath.row];
YTDrawTableViewCell *pcell = (YTDrawTableViewCell*)cell;
if (item.type == YTPageItemTypeAd) {
[pcell attachAdView:item.drawView];
} else {
[pcell detachAdView];
}
}
#pragma mark - UITableViewDelegate
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return tableView.bounds.size.height;
}
@end