中文
登录
后可查看全部文档
GroMore/开发测试/GroMore iOS集成文档/GroMore iOS SDK接入文档/信息流广告
信息流广告
最近更新 2026-04-27 10:26:13

信息流广告分为自渲染广告和模板广告,但是模板广告只有当三方SDK支持时才会返回模板广告。SDK 提供信息流广告的数据绑定、点击事件的上报。

  • 自渲染广告:聚合SDK返回物料,由开发者在返回的BUMCanvasView类型的canvasView上进行子视图的自行渲染和展示。
  • 模板广告:聚合SDK直接返回渲染好的广告BUMCanvasView,开发者直接展示即可。
  • 从CSJ切换使用聚合维度广告时,需调整自渲染布局(BUMCanvasView类型的canvasView)逻辑,详见demo中聚合自渲染处理样例。

注意事项

  • 需要确保在SDK初始化成功后再进行广告请求,否则可能导致广告请求加载失败。
  • 聚合SDK是通过广告位ID(一个广告位下包含多个代码位)发起广告请求的,切记不要使用混淆。
  • 在广告接入前需要明确各ADN对应聚合广告样式情况,以确保正确完成广告接入,避免由于广告类型不匹配导致接入报错等情况的发生。
  • 广告加载数量以平台配置数量为准,本地数量仅在平台配置为0时有效,目前本地配置支持的广告数量为 1 ~ 3。
  • 由于各广告平台对于包名校验规则不同,需确保在穿山甲媒体平台填写的包名符合各adn平台规范,避免由于包名校验不匹配导致的无广告返回情况的产生。
  • 视频播放是否静音通过设置mutedIfCan接口即可,默认为NO,支持的ADN有admob/baidu/GDT/Mintergral/Sigmob;如若设置首次预加载功能,请检查静音接口设置是否与项目实际情况相符,默认为NO。
  • 一定要设置rootViewController,即跳转落地页需要的viewController。
  • 在物料加载成功方法里获取相关广告信息赋值后,需调用 registerContainer:withClickableViews:clickableViews注册绑定点击的View并刷新数据源refreshData:。
  • 每次获取物料信息后需要刷新调用refreshData:方法

一、创建广告对象及请求

支持一键复制实现融合基础功能实现,工具地址

详细示例请参见Demo中BUMDFeedViewController类

1. 使用示例

复制

2. 接口说明

  • BUNativeAdsManager说明

只需要使用 BUNativeAdsManager 就可以获取信息流广告。BUNativeAdsManager支持多广告加载,可以一次加载返回多个广告,并且聚合维度支持模版渲染和自渲染混出。

方法

说明

@property (nonatomic, strong, nullable) BUAdSlot *adslot;

广告配置对象

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


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

信息流广告协议,聚合维度使用BUMNativeAdsManagerDelegate

@property (nonatomic, weak, nullable) id<BUNativeExpressAdViewDelegate> nativeExpressAdViewDelegate;

信息流广告视图协议

@property (nonatomic, assign, readwrite) CGSize adSize;

广告尺寸设置

- (void)loadAdDataWithCount:(NSInteger)count;

广告请求数量

@property (nonatomic, strong, nullable, readonly) BUNativeAdsManagerMediation *mediation;

当使用聚合广告位时,存在该属性,可获取聚合维度相关功能

二、广告展示及行为监听

1. 使用示例

复制

2. 接口说明

  • BUNativeAdsManagerMediationProtocol说明

方法

说明

@property (nonatomic, weak) UIViewController *rootViewController;

必要,设置广告详情跳转控制器

- (void)destory;

不再使用加载成功后回调的视图对象组时,可调用该方法释放占用的内存

@property (nonatomic, assign, readonly) BOOL isLoading;

广告是否加载中

- (void)addParam:(id)param withKey:(NSString *)key;

添加参数param 参数值key 参数key

- (NSArray<BUMAdLoadInfo *> *)getAdLoadInfoList;

