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,开屏广告默认只在竖屏展示,横屏一般不满足尺寸要求。
  3. 开发者如果需要展示半开屏广告,即在开屏中保留部分区域显示其他信息,如 LOGO,可以参考 demo 设置其他单独的容器来展示该信息,但展示广告的容器请一定要满足注意事项3中描述的条件,否则影响曝光。
  4. 开屏广告接入 api 变化,原有方式将 SplashAD 的构造和广告的拉取展示耦合起来,新版 SDK 将广告的拉取和展示独立出来。因此需要开发者适配这一情况,调用 load 和 show 分别进行广告的拉取和展示。

主要API

生命周期事件回调

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

@protocol GDTSplashAdDelegate <NSObject>
@optional
- (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

回调函数列表

回调函数名 回调函数含义
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;
}

 文档反馈

腾讯公司 版权所有