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

开屏广告主要是 APP 启动时展示的全屏广告视图,开发者只要按照接入标准就能够展示设计好的视图。

注意事项:

  • 广告请求:
    • 需要确保在SDK初始化成功后再进行广告请求,否则可能导致广告请求加载失败。
    • 聚合SDK是通过广告位ID(一个广告位下包含多个代码位)发起广告请求的,切记不要使用混淆。
    • 在广告接入前需要明确各ADN对应GroMore广告样式情况,以确保正确完成广告接入,避免由于广告类型不匹配导致接入报错等情况的发生。
    • 由于各广告平台对于包名校验规则不同,需确保在穿山甲媒体平台填写的包名符合各ADN平台规范,避免由于包名校验不匹配导致的无广告返回情况的产生。
  • 广告展示:
    • 仅接入CSJ广告时,开屏是不区分渲染方式的rit位;融合场景下仅支持自渲染开屏。
    • 在loadSuccess回调中调用show方法展示广告。
    • rootViewController建议使用应用当前window对象的rootViewController(keyWindow.rootViewController)或者当前视图控制器的根控制器navigationController(viewController.navigationController)。如果使用新创建的viewController,注意在开屏广告视图控制器关闭回调中splashAdViewControllerDidClose:从当前控制器堆栈中移除viewController。
    • 开屏内部相关的视图生命周期由SDK管理,开发者关注BUSplashAd对象。当BUSplashAd被非法释放时,开屏内部视图会被同时移除释放。

一、创建广告对象及请求

1. 使用示例

详细接入可参照demo中的BUMDSplashViewController类。

复制

2. 接口说明

  • BUSplashAd说明

方法

说明

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

开屏广告协议,聚合维度使用BUMSplashAdDelegate

@property (nonatomic, assign) NSTimeInterval tolerateTimeout;

广告加载超时时间

@property (nonatomic, copy, readonly, nonnull) NSString *slotID;

slotID为广告位ID,聚合场景需传以1开头的广告位id,SDK内部会自行请求开发者在瀑布流下配置的代码位ID

@property (nonatomic, copy, readonly) BUDictionary *mediaExt;

拓展参数mediaExt

@property (nonatomic, weak, readonly, nullable) UIViewController *splashRootViewController;

开屏视图控制器

@property (nonatomic, strong, readonly, nullable) BUSplashView *splashView;

开屏视图

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

开屏最后一帧聚合维度不支持此接口

- (instancetype)initWithSlotID:(NSString *)slotID adSize:(CGSize)adSize;

初始化方法,聚合不支持此参数接口

- (instancetype)initWithSlot:(BUAdSlot *)slot adSize:(CGSize)adSize;

初始化方法

- (void)loadAdData;

加载广告

- (void)showSplashViewInRootViewController:(UIViewController *)viewController;

展示开屏视图

- (NSString *)getAdCreativeToken;


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

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

二、广告展示/监听

1. 使用示例

复制

2. 接口说明

  • BUSplashAdMediationProtocol说明

方法

说明

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

自定义底部视图,可以设置一些自定义元素,例如LOGO。如果不设置,广告将按照全屏展示。底部视图最大高度不能超过屏幕高度的25%,否则将按照约定最大高度适配

- (void)destoryAd;

销毁广告,建议在不需要展示广告时调用,如close时

@property (nonatomic, assign) BUMSplashButtonType splashButtonType;

默认为BUMSplashButtonTypeFullScreen只对百度生效

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

是否可展示广告,建议在展示广告前判断该字段

- (BUMRitInfo *)getShowEcpmInfo;

获取广告展示后相关信息

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

BURewardType

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

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

- (NSArray<BUMAdLoadInfo *> *)getAdLoadInfoList;

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

  • BUSplashAdDelegate说明(广告行为监听接口)

方法

说明

- (void)splashAdLoadSuccess:(BUSplashAd *)splashAd;

物料加载成功,可以在这个回调中调用show方法展示开屏

- (void)splashAdLoadFail:(BUSplashAd *)splashAd error:(BUAdError *_Nullable)error;