一次waterfall中各adn代码位加载广告失败原因,建议调用时机:展示广告时/超时时/全部返回报错时;返回nil表示一次加载无代码位加载失败或其加载无响应

  • BUNativeAdsManagerDelegate说明

方法

说明

- (void)nativeAdsManagerSuccessToLoad:(BUNativeAdsManager *)adsManager nativeAds:(NSArray<BUNativeAd *> *_Nullable)nativeAdDataArray;

加载成功回调

- (void)nativeAdsManager:(BUNativeAdsManager *)adsManager didFailWithError:(NSError *_Nullable)error;

加载失败回调

  • BUNativeAd说明

将BUMCanvasView添加到父视图上进行展示。目前仅支持frame布局方式,不支持自动布局。

方法

说明

@property (nonatomic, strong, readwrite, nullable) BUAdSlot *adslot;

广告配置对象

@property (atomic, strong, readonly, nullable) BUMaterialMeta *data;

广告物料

@property (nonatomic, weak, readwrite, nullable) id<BUNativeAdDelegate> delegate;

BUNativeAdDelegate,聚合维度使用BUMNativeAdDelegate

@property (nonatomic, weak, readwrite) UIViewController *rootViewController;

必要根视图控制器

- (void)registerContainer:(__kindof UIView *)containerViewwithClickableViews:(NSArray<__kindof UIView *> *_Nullable)clickableViews;

注册可点击视图 containerView:必要,原生广告的容器视图。clickableViews:可选,可点击的视图数组。

- (void)unregisterView;

取消注册聚合维度不支持此场景

- (void)loadAdData;

加载广告

- (NSString *)getAdCreativeToken;

物料ID聚合维度不支持

@property (nonatomic, strong, nullable, readonly) BUNativeAdMediation *mediation;

当使用聚合广告位时,存在该属性,可获取聚合维度相关功能

  • BUNativeAdMediationProtocol说明

方法

说明

@property (nonatomic, assign, readonly) BOOL isExpressAd;

是否是模板广告,由adapter开发者实现

@property (nonatomic, strong, readonly, nonnull)BUMCanvasView *canvasView;

如果是模板广告可直接将该视图添加到需要展示的位置,如果是非模板广告可对该视图内部控件进行布局操作

@property (nonatomic, strong, readonly) BUMVideoAdReporter *videoAdReporter;

自渲染视频类广告事件上报对象,仅采用自定义视频播放器时需要上报,部分ADN需申请白名单

- (void)render;

必要渲染模板广告,开发者调用前无需区分是否为模板广告,GroMore会自行处理

- (void)reSizeMediaView;

更新模板媒体视图大小

@property (nonatomic, assign, readonly) BOOL isReady;

是否已经准备广告展示,理论上在广告加载回调后即为YES,但受一些因素的影响(例如广告失效),可能为NO。建议在广告展示前调用该方法进行是否可以展示

- (nullable BUMRitInfo *)getShowEcpmInfo;

返回显示广告对应的披露信息

- (BUDictionary *_Nullable)extraData;

广告的扩展信息,可能为nil

@property (nonatomic, copy, readonly) NSString *adViewID;

广告视图的唯一标识

  • BUMaterialMeta说明

自渲染广告物料信息

方法

说明

@property (nonatomic, assign) BUInteractionType interactionType;

广告支持的交互类型

@property (nonatomic, strong) NSArray<BUImage *> *imageAry;

图片

@property (nonatomic, strong) BUImage *icon;

广告logo

@property (nonatomic, copy) NSString *AdTitle;

广告标题

@property (nonatomic, copy) NSString *AdDescription;

广告描述

@property (nonatomic, copy) NSString *source;

广告源

@property (nonatomic, copy) NSString *buttonText;

创意按钮文本

@property (nonatomic, assign) BUFeedADMode imageMode;

广告样式

@property (nonatomic, assign) NSInteger score;

评分

@property (nonatomic, assign) NSInteger commentNum;

