大家可以先参考我的上一篇博客介绍了如何集成SDK以及一些工具类传送门

首先创建一个脚本写入如下内容

package com.unity3d.player.chuanshanjia;import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;import androidx.annotation.Nullable;import com.bytedance.sdk.openadsdk.AdSlot;
import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdNative;
import com.bytedance.sdk.openadsdk.TTAppDownloadListener;
import com.bytedance.sdk.openadsdk.TTSplashAd;
import com.unity3d.player.R;
import com.unity3d.player.UnityPlayerActivity;
import com.unity3d.player.tools.ChuanShanJiaUtil;
import com.unity3d.player.tools.TToast;public class CsjSplashActivity extends Activity {private static final String TAG = "SplashActivity";private TTAdNative mTTAdNative;private FrameLayout mSplashContainer;//是否强制跳转到主页面private boolean mForceGoMain;//开屏广告加载超时时间,建议大于3000,这里为了冷启动第一次加载到广告并且展示,示例设置了3000msprivate static final int AD_TIME_OUT = 4000;private String mCodeId = "开屏广告位ID";private boolean mIsExpress = false; //是否请求模板广告private boolean mIsHalfSize = false;private static CsjSplashActivity _Instance;public static  CsjSplashActivity Inst(){return _Instance;}@SuppressWarnings("RedundantCast")@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);_Instance = this;setContentView(R.layout.activity_splash);mSplashContainer = (FrameLayout) findViewById(R.id.splash_container);//step2:创建TTAdNative对象mTTAdNative = TTAdManagerHolder.get().createAdNative(this);hideBottomUIMenu();  //隐藏虚拟按键,并且全屏getExtraInfo();TTAdManagerHolder.Inst().init(this,"应用ID","应用昵称");}private void getExtraInfo() {Intent intent = getIntent();if(intent == null) {return;}String codeId = intent.getStringExtra("splash_rit");if (!TextUtils.isEmpty(codeId)){mCodeId = codeId;}mIsExpress = intent.getBooleanExtra("is_express", false);mIsHalfSize = intent.getBooleanExtra("is_half_size", false);}@Overrideprotected void onResume() {//判断是否该跳转到主页面if (mForceGoMain) {goToMainActivity();}super.onResume();}@Overrideprotected void onStop() {super.onStop();mForceGoMain = true;}/*** 加载开屏广告*/public void loadSplashAd(){AdSlot adSlot=null;float splashWidthDp = ChuanShanJiaUtil.getScreenWidthDp(this);int splashWidthPx = ChuanShanJiaUtil.getScreenWidthInPx(this);int screenHeightPx = ChuanShanJiaUtil.getScreenHeight(this);float screenHeightDp = ChuanShanJiaUtil.px2dip(this, screenHeightPx);float splashHeightDp;int splashHeightPx;if (mIsHalfSize) {// 开屏高度 = 屏幕高度 - 下方预留的高度,demo中是预留了屏幕高度的1/5,因此开屏高度传入 屏幕高度*4/5splashHeightDp = screenHeightDp * 4/5.f;splashHeightPx = (int) (screenHeightPx * 4/5.f);} else {splashHeightDp = screenHeightDp;splashHeightPx = screenHeightPx;}if (mIsExpress) {//个性化模板广告需要传入期望广告view的宽、高,单位dp,请传入实际需要的大小,//比如:广告下方拼接logo、适配刘海屏等,需要考虑实际广告大小
//            float expressViewWidth = ChuanShanJiaUtil.getScreenWidthDp(this);
//            float expressViewHeight = ChuanShanJiaUtil.getHeight(this);adSlot = new AdSlot.Builder().setCodeId(mCodeId).setSupportDeepLink(true).setImageAcceptedSize(splashWidthPx, splashHeightPx)//模板广告需要设置期望个性化模板广告的大小,单位dp,代码位是否属于个性化模板广告,请在穿山甲平台查看.setExpressViewAcceptedSize(splashWidthDp, splashHeightDp).build();} else {adSlot = new AdSlot.Builder().setCodeId(mCodeId).setSupportDeepLink(true).setImageAcceptedSize(splashWidthPx, splashHeightPx).build();}//step4:请求广告,调用开屏广告异步请求接口,对请求回调的广告作渲染处理mTTAdNative.loadSplashAd(adSlot, new TTAdNative.SplashAdListener() {@Overridepublic void onError(int code, String message) {Log.d(TAG,"loadSplashAd OnError"+ message+" code:"+code);showToast(message);goToMainActivity();}@Overridepublic void onTimeout() {Log.d(TAG,"loadSplashAd onTimeout");showToast("开屏广告加载超时");goToMainActivity();}@Overridepublic void onSplashAdLoad(com.bytedance.sdk.openadsdk.TTSplashAd ad) {Log.d(TAG,"loadSplashAd success");Log.d(TAG, "开屏广告请求成功");if (ad == null) {return;}//获取SplashViewView view = ad.getSplashView();if (view != null && mSplashContainer != null && !CsjSplashActivity.this.isFinishing()) {mSplashContainer.removeAllViews();//把SplashView 添加到ViewGroup中,注意开屏广告view:width >=70%屏幕宽;height >=50%屏幕高mSplashContainer.addView(view);//设置不开启开屏广告倒计时功能以及不显示跳过按钮,如果这么设置,您需要自定义倒计时逻辑//ad.setNotAllowSdkCountdown();}else {goToMainActivity();}//设置SplashView的交互监听器ad.setSplashInteractionListener(new TTSplashAd.AdInteractionListener() {@Overridepublic void onAdClicked(View view, int type) {Log.d(TAG, "onAdClicked");showToast("开屏广告点击");}@Overridepublic void onAdShow(View view, int type) {Log.d(TAG, "onAdShow");showToast("开屏广告展示");}@Overridepublic void onAdSkip() {Log.d(TAG, "onAdSkip");showToast("开屏广告跳过");goToMainActivity();}@Overridepublic void onAdTimeOver() {Log.d(TAG, "onAdTimeOver");showToast("开屏广告倒计时结束");goToMainActivity();}});if(ad.getInteractionType() == TTAdConstant.INTERACTION_TYPE_DOWNLOAD) {ad.setDownloadListener(new TTAppDownloadListener() {boolean hasShow = false;@Overridepublic void onIdle() {}@Overridepublic void onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) {if (!hasShow) {showToast("下载中...");hasShow = true;}}@Overridepublic void onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) {showToast("下载暂停...");}@Overridepublic void onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) {showToast("下载失败...");}@Overridepublic void onDownloadFinished(long totalBytes, String fileName, String appName) {showToast("下载完成...");}@Overridepublic void onInstalled(String fileName, String appName) {showToast("安装完成...");}});}}},AD_TIME_OUT);}/*** 跳转到主页面*/private void goToMainActivity(){Intent intent=new Intent(CsjSplashActivity.this, UnityPlayerActivity.class);startActivity(intent);mSplashContainer.removeAllViews();  //移除所有视图this.finish();}private void showToast(String msg) {TToast.show(this, msg);}/*** 隐藏虚拟按键,并且全屏*/protected void hideBottomUIMenu() {//隐藏虚拟按键,并且全屏if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower apiView v = this.getWindow().getDecorView();v.setSystemUiVisibility(View.GONE);} else if (Build.VERSION.SDK_INT >= 19) {//for new api versions.View decorView = getWindow().getDecorView();int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;decorView.setSystemUiVisibility(uiOptions);}}
}

