Skip to main content

Android 开屏广告

Unity导出到Android Studio接入开屏#

开屏广告目前支持导出到Android项目集成,如图:

开发者导出到Android Studio集成开屏,API介绍请参看Android开屏广告

接入代码示例#

接入步骤参考以下代码,开发者需要根据实际需要调整。
mUnityPlayer = new UnityPlayer(this);
...
// 1、接入开屏,只需要在AS端初始化TradPlus SDK,AppId是应用Id,需要您去开发者后台添加APP
TradPlusSdk.initSdk(this, “AppId“);
// 2、初始化广告位。广告位ID在TradPlus后台创建。仅调用一次。
TPSplash tpSplash = new TPSplash(context, "AdUnitId");
FrameLayout frameLayout = new FrameLayout(UnityPlayerActivity.this);
frameLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
// 3、设置回调监听(onAdClosed回调监听中remove传入容器)
tpSplash.setAdListener(new SplashAdListener() {
@Override
public void onAdClicked(TPAdInfo tpAdInfo) {}
@Override
public void onAdImpression(TPAdInfo tpAdInfo) {}
@Override
public void onAdClosed(TPAdInfo tpAdInfo) {
Log.i(TAG, "onAdClosed: ");
// 注意这里需要remove
frameLayout.removeAllViews();
}
@Override
public void onAdShowFailed(TPAdError var1, TPAdInfo var2) {}
@Override
public void onAdLoaded(TPAdInfo tpAdInfo, TPBaseAd tpBaseAd) {
//v1.1.2优化回调方式,一次loadAd对应一次loaded回调,不调用不回调。
}
@Override
public void onAdLoadFailed(TPAdError tpAdInfo) {}
});
// 4、设置每层广告源回调监听 (可选)
tpSplash.setAllAdLoadListener(new LoadAdEveryLayerListener() {...});
// 5、请求广告
tpSplash.loadAd(frameLayout);
mUnityPlayer.addView(frameLayout);
// 6、检查是否有可用广告(可做几秒倒计时判断,如5秒内无用广告直接跳转进入游戏界面)
if (tpSplash.isReady()) {
// 7、展示广告
tpSplash.showAd();
}
setContentView(mUnityPlayer);
...
mUnityPlayer.requestFocus();

iOS部分

开屏广告#

  • 开屏广告是打开app的时候展示一个3-5s的全屏的广告
  • 开屏广告分冷启动和热启动,冷启动时要尽可能提前开始加载广告,这样才能确保在进入app之前加载到并展示广告
  • 热启动是app切换到后台,并没有真正的退出,这种情况下要能检测到并提前加载广告
  • 开屏广告一般要配合app的启动页来使用,在加载的时间先给用户看启动页,等广告加载成功后展示广告,广告结束进入app内部

集成说明#

注意: 需先将项目导入至Xcode后,再接入开屏。#

1. 初始化#

#import <TradPlusAds/TradPlusAdSplash.h>
//初始化广告位
self.splashAd = [[TradPlusAdSplash alloc] init];
//设置回调
self.splashAd.delegate = self;
//设置广告位ID
[self.splashAd setAdUnitID:@"您的广告位ID"];

2. 加载广告#

//设置 window 自定义view
[self.splashAd loadAdWithWindow:window bottomView:view];

注:自定义view大小一般不超过屏幕的25%;支持广告平台为:Mintegral,腾讯广告,穿山甲,Sigmob,百度

3. 进入广告场景#

- (void)entryAdScenario:(nullable NSString *)sceneId;

参数说明

sceneId :广告场景ID (推荐)#
  • 开发者可在在TradPlus后台创建,位置如下:应用管理--广告场景。
  • 具体如何调用,可以参考广告场景的调用时机和用途说明
  • 进入广告场景时传入sceneId,展示广告时也需传入sceneId,否则会影响统计。

4. 显示广告#

//判断是否有可用广告
if (self.splashAd.isAdReady)
{
[self.splashAd showWithSceneId:sceneId];//sceneId可为nil
}

5. 监听回调#

  • 回调信息说明

  • tpSplashAdLoadFailWithError:返回的是TP封装的错误信息:详见: 错误码说明

  • tpSplashAdOneLayerLoaded:didFailWithError: 返回三方源的错误信息

  • 以下回调接口已废弃v7.6.0+