评论数

@property (nonatomic, assign) NSInteger appSize;

app大小

@property (nonatomic, assign) NSInteger videoDuration;

视频时长

@property (nonatomic, copy, readonly) NSString *videoUrl;

视频url

@property (nonatomic, assign, readonly) BOOL allowCustomVideoPlayer;

自定义播放器

@property (nonatomic, assign, readonly) NSInteger videoResolutionWidth;

视频分辨率宽度聚合维度不支持此场景

@property (nonatomic, assign, readonly) NSInteger videoResolutionHeight;

视频分辨率高度聚合维度不支持此场景

@property (nonatomic, copy) NSArray<BUDislikeWords *> *filterWords;

dislike原因

@property (nonatomic, strong) BUPersonalizationPrompts *personalPrompts DEPRECATED_MSG_ATTRIBUTE("The 'personalPrompts' api will not work and will be removed in the future.");

个性化广告聚合维度不支持此场景

@property (nonatomic, copy) NSDictionary *mediaExt;

配置参数

@property (nonatomic, copy) NSString *ADXName;

adx名称

@property (nonatomic, strong) BUAdGroupInfo *groupInfo;

聚合维度不支持此场景

- (instancetype)initWithDictionary:(NSDictionary *)dict error:(NSError * __autoreleasing *)error;

聚合维度不支持此场景

@property (nonatomic, strong, nullable, readonly) BUMaterialMetaMediation *mediation;

使用聚合广告位时,存在该属性,可获取聚合维度相关功能

  • BUMaterialMetaMediationProtocol说明

方法

说明

@property (nonatomic, strong, readonly, nullable) BUImage *adLogo;

广告adn的logo,如果logo有宽高,请尽量配置width和height

@property (nonatomic, assign, readonly) CGFloat videoAspectRatio;

视频纵横比(width/height),如果没有值或者异常返回0

@property (nonatomic, strong, readonly, nullable) NSString *appPrice;

app购买价格,例如'免费',没有则为nil

@property (nonatomic, copy, readonly, nullable) NSString *advertiser;

广告商标识,广告商的名称或者链接

@property (copy, nonatomic, readonly, nullable) NSString *brandName;

品牌名称,若广告返回中无品牌名称则为空

  • BUMCanvasView说明

控件信息

方法

说明

@property (nonatomic, strong, readonly, nullable) BUMaterialMeta *data;

非模板Native广告的物料数据,模板广告时为nil

@property (nonatomic, assign, readonly) BOOL hasSupportActionBtn;

是否支持自定义事件按钮,如果为YES,开发者可以配置 callToActionBtn 的UI数值,默认为YES

@property (nonatomic, strong, readonly, nonnull) UILabel *titleLabel;

广告标题,需要开发者根据广告物料自己指定展示内容

@property (nonatomic, strong, readonly, nonnull) UILabel *descLabel;

广告描述,需要开发者根据广告物料自己指定展示内容

@property (nonatomic, strong, nullable) UIImageView *iconImageView;

广告图标,可能不存在,需要开发者根据广告物料自己指定展示内容

@property (nonatomic, strong, readonly, nonnull) UIImageView *imageView;

广告大图,需要开发者根据广告物料自己指定展示内容,系统会自动创建,但内容需开发者自行校验

@property (nonatomic, strong, readonly, nonnull) UIButton *callToActionBtn;

广告详情/下载按钮,可能不存在,文案内容需要开发者根据广告物料自己获取

@property (nonatomic, strong, nullable) UIView *advertiserView;

广告商视图,可能不存在,开发者可自行赋值处理

@property (nonatomic, strong, nullable) UIButton *dislikeBtn;

广告关闭按钮,可能不存在,开发者需自行处理响应事件

@property (nonatomic, strong, nullable) UIView *adLogoView;

广告LOGO视图,可能不存在,需要开发者根据广告物料自己指定展示内容

@property (nonatomic, strong, readonly, nullable) UIView *mediaView;

