信息流广告

信息流广告适用于列表界面中,常用于TableView, ScrollView等,可以跟随界面拖动。常用的有100,300 两种高度,各平台返回的高度可能不一样,要根据返回的View的bounds来调整。

前提条件

  • 接入UNAD SDK

  • 初始化UNAD SDK

  • 在UNAD后台创建信息流广告

创建UNADFeedAd 加载广告

 self.feedAd = [[UNADFeedAd alloc]initWithUnitId:UNAD_TEST_UNIT_ID adSize:CGSizeMake(SC_Width, 100)];
self.feedAd.delegate = self;
self.feedAd.rootViewController = self;

//一次最多请求3个广告,可以在展示过后动态移除,不要申请太多的广告占用过多的资源。有的平台只能返回一个,要释放后再请求
[self.feedAd loadAd:3];

实现delegate方法,监听广告状态


#pragma mark - UNADFeedAdDelegate
/**
 * 拉取广告成功的回调,国外的平台在拉取成功后就会返回广告尺寸,国内广告要等渲染成功后
 */

- (void)feedAdSuccessToLoad:(UNADFeedAd *)feedAd views:(NSArray<__kindof UNADFeedAdView *> *)views
{

    if (views.count) {
        [views enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            UNADFeedAdView *feedAdView = (UNADFeedAdView *)obj;
            feedAdView.controller = self;
            [feedAdView render];
            [self.expressAdViews addObject:feedAdView];
        }];
    }
    [self.tableView reloadData];
}


//国内的广告在渲染成功后才会返回视图的大小,记得在这时候要调整和刷新界面。
- (void)feedAdViewRenderSuccess:(UNADFeedAdView *)feedAdView{
    [self.tableView reloadData];
}


- (void)feedAdViewRenderFail:(UNADFeedAdView *)feedAdView{
    //渲染失败的单元要移掉

    NSLog(@"%s",__FUNCTION__);
    [self.expressAdViews removeObject:feedAdView];
    [self.tableView reloadData];
}


//国内的广告可以点击关闭,这时候要动态移除。
- (void)feedAdViewClosed:(UNADFeedAdView *)feedAdView{
    NSLog(@"%s",__FUNCTION__);

    //[self.tableView reloadData];

    [self.expressAdViews removeObject:feedAdView];
    NSUInteger index = [self.expressAdViews indexOfObject:feedAdView];
    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:index inSection:0];
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}


#pragma mark - UITableViewDelegate
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //根据信息流view 的高度来调整界面
    if (indexPath.row % 2 == 0) {
        UIView *view = [self.expressAdViews objectAtIndex:indexPath.row / 2];
        return view.bounds.size.height;
    }
    else {
        return 100;
    }
}

results matching ""

    No results matching ""