脚本创建完毕之后在AndroidMainfest文件中写入如下代码

<activityandroid:name="com.unity3d.player.chuanshanjia.CsjSplashActivity"android:configChanges="keyboard|orientation|screenSize"android:screenOrientation="sensorLandscape"android:theme="@style/Theme.Splash"><!--        android:theme="@android:style/Theme.Black">--><intent-filter><action android:name="android.intent.action.MAIN" /><!--表示在点击app图标的时候启动此Activity--><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

Theme是在项目里面的res/values目录下创建了一个名为themes.xml具体内容如下

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"><style name="Theme.Splash" parent="Theme.Light"><item name="android:statusBarColor" tools:ignore="NewApi">#FF000000</item></style><style name="Theme.Light" parent="Theme.AppCompat.Light">
<!--        <item name="android:windowBackground">@color/default_window_bg</item>--><item name="android:windowTranslucentNavigation" tools:ignore="NewApi">true</item><!--解决部分手机隐藏状态栏顶部出现小黑条的问题--><item name="android:windowLayoutInDisplayCutoutMode" tools:ignore="NewApi">shortEdges</item><item name="android:windowFullscreen">true</item></style>
</resources>

下一篇 插屏广告 传送门

Android 接入穿山甲SDK之开屏广告相关推荐

  1. Android 接入穿山甲SDK之Banner广告

    大家可以先参考我的上一篇博客 信息流广告 传送门 首先创建一个脚本具体内容如下 package com.unity3d.player.chuanshanjia;import android.app.A ...

  2. Android 接入穿山甲SDK之插屏广告

    大家可以先参考我的上一篇博客 开屏广告 传送门 首先创建一个脚本具体内容如下 package com.unity3d.player.chuanshanjia;import android.annota ...

  3. Android 接入穿山甲SDK之信息流广告

    大家可以先参考我的上一篇博客 插屏广告 传送门 首先创建一个脚本具体内容如下 package com.unity3d.player.chuanshanjia;import android.annota ...

  4. Android接入穿山甲SDK并实现开屏广告

    一.穿山甲SDK的接入 0.进入官方下载地址,下载穿山甲AndroidSDK,下载的压缩包里包含.aar的sdk文件和工程demo. 1.将 SDK 压缩包内的 open_ad_sdk.aar 复制到 ...

  5. Android 接入穿山甲激励视频广告步骤与错误总结

    1.先去穿山甲官网,注册登录账号 2.侧边栏->广告变现->流量->应用->新建应用 3.侧边栏->广告变现->流量->代码位->新建代码位 4. 侧边 ...

  6. Android端穿山甲SDK集成

    Android端穿山甲SDK集成 流程 创建测试状态的应用及应用下对应的测试状态的代码位ID 项目对接SDK完毕后 拿APP到应用商店审核 得到应用商店的APP的下载地址 结合文档转换成apk下载地址 ...

  7. ios sdk 穿山甲_Creator iOS接入穿山甲SDK

    首先介绍一下 .m文件与.mm文件有什么区别 .m文件 支持C ,OC .mm文件 支持C,C++,OC OC 与 TS 互调,例子有很多,比如官方的例子里面就有 TS 调用OC的时候有个点 初学者可 ...

  8. 穿山甲sdk激励视频广告关闭按钮引发的bug排查及解决

    项目中接入了穿山甲广告,其中包括图文广告和视频广告,后期发现一个偶现的问题,就是看完激励视频广告后,点击视频页面的关闭按钮,此时回到了app源生页面,UI卡住了,本来看完视频有个加分操作,现在没了.排 ...

  9. CocosCreator接入穿山甲SDK(IOS)--激励视屏

    参考 环境:MAC,xCode11,CocosCreator2.3.1 有关CocosCreator与Object-C如何交互的问题,参考文章: https://blog.csdn.net/ZFSR0 ...