媒体视图,即视频广告的视频图层,非视频广告不存在该视图

- (void)registerClickableViews:(nullable NSArray<UIView *> *)views;

注册可点击区域,由GroMore透传数据,是否生效由adapter 和 adn 决定 views 可响应点击操作的视图

  • BUNativeAdDelegate说明

方法

说明

- (void)nativeAdDidLoad:(BUNativeAd *)nativeAd;

广告加载成功聚合维度不支持此场景

- (void)nativeAdDidLoad:(BUNativeAd *)nativeAd view:(UIView *_Nullable)view;

广告加载成功聚合维度不支持此场景

- (void)nativeAd:(BUNativeAd *)nativeAd didFailWithError:(NSError *_Nullable)error;

广告加载失败

- (void)nativeAdDidBecomeVisible:(BUNativeAd *)nativeAd;

广告展示

- (void)nativeAdDidCloseOtherController:(BUNativeAd *)nativeAd interactionType:(BUInteractionType)interactionType;

此方法在另一个控制器关闭时调用。interactionType:在app中打开appstore或打开网页或查看视频广告详情页面。

- (void)nativeAdDidClick:(BUNativeAd *)nativeAd withView:(UIView *_Nullable)view;

广告点击

- (void)nativeAd:(BUNativeAd *_Nullable)nativeAd dislikeWithReason:(NSArray<BUDislikeWords *> *_Nullable)filterWords;

dislike原因

- (void)nativeAd:(BUNativeAd *_Nullable)nativeAd adContainerViewDidRemoved:(UIView *)adContainerView;

删除广告视图容器nativeAd:广告材料adContainerView:广告视图容器聚合维度不支持场景。

- (void)nativeAdWillPresentFullScreenModal:(BUNativeAd *_Nonnull)nativeAd;

广告即将展示全屏页面/商店时触发nativeAd 广告视图

  • BUMNativeAdDelegate说明

方法

说明

- (void)nativeAdWillPresentFullScreenModal:(BUNativeAd *_Nonnull)nativeAd;

广告即将展示全屏页面/商店时触发

- (void)nativeAdExpressViewRenderSuccess:(BUNativeAd *_Nonnull)nativeAd;

聚合维度混出模板广告时渲染成功回调,可能不会回调

- (void)nativeAdExpressViewRenderFail:(BUNativeAd *_Nonnull)nativeAd error:(NSError *_Nullable)error;

聚合维度混出模板广告时渲染失败回调,可能不会回调

- (void)nativeAdVideo:(BUNativeAd *_Nullable)nativeAd stateDidChanged:(BUPlayerPlayState)playerState;

当视频播放状态改变之后触发

- (void)nativeAdVideoDidClick:(BUNativeAd *_Nullable)nativeAd;

广告视图中视频视图被点击时触发

- (void)nativeAdVideoDidPlayFinish:(BUNativeAd *_Nullable)nativeAd;

广告视图中视频播放完成时触发

- (void)nativeAdShakeViewDidDismiss:(BUNativeAd *_Nullable)nativeAd;

广告摇一摇提示view消除时调用该方法

- (void)nativeAdVideo:(BUNativeAd *_Nullable)nativeAdView rewardDidCountDown:(NSInteger)countDown;

激励信息流视频进入倒计时状态时调用

三、获取竞价结果

注意事项:

  1. 获取时机:仅支持 show 后获取展示的ADN名称、代码位、ECPM;
  2. ECPM=0:通过getEcpm获取的单位是分,若ecpm为0可以确认 ① 获取时机:是否在展示之后获取;②兜底代码位:若本次展示的是兜底代码位,则getEcpm是0;
  3. 回传竞价结果:设置为adslot.mediation.bidNotify = YES后可触发didReceiveBidResult,开发者可在该方法中获取竞价结果、价格等信息。
复制

四、完整接入示例

复制

详细示例请参见Demo中BUMDFeedViewController类


本篇目录
联系我们