模板信息流

模板信息流

  • 类型说明:本SDK为接入方提供竖版信息流广告,它支持图文和视频样式,允许开发者直接调用相关接口获取广告view进行展示,而无需自行编辑和渲染广告样式。

SYNativeExpressFeedAdManager,SYNativeExpressFeedAd说明

@interface SYNativeExpressFeedAdManager : SYAd

@property(nonatomic, weak) id<SYNativeExpressFeedAdManagerDelegate> delegate;

/**  期望素材大小,具体的大小以联盟返回素材为准 */
@property (nonatomic) CGSize adSize;

/*
 *required.[必选]
 * 详解:开发者需传入用来弹出目标页的ViewController,一般为当前ViewController
 */
@property (nonatomic, weak) UIViewController *rootViewController;

@property (nonatomic, strong) NSArray<SYNativeExpressFeedAd *> *data;

///视频静音, 默认:NO
@property (nonatomic) BOOL mutedIfCan;

-(instancetype)initWithPlacementId:(NSString *)placementId size:(CGSize)size;

/**
 * 加载广告,建议最大个数不超过5个
 */
-(void)loadAdDataWithCount:(NSInteger)count;

@end



//SYNativeExpressFeedAd
@interface SYNativeExpressFeedAd : NSObject

@property (nonatomic,strong,readonly) UIView *feedView;

/**
 * Whether render is ready
 */
@property (nonatomic, assign,readonly) BOOL isReady;

@property(nonatomic,weak) id<SYNativeExpressFeedAdDelegate> delegate;

/*
 *required.[必选]
 * 详解:开发者需传入用来弹出目标页的ViewController,一般为当前ViewController
 */
@property (nonatomic, weak) UIViewController *rootViewController;

/*
 *required [必选]
 *原生模板广告渲染
 */
- (void)render;

@end

SYNativeExpressFeedAdManagerDelegate SYNativeExpressFeedAdDelegate回调说明

@protocol SYNativeExpressFeedAdManagerDelegate <NSObject>
@optional
//数据加载成功
- (void)sy_nativeExpressFeedAdManagerSuccessToLoad:(SYNativeExpressFeedAdManager *)adsManager nativeAds:(NSArray<SYNativeExpressFeedAd *> *_Nullable)feedAdDataArray;
//数据加载失败
- (void)sy_nativeExpressFeedAdManager:(SYNativeExpressFeedAdManager *)adsManager didFailWithError:(NSError *_Nullable)error;

@end

@protocol SYNativeExpressFeedAdDelegate <NSObject>
@optional
//SYNativeExpressFeedAd
/**
 * 广告渲染成功
 */
- (void)sy_nativeExpressFeedAdRenderSuccess:(SYNativeExpressFeedAd *)feedAd;
/**
 * 广告渲染失败
 */
- (void)sy_nativeExpressFeedAdRenderFail:(SYNativeExpressFeedAd *)feedAd;

/**
 *广告即将展示
 */
- (void)sy_nativeExpressFeedAdViewWillShow:(SYNativeExpressFeedAd *)feedAd;
/**
 *广告点击
 */
- (void)sy_nativeExpressFeedAdDidClick:(SYNativeExpressFeedAd *)feedAd;
/**
 *不喜欢该广告
 */
- (void)sy_nativeExpressFeedAdDislike:(SYNativeExpressFeedAd *)feedAd;
/**
 *展示落地页
 */
- (void)sy_nativeExpressFeedAdDidShowOtherController:(SYNativeExpressFeedAd *)nativeAd;
/**
 *关闭落地页
 */
- (void)sy_nativeExpressFeedAdDidCloseOtherController:(SYNativeExpressFeedAd *)nativeAd;
@end

加载模板信息流广告

if (!_feedAd) {
    _feedAd = [[SYNativeExpressFeedAdManager alloc] initWithPlacementId:@"K4000000007" size:CGSizeMake(self.tableView.frame.size.width, 0)];
  }
_feedAd.delegate = self;
_feedAd.mutedIfCan = YES;
_feedAd.rootViewController = self;
[_feedAd loadAdDataWithCount:3];

//数据加载成功
-(void)sy_nativeExpressFeedAdManagerSuccessToLoad:(SYNativeExpressFeedAdManager *)adsManager nativeAds:(NSArray<SYNativeExpressFeedAd *> *)feedAdDataArray{
  //不要保存太多广告,需要在合适的时机手动释放不用的,否则内存会过大
  if (self.adArray.count > 0) {
    for (SYNativeExpressFeedAd *feedAd in self.adArray) {
      [self.dataArray removeObject:feedAd];
    }
  }
  for (int i = 0; i<feedAdDataArray.count; i++) {
    SYNativeExpressFeedAd *feedAd = feedAdDataArray[i];
    feedAd.rootViewController = self;
    feedAd.delegate = self;
    [feedAd render];    
    NSInteger index = i*3;
    if (index >= self.dataArray.count) {
      [self.dataArray addObject:feedAd];
    }else{
      [self.dataArray insertObject:feedAd atIndex:index];
    }
  }
  self.adArray = feedAdDataArray;
//  [self.tableView reloadData];
}

/**
 * 广告渲染成功
 */
- (void)sy_nativeExpressFeedAdRenderSuccess:(SYNativeExpressFeedAd *)feedAd{
    [self.tableView reloadData];
}

TIP

加载广告具体示例详见Demo中的SYNativeExpressAdsViewController。