中文
登录
后可查看全部文档
开发测试/iOS集成文档/开屏广告
开屏广告
最近更新 2026-03-18 17:34:11

一、简介

开屏广告为用户进入App时展示的全屏广告,开屏广告返回为一个视图View,开屏广告使用BUSplashAd对象管理开屏广告所有业务;接入方式上,使用BUSplashAd对象调用loadAdData方法请求广告,调用show方法展示广告,通过设置BUSplashAdDelegate代理,获取广告加载、 渲染、点击、关闭、跳转等回调。

注意事项:

  1. 开屏内部相关的视图生命周期由SDK管理,开发者关注BUSplashAd对象。当BUSplashAd被非法释放时,开屏内部视图会被同时移除释放。
  2. 在loadSuccess回调中调用show方法展示广告,该方法不是线程安全的,请尽量在主线程调用。开屏视图关闭后,splashView即被释放(nil)。
  3. rootViewController建议使用应用当前window对象的rootViewController(keyWindow.rootViewController)或者当前视图控制器的根控制器navigationController(viewController.navigationController)。如果使用新创建的viewController,注意在开屏广告视图控制器关闭回调splashAdViewControllerDidClose移除

二、请求及展示广告

构建广告对象时必须传入代码位ID,广告物料、素材加载成功后会回调splashAdLoadSuccess方法,在该方法中调用show展示广告;

1. 使用示例

复制

1.1 接入方式一(强烈推荐)

使用App主window对象的根视图控制器展示,不需要管理开屏控制器展示,6900及以上版本点击广告SDK将不再主动移除视图,开发者可以根据业务场景自行处理点击跳过按钮倒计时结束时仍由SDK进行移除。

展示广告

复制

移除广告

开发者根据业务场景需要,使用[splashAd removeSplashView]方式移除广告视图

1.2接入方式二(不推荐)

开发者如果使用新创建的视图控制器接入,需要自行管理viewController的展示和关闭,同时需要处理广告点击时的视图移除逻辑,点击跳过按钮倒计时结束仍由SDK进行移除。

展示广告

复制

移除广告

开发者可在开屏相关代理回调中关闭当前视图控制器,示例代码如下:

复制

2. 接口说明

  • BUSplashAd

方法

说明

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

构建广告请求,
slotID:代码位ID
adSize:广告尺寸

- (void)loadAdData;

加载广告

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

展示开屏视图

- (void)removeSplashView;

移除开屏视图

tolerateTimeout

广告加载超时时间

  • BUSplashAdDelegate

方法

说明

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

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

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

物料加载失败,不会展示开屏,提供如下错误码:
typedef NS_ENUM(NSInteger, BUSplashAdLoadError) {BUSplashAdLoadError_UnKnow= 0, //未知错误
BUSplashAdLoadError_DataError = 1, // 数据加载失败BUSplashAdLoadError_TimeOut = 2, // 超时};

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

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

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

load方法调用后,若渲染失败则返回该回调;即使调用show方法开屏视图也不会被添加到ViewController上,提供如下错误码:
typedef NS_ENUM(NSInteger, BUSplashAdErrorCode) { CSJSplashAdError_Unknow = 0,
CSJSplashAdError_LoadFailed = 1, // 物料加载失败 CSJSplashAdError_ResourceFailed = 2, // 素材加载失败 CSJSplashAdError_RenderFailed = 3, // 渲染失败
CSJSplashAdError_TimeOut = 23 // 超时 };

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

广告即将展示

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

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

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

广告视图会在以下场景关闭:1、开屏未转化关闭(点击跳过、倒计时结束),通知开发者开屏视图已经关闭;2、 开屏转化后内开调起市场页,市场页关闭时通知开发者开屏视图已经关闭;3、开屏转化其他场景,点击广告后通知开发者开屏视图已经关闭

其他说明:1、广告视图关闭后由SDK移除开屏视图;2、closeType标记从哪种场景关闭
typedef NS_ENUM(NSInteger, BUSplashAdCloseType) {
BUSplashAdCloseType_Unknow = 0, // 未知
BUSplashAdCloseType_ClickSkip = 1, // 点击跳过BUSplashAdLoadError_CountdownToZero = 2 , // 倒计时结束BUSplashAdCloseType_ClickJump = 3 // 点击跳转
};

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

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

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

广告点击

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

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

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

视频广告播放完毕

三、其他配置

1. 请求超时时长设置

超时的计算逻辑:穿山甲从开发者加载广告开始倒计时(注意并非从SDK初始化开始计时),若广告在倒计时结束之前完成广告加载,则会为开发者响应广告。若倒计时结束前未完成广告加载,则将响应超时。

复制

2. 自定义底部logo

开发者可添加开屏底部View,用于logo等个性化展示,这种场景请求时传入的高度应减去底部view的高度;

复制

四、资源

完整代码可参考官方demo中BUDSplashViewController 类


本篇目录
联系我们