Bidding Android iOS 快应用 SDK H5 SDK Media API 常见问题

开屏广告

开屏广告接入方式参考下方内容。

开屏广告

开屏广告简介

基本信息:开屏广告以App启动作为曝光时机,提供5s的可感知广告展示。用户可以点击广告跳转到目标页面;或者点击右上角的“跳过”按钮,跳转到app内容首页。

权限等级:开放

适用场景:开屏广告会在您的应用开启时加载,拥有固定展示时间(一般为5秒),展示完毕后自动关闭并进入您的应用主界面。
分类:开屏广告分为全屏和半屏,开屏全屏广告有更沉浸的广告播放体验,变现效果更佳。

全屏 半屏

接入注意事项

  1. 开屏全屏广告需使得显示区域其高度与设备高度一致,即为开屏全屏广告。开发者可通过以下接口配合使用提供媒体logo,用以随开屏广告展示。
     - (void)loadFullScreenAd;
     - (void)showFullScreenAdInWindow:(UIWindow *)window withLogoImage:(UIImage *)logoImage skipView:(UIView *)skipView;
    
  2. 开屏半屏广告的显示区域其高度一定要大于设备高度的75%(建议值大于80%),最小高度要大于400dp。横屏广告其高度要大于设备高度的93%(建议值大于95%),版本4.14.76开始支持横屏开屏广告,需特别注意横、竖开屏广告容器尺寸的要求差异,详情见demo示例。
  3. 开发者如果需要展示半开屏广告,即在开屏中保留部分区域显示其他信息,如 LOGO,可以参考 demo 设置其他单独的容器来展示该信息,但展示广告的容器请一定要满足注意事项3中描述的条件,否则影响曝光。
  4. 开屏广告接入 api 变化,原有方式将 SplashAD 的构造和广告的拉取展示耦合起来,新版 SDK 将广告的拉取和展示独立出来。因此需要开发者适配这一情况,调用 load 和 show 分别进行广告的拉取和展示。

主要API

生命周期事件回调

您可以实现全部或部分GDTSplashAdDelegate,以跟踪点击成功或者开屏广告请求失败等广告生命周期事件。

@protocol GDTSplashAdDelegate <NSObject>
@optional
- (void)splashAdDidLoad;
- (void)splashAdSuccessPresentScreen;
- (void)splashAdFailToPresent:error;
- (void)splashAdApplicationWillEnterBackground;
- (void)splashAdExposured;
- (void)splashAdClicked;
- (void)splashAdWillClosed;
- (void)splashAdClosed;
- (void)splashAdWillPresentFullScreenModal;
- (void)splashAdDidPresentFullScreenModal;
- (void)splashAdWillDismissFullScreenModal;
- (void)splashAdDidDismissFullScreenModal;
- (void)splashAdLifeTime;
@end

在实现上述事件回调之前,请务必先设置delegate:

Objective-C
self.splashAd.delegate = self;
Swift
splashAd.delegate = self

回调函数列表

回调函数名 回调函数含义
splashAdDidLoad 开屏广告拉取成功
splashAdSuccessPresentScreen 开屏广告成功展示
splashAdFailToPresent 开屏广告展示失败,当广告拉取失败时,也会执行此回调
splashAdApplicationWillEnterBackground 当点击下载应用时会调用系统程序打开,应用切换到后台
splashAdExposured 开屏广告曝光回调
splashAdClicked 开屏广告点击回调
splashAdWillClosed 开屏广告将要关闭回调
splashAdClosed 开屏广告关闭回调
splashAdWillPresentFullScreenModal 开屏广告点击以后即将弹出全屏广告页
splashAdDidPresentFullScreenModal 开屏广告点击以后弹出全屏广告页
splashAdWillDismissFullScreenModal 点击以后全屏广告页将要关闭
splashAdDidDismissFullScreenModal 点击以后全屏广告页已经关闭
splashAdLifeTime 开屏广告剩余时间回调

多阶底价能力

接入多阶底价能力分2步:

step1:

找优量汇运营同学开通广告位的多阶底价权限并提供底价配置信息;

