优推 YT SDK 开屏广告
适用于本仓库 SDK 6.5.1。API 以所安装版本的 framework 公开头为准。
页面需要强持有广告实例。完成隐私流程、页面已加入 window 且 App 处于前台后,在主线程调用 loadSplash。将下面的广告位占位符替换为平台分配的开屏广告位,并将隐私与请求配置中的 YTMakeRequestConfig 放在同一 .m 文件中。
#import <YTIFLYADLib/YTIFLYADLib.h>
@interface SplashViewController : UIViewController <YTIFLYSplashAdDelegate>
@property (nonatomic, strong) YTIFLYSplashAd *splashAd;
@end
@implementation SplashViewController
- (void)loadSplash {
[self clearSplash];
YTIFLYSplashAd *ad = [[YTIFLYSplashAd alloc] initWithAdUnitId:@"YOUR_SPLASH_AD_UNIT_ID"];
ad.delegate = self;
ad.currentViewController = self;
self.splashAd = ad;
[ad ytifly_loadAdWithRequestConfig:YTMakeRequestConfig()];
}
- (void)ytifly_splashAdDidReady:(YTIFLYSplashAd *)ad {
if (ad != self.splashAd || !self.view.window ||
UIApplication.sharedApplication.applicationState != UIApplicationStateActive ||
![ad ytifly_isAdValid]) return;
YTIFLYSplashAdConfig *config = [[YTIFLYSplashAdConfig alloc] init];
config.traceDuration = 5;
config.muteOnStart = YES;
[ad ytifly_showAdFromRootViewController:self config:config];
}
- (void)ytifly_splashAd:(YTIFLYSplashAd *)ad didFailWithError:(YTIFLYAdError *)error {
if (ad != self.splashAd) return;
NSLog(@"Splash failed: %d %@", error.errorCode, error.errorDescription);
// 结束本次开屏等待,让用户继续进入 App。
}
- (void)clearSplash {
self.splashAd.delegate = nil;
[self.splashAd ytifly_destroy];
self.splashAd = nil;
}
- (void)dealloc {
[self clearSplash];
}
@end这段示例在 DidReady 时尝试展示。若业务还未满足展示条件,应暂存实例,在条件满足后重新检查 ytifly_isAdValid 再展示;离开该广告流程时调用 clearSplash。不要在 viewDidAppear: 每次触发时无条件重复请求。
| 展示配置 | 行为 |
|---|---|
traceDuration | 倒计时 3~5 秒,默认 5 秒,越界值回退为 5 秒 |
mediumBottomView | 自定义底部品牌区,媒体设置视图及高度 |
customWindow | 可选;使用与当前展示页面相符的 window |
muteOnStart | 视频初始静音,默认 YES |
muteButtonHidden | 是否隐藏视频静音按钮,默认 NO |
headingInteractionEnabled | YES 表示将摇一摇改为扭一扭,不代表关闭交互 |
showNoAds | 是否显示“免除广告”按钮;点击后的业务处理由媒体实现 |
可左右滚动查看完整表格
开屏由 SDK 挂载到宿主 window,不需要媒体自己 presentViewController:。倒计时关闭使用 ytifly_splashAdDidClose:,点击跳过使用 ytifly_splashAdDidSkip:;视频播放完毕和点击跳转不等于倒计时关闭。启动流程应分别处理超时、失败、跳过与关闭,避免仅等待某一个回调而阻塞进入首页。
页面状态与主线程要求见生命周期与排错。