
开屏广告主要是 APP 启动时展示的全屏广告视图,开发只要按照接入标准就能够展示设计好的视图。展示完毕后自动关闭并进入应用的主界面。
开屏广告使用BUSplashAd对象管理开屏广告所有业务;接入方式上,使用BUSplashAd对象调用loadAdData方法请求广告,调用show方法展示广告,通过设置BUSplashAdDelegate代理,获取广告加载、 渲染、点击、关闭、跳转等回调。
广告对象创建时必须传入代码位ID:
广告物料、素材加载成功后,会回调splashAdLoadSuccess:方法,在这里调用show方法展示广告:
接入方式一(强烈推荐):
使用App主window对象的根视图控制器展示,不需要管理开屏控制器展示,但6900及以上版本点击广告,SDK将不再主动移除视图,开发者可以根据业务场景自行处理,点击跳过按钮或倒计时结束时仍由SDK进行移除。
示例代码(完整代码可参考官方demo中BUDSplashViewController 类)
展示广告
移除广告
开发者根据业务场景需要,使用[splashAd removeSplashView]方式移除广告视图
接入方式二(不推荐):
开发者如果使用新创建的视图控制器接入,需要自行管理viewController的展示和关闭,同时需要处理广告点击时的视图移除逻辑,点击跳过按钮或倒计时结束仍由SDK进行移除。
示例代码(完整代码可参考官方demo中BUDSplashViewController 类)
展示广告
移除广告
开发者可在开屏相关代理回调中关闭当前视图控制器,示例代码如下:
超时的计算逻辑:穿山甲从开发者加载广告开始倒计时(注意并非从SDK初始化开始计时),若广告在倒计时结束之前完成广告加载,则会为开发者响应广告。若倒计时结束前未完成广告加载,则将响应超时。建议开发者:
开发者可自定义开屏底部View,用于logo展示等个性化设置。
时机 | 方法 | 说明 |
广告物料、素材加载成功 | - (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标记从哪种场景关闭 复制 |
广告视图控制器关闭 | - (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、自渲染&模板渲染 rit位:新版本不区分渲染方式的rit位
2、开屏内部相关的视图生命周期由SDK管理,开发者关注BUSplashAd对象。当BUSplashAd被非法释放时,开屏内部视图会被同时移除释放。
3、接入开屏的最佳实践,在loadSuccess回调中调用show方法展示广告。
4、开屏视图关闭后,splashView即被释放(nil),如在开屏结束后依赖开屏视图做动画,可以使用splashViewSnapshot对象。
5、rootViewController建议使用应用当前window对象的rootViewController(keyWindow.rootViewController)或者当前视图控制器的根控制器navigationController(viewController.navigationController)。如果使用新创建的viewController,注意在开屏广告视图控制器关闭回调中splashAdViewControllerDidClose:从当前控制器堆栈中移除viewController:
6、loadAdData方法不是线程安全的,请尽量在主线程调用。
在线客服智能客服 7*24小时在线人工客服 工作日 10~12点/14~19点