物料加载失败,不会展示开屏,提供如下错误码:typedef NS_ENUM(NSInteger, BUSplashAdErrorCode) { CSJSplashAdError_Unknow = 0, CSJSplashAdError_LoadFailed = 1, // 物料加载失败 CSJSplashAdError_ResourceFailed = 2, // 素材加载失败 CSJSplashAdError_RenderFailed = 3, // 渲染失败 CSJSplashAdError_TimeOut = 23 // 超时 };

- (void)splashAdRenderSuccess:(BUSplashAd *)splashAd;

load方法调用后,若渲染成功则返回该回调;show方法调用后开屏视图会被添加到ViewController上。

- (void)splashAdRenderFail:(BUSplashAd *)splashAd error:(BUAdError *_Nullable)error;

load方法调用后,若渲染失败则返回该回调;即使调用show方法开屏视图也不会被添加到ViewController上,提供如下错误码:typedef NS_ENUM(NSInteger, BUSplashAdLoadError) {BUSplashAdLoadError_UnKnow= 0, //未知错误BUSplashAdLoadError_TimeOut = 1, // 超时BUSplashAdLoadError_RenderFailed = 2 // 渲染失败};

- (void)splashAdWillShow:(BUSplashAd *)splashAd;

广告即将展示回调

- (void)splashAdDidShow:(BUSplashAd *)splashAd;

广告展示回调,注意:该回调时机和show埋点上报时机一致

- (void)splashAdDidClick:(BUSplashAd *)splashAd;

广告点击回调

- (void)splashAdDidClose:(BUSplashAd *)splashAd closeType:(BUSplashAdCloseType)closeType;

广告视图会在以下场景关闭:1、开屏未转化关闭(点击跳过、倒计时结束),通知开发者开屏视图已经关闭2、 开屏转化后内开调起市场页,市场页关闭时通知开发者开屏视图已经关闭3、开屏转化其他场景,点击广告后通知开发者开屏视图已经关闭其他说明:1、广告视图关闭后由SDK移除开屏视图2、closeType标记从哪种场景关闭,当前参数仅支持穿山甲,其他ADN获取不到时将返回unknow
BUSplashAdCloseType_Unknow = 0, // 未知br
BUSplashAdCloseType_ClickSkip = 1, // 点击跳过br BUSplashAdLoadError_CountdownToZero = 2 , // 倒计时结束br BUSplashAdCloseType_ClickJump = 3 // 点击跳转br

- (void)splashAdViewControllerDidClose:(BUSplashAd *)splashAd;

如果采用自定义视图控制器展示广告,广告视图控制器会在以下场景关闭:1、开屏未转化关闭(点击跳过、倒计时结束),通知开发者关闭视图控制器;2、开屏转化后内跳,中间页、市场页关闭时,通知开发者关闭视图控制器;3、开屏转化外跳,即将跳转时,通知开发者关闭视图控制器

- (void)splashDidCloseOtherController:(BUSplashAd *)splashAd interactionType:(BUInteractionType)interactionType;

广告中间页、市场页面关闭此回调在广告跳转到其他控制器时,该控制器被关闭时调用。interactionType:此参数可区分是打开的appstore/网页/视频广告详情页面

- (void)splashVideoAdDidPlayFinish:(BUSplashAd *)splashAd didFailWithError:(NSError *)error;

当视频广告播放完成或发生错误时调用此方法。

  • BUMSplashAdDelegate说明

方法

说明

- (void)splashAdDidShowFailed:(BUSplashAd *_Nonnull)splashAd error:(NSError *)error;

广告展示失败回调splashAd 广告管理对象error 展示失败原因

- (void)splashAdWillPresentFullScreenModal:(BUSplashAd *)splashAd;

广告即将展示广告详情页回调splashAd 广告管理对象

三、获取竞价结果

注意事项:

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

四、本地缓存配置说明

当遇到应用首次安装并且拉取配置失败时,客户端表现为请求失错误码40006,可使用此功能。可在平台提前下载瀑布流配置导入到工程中,在SDK初始化时传入下载的json文件。该功能适用于所有广告类型。

平台配置指引: 如下图所示,在应用详情页,下拉导出数据列表,点击“导出配置信息”,参考示例填写信息:MSDK版本号填写为融合SDK版本号、包名、穿山甲版本号填写为融合SDK版本号即可、其他ADN版本号后,即可完成配置信息导出。(聚合维度功能)

代码使用示例:

复制

五、完整接入示例

详细接入可参照demo中的BUMDSplashViewController类。

复制



本篇目录
联系我们