最新文章

  1. java 网线串口开发_C++标准语言不断被开发,C++却走向了下坡路!
  2. FPGA之道(45)正确的变量访问思路
  3. python基础教程书籍推荐-初学者python入门必看书籍推荐(上)
  4. 于python保留字的是_《于》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  5. Spring 框架 详解 (四)------IOC装配Bean(注解方式)
  6. 深度学习(三十三)——GAN参考资源
  7. JavaEE 从入门到精通(含学习路线)
  8. 文件压缩(Huaffman树的概念及其实现)
  9. 使用ftp搭建yum源问题解决
  10. cv2.error: opencv(4.4.0)_【从零学习OpenCV 4】轮廓面积与长度
  11. java继承与多态 心得体会_继承与多态感想
  12. Python 并口(LPT)打印
  13. 手机一键抠图软件哪个好?分享三个好用软件给你
  14. python程序设计基础董付国 pdf-董付国《Python程序设计基础 第2版》PDF
  15. uni-app教程支付php,uni-app IOS app微支付、支付宝整合记录
  16. XP Embedded 蓝屏错误 Stop 0x0000007B
  17. 苹果工具条_苹果iOS 13.4 Beta 1来袭:网友直接吐槽0创新
  18. 西门子PLC配KUKA机器人程序 程序为西门子S7-1500PLC博途调试
  19. 移动通信网认证协议,安全
  20. RecyclerView Adapter 优雅封装搞定所有列表

热门文章

  1. 如何自己重装系统win7
  2. 【增长工程学】如何研究数字广告投放策略?(Part1)
  3. 关于java中判断一个点是否在一个长方形内和一个长方形是否包含另一个长方形或者两个相重叠的问题。
  4. 使用OpenSSL生成证书
  5. Python学习(3)计算个人所得税
  6. dcos - marathon - 有的时候健康检查不是绿条
  7. 上汽通用凯迪拉克汽车的多媒体系统不能识别u盘的解决方法
  8. 腹有诗书气自华,记2016年读过的好书
  9. 4K工业级高清2进1出HDMI自动USB KVM多电脑切换器(MT-HK201)
  10. hive 查询表中的数据来源hdfs 位置