- (void)tpSplashAdBidEnd:(NSDictionary *)adInfo success:(BOOL)success DEPRECATED_MSG_ATTRIBUTE("Please use tpSplashAdBidEnd:error:");
- (void)tpSplashAdLoadStart:(NSDictionary *)adInfo DEPRECATED_MSG_ATTRIBUTE("Please use tpSplashAdOneLayerStartLoad:");

回调接口及说明

///AD加载完成
///v1.1.2优化回调方式,一次loadAd对应一次loaded回调,不调用不回调。
- (void)tpSplashAdLoaded:(NSDictionary *)adInfo;
///AD加载失败
///tpSplashAdOneLayerLoad:didFailWithError:返回三方源的错误信息
- (void)tpSplashAdLoadFailWithError:(NSError *)error;
///AD展现
- (void)tpSplashAdImpression:(NSDictionary *)adInfo;
///AD展现失败
- (void)tpSplashAdShow:(NSDictionary *)adInfo didFailWithError:(NSError *)error;
///AD被点击
- (void)tpSplashAdClicked:(NSDictionary *)adInfo;
///AD关闭
- (void)tpSplashAdDismissed:(NSDictionary *)adInfo;
@optional
///v7.6.0+新增 开始加载流程
- (void)tpSplashAdStartLoad:(NSDictionary *)adInfo;
///当每个广告源开始加载时会都会回调一次。
///v7.6.0+新增。替代原回调接口:tpSplashAdLoadStart:(NSDictionary *)adInfo;
- (void)tpSplashAdOneLayerStartLoad:(NSDictionary *)adInfo;
///v8.7.0+新增
///调用load之后如果收到此回调,说明广告位仍处于加载状态,无法触发新的一轮广告加载。
- (void)tpSplashAdIsLoading:(NSDictionary *)adInfo;
///bidding开始
- (void)tpSplashAdBidStart:(NSDictionary *)adInfo;
///bidding结束 error = nil 表示成功
- (void)tpSplashAdBidEnd:(NSDictionary *)adInfo error:(NSError *)error;
///当每个广告源加载成功后会都会回调一次。
- (void)tpSplashAdOneLayerLoaded:(NSDictionary *)adInfo;
///当每个广告源加载失败后会都会回调一次,返回三方源的错误信息
- (void)tpSplashAdOneLayerLoad:(NSDictionary *)adInfo didFailWithError:(NSError *)error;
///加载流程全部结束
- (void)tpSplashAdAllLoaded:(BOOL)success;

5. 接入参考#

参考:TradPlusAdSplashViewController

广告平台特殊配置说明#

Pangle(海外)#

开发者可以通过一下代码设置Pangle(海外)开屏的 自定义icon(正方形)

UIImage *image = [UIImage imageNamed:@"icon"];
self.splashAd.dicCustomValue = @{@"pangleGlobal_appIcon":image};

开屏广告的推荐用法#

应用启动方式#

  • 冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这种方式叫“冷启动”
  • 热启动:当启动应用时,后台已有该应用的进程,例:按home键推出再回到前台,或切换应用回到前台等,这种方式叫“热启动”

开屏加载策略#

冷启动方式打开应用#

  • 第一时间在后台load广告,同时建议在loading页时最多停留5秒
    • 如果5秒内返回广告,直接显示。显示完后,再调用 load 方法加载一条广告,供下次热启动时使用
    • 如果5秒内未返回广告,则关闭loading页,直接进入应用主界面。如在此之后收到 loaded 回调,不要再调用show方法。本次广告不会丢弃,SDK会缓存下来备用
  • 应用冷启动时,加载广告的过程中尽量不要同时请求其他网络资源,以免影响广告加载速度

热启动方式打开应用#

  • 有广告则直接显示
  • 不管有无广告展示,都需要再加载一条新的广告,作为备用
  • 如果应用能够监听到切换后台事件,可在切换后台时调用 isReady 方法判断广告是否Ready,如果没有Ready,可补充一条广告

开屏出现时机#

推荐示例

在下面的推荐示例中,开屏广告在应用的加载屏幕上显示。

不推荐示例

如果用户已经进入应用Home页,则不要展示开屏广告。否则会突然弹出,容易造成用户误点击。