优推 YT SDK 插屏广告

适用于本仓库 SDK 6.5.1。API 以所安装版本的 framework 公开头为准。

接入概览

插屏适合在业务自然停顿时展示。下例仅在 DidReady 后保存就绪状态,由业务在合适时机调用 showInterstitial;请求辅助函数 YTMakeRequestConfig 见隐私与请求配置,放在同一 .m 文件的 @implementation 之前。

#import <YTIFLYADLib/YTIFLYADLib.h>

@interface InterstitialViewController : UIViewController <YTIFLYInterstitialAdDelegate>
@property (nonatomic, strong) YTIFLYInterstitialAd *interstitialAd;
@end

@implementation InterstitialViewController

- (void)loadInterstitial {
    [self clearInterstitial];
    YTIFLYInterstitialAd *ad = [[YTIFLYInterstitialAd alloc] initWithAdUnitId:@"YOUR_INTERSTITIAL_AD_UNIT_ID"];
    ad.delegate = self;
    ad.currentViewController = self;
    self.interstitialAd = ad;
    [ad ytifly_loadAdWithRequestConfig:YTMakeRequestConfig()];
}

- (void)ytifly_interstitialAdDidReady:(YTIFLYInterstitialAd *)ad {
    if (ad != self.interstitialAd) return;
    // 素材就绪;由业务在适合的时机调用 showInterstitial。
}

- (void)showInterstitial {
    YTIFLYInterstitialAd *ad = self.interstitialAd;
    if (!ad || !self.view.window || self.presentedViewController ||
        UIApplication.sharedApplication.applicationState != UIApplicationStateActive ||
        self.isBeingPresented || self.isBeingDismissed || ![ad ytifly_isAdValid]) return;
    YTIFLYInterstitialAdConfig *config = [[YTIFLYInterstitialAdConfig alloc] init];
    config.presentationStyle = YTIFLYInterstitialPresentationStyleHalfScreen;
    config.muteOnStart = YES;
    config.muteButtonHidden = NO;
    [ad ytifly_showAdFromRootViewController:self config:config];
}

- (void)ytifly_interstitialAd:(YTIFLYInterstitialAd *)ad didFailWithError:(YTIFLYAdError *)error {
    if (ad != self.interstitialAd) return;
    NSLog(@"Interstitial failed: %d %@", error.errorCode, error.errorDescription);
}

- (void)clearInterstitial {
    self.interstitialAd.delegate = nil;
    [self.interstitialAd ytifly_destroy];
    self.interstitialAd = nil;
}

- (void)dealloc {
    [self clearInterstitial];
}

@end

presentationStyle 可选择 YTIFLYInterstitialPresentationStyleHalfScreen(默认半屏)或 YTIFLYInterstitialPresentationStyleFullScreen(全屏)。图片或视频由返回素材决定,与半屏/全屏选择独立。

等待上一广告关闭和页面转场完成后再展示下一条。展示、关闭或销毁后的实例不再复用;下一次请求创建新实例。不要在插屏覆盖宿主导致的每一次 viewDidDisappear: 中无条件销毁,否则会提前结束广告。

页面状态与主线程要求见生命周期与排错。