step2:

当广告拉取成功后,通过GDTSplashAd类的eCPMLevel属性查看当前激励视频广告对应的底价层级。

/**
 返回广告的eCPM等级

 @return 成功返回一个包含数字的string,比如@"2"表示底价等级为2,@""或nil表示无权限或后台异常
 */
@property (nonatomic, readonly) NSString *eCPMLevel;

实时竞价能力

接入实时竞价能力分2步:

step1:

找优量汇运营同学开通广告位的实时竞价权限;

step2:

当广告拉取成功后,通过GDTSplashAd类的eCPM属性获取本条广告实时的eCPM价格,单位是分。

/**
 返回广告的eCPM,单位:分

 @return 成功返回一个大于等于0的值,-1表示无权限或后台出现异常
 */
- (NSInteger)eCPM;

说明

当无权限调用该接口时,SDK会返回错误码-1。

接入代码示例

加载并显示开屏广告

1.在AppDelegate头文件中导入头文件并声明实例

Objective-C
 #import "GDTSplashAd.h"
 @interface GDTAppDelegate : UIResponder <UIApplicationDelegate,GDTSplashAdDelegate>
 @property (strong, nonatomic) GDTSplashAd *splash;
 @property (retain, nonatomic) UIView *bottomView;
 @end
Swift
class SplashViewController: UIViewController,GDTSplashAdDelegate {
    private var splashAd: GDTSplashAd!
    private var bottomView: UIView!
    ...
  }

2.在AppDelegate的实现文件中初始化并加载广告数据,开屏广告目前支持全屏开屏和半屏开屏广告两种形式,其中半屏开屏广告支持开发者自定义设置开屏底部的界面,用以展示应用Logo等。

/**
 *  发起拉取全屏广告请求,只拉取不展示
 *  详解:广告素材及广告图片拉取成功后会回调splashAdDidLoad方法,当拉取失败时会回调splashAdFailToPresent方法
 */
- (void)loadFullScreenAd;

/**
 *  展示全屏广告,调用此方法前需调用isAdValid方法判断广告素材是否有效
 *  详解:广告展示成功时会回调splashAdSuccessPresentScreen方法,展示失败时会回调splashAdFailToPresent方法
 */
- (void)showFullScreenAdInWindow:(UIWindow *)window withLogoImage:(UIImage *)logoImage skipView:(UIView *)skipView;

 /**
 *  发起拉取广告请求,只拉取不展示
 *  详解:广告素材及广告图片拉取成功后会回调splashAdDidLoad方法,当拉取失败时会回调splashAdFailToPresent方法
 */
- (void)loadAd;

/**
 *  展示广告,调用此方法前需调用isAdValid方法判断广告素材是否有效
 *  详解:广告展示成功时会回调splashAdSuccessPresentScreen方法,展示失败时会回调splashAdFailToPresent方法
 */
- (void)showAdInWindow:(UIWindow *)window withBottomView:(UIView *)bottomView skipView:(UIView *)skipView;

/**
 * 返回广告是否可展示
 * 对于并行请求,在调用showAdInWindow前时需判断下
 * @return 当广告已经加载完成&&未曝光&&未过期时,为YES,否则为NO
 */
- (BOOL)isAdValid;
Objective-C
  // splash LoadAd 逻辑
  GDTSplashAd *splash = [[GDTSplashAd alloc] initWithPlacementId:YOUR_PLACEMENT_ID];
  splash.delegate = self; //设置代理
  //根据iPhone设备不同设置不同背景图
  if ([[UIScreen mainScreen] bounds].size.height >= 568.0f) {
   splash.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"LaunchImage-568h"]];
  } else {
   splash.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"LaunchImage"]];
  }
  splash.fetchDelay = 3; //开发者可以设置开屏拉取时间,超时则放弃展示
  [splashAd loadFullScreenAd];

  ......

  // splash show逻辑
  //设置开屏自定义 logo,展示半屏开屏广告
  UIWindow *window = [[UIApplication sharedApplication] keyWindow];
  [self.splashAd showFullScreenAdInWindow:window withLogoImage:[UIImage imageNamed:@"SplashLogo"] skipView:nil];
Swift
  // splash LoadAd 逻辑
  splashAd = GDTSplashAd.init(placementId: YOUR_PLACEMENT_ID)
  splashAd.delegate = self
  splashAd.fetchDelay = 3
  var splashImage = UIImage.init(named: "SplashNormal")
  if Util.isIphoneX() {
      splashImage = UIImage.init(named: "SplashX")
  } else if Util.isSmallIphone() {
      splashImage = UIImage.init(named: "SplashSmall")
  }
  splashAd.backgroundImage = splashImage
  self.splashAd.load()

  // splash show逻辑
  bottomView = UIView.init(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.height * 0.25)))
  bottomView.backgroundColor = .white
  let logo = UIImageView.init(image: UIImage.init(named: "SplashLogo"))
  logo.frame = CGRect(origin: CGPoint.zero, size: CGSize(width: 311, height: 47))
  logo.center = bottomView.center
  bottomView.addSubview(logo)
  let window = UIApplication.shared.keyWindow
  splashAd.show(in: window, withBottomView:  bottomView, skip: nil)

3.将YOUR_PLACEMENT_ID替换成你自己的PLACEMENTID。

说明

目前开屏广告只针对iPhone设备在垂直方向上展示。
广告发起请求并展示在Window中,同时在屏幕底部设置应用自身的Logo页面或是自定义View,Logo页面或是自定义View所占的空间不能过大,高度不能超过屏幕高度的 25%。

设置自定义跳过按钮

您可以设置自定义跳过按钮,可以通过设置skipView的frame来修改自定义按钮的位置及大小。

Objective-C
UIView *customSkipView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 50)]; // 设置跳过按钮的frame信息
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
[self.splashAd showAdInWindow:window withBottomView:self.bottomView skipView:customSkipView];
Swift
let customView = UIView.init(frame: CGRect(x: 0,y: 0,width: 100,height: 50)) // 设置跳过按钮的frame信息
let window = UIApplication.shared.keyWindow
self.splashAd.show(in: window, withBottomView:  bottomView, skip: customView)

开屏广告拉取超时时间

您可以设置拉取广告的超时时间,默认为3秒。通常情况,开发者调用loadAd后开始计时,如果在该时间内广告拉取成功,则返回成功回调;否则返回超时回调。

Objective-C
self.splashAd.fetchDelay = 5;
Swift
splashAd.fetchDelay = 5

在不展示开屏广告时执行调试

在您的ViewController里实现如下回调,处理开屏广告加载失败的问题:

Objective-C
- (void)splashAdFailToPresent:(GDTSplashAd *)splashAd 
withError:(NSError *)error
{
    NSLog(@"%s%@",__FUNCTION__,error);
}
Swift
func splashAdFail(toPresent splashAd: GDTSplashAd!, withError error: Error!) {
    print(#function,error)
}

预加载开屏广告

优量汇开屏广告支持预加载开屏广告,调用方法如下:

    GDTSplashAd *preloadSplashAd = [[GDTSplashAd alloc] initWithPlacementId:YOUR_PLACEMENT_ID];
    [preloadSplashAd preloadSplashOrderWithPlacementId:YOUR_PLACEMENT_ID];

说明:将YOUR_PLACEMENT_ID替换成你自己的PLACEMENTID。

屏蔽摇一摇广告

开发者可以通过此接口,在广告请求维度关闭开屏广告摇一摇能力。

接口说明

支持的配置项 值类型 说明
shakable 字符串 "0":屏蔽开屏摇一摇广告
"1"或不传: 不屏蔽开屏摇一摇广告
#import "GDTSDKConfig.h"

+ (void)setExtraUserData:(NSDictionary <NSString *, NSString *> *)extraUserDictionary;

接入代码示例

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //...
    [GDTSDKConfig registerAppId:kGDTMobSDKAppId];
    [GDTSDKConfig setExtraUserData:@{@"shakable":@"0"}]; // 屏蔽开屏摇一摇广告
    return YES;
}

 文档反馈

腾讯公司 版权所有