Android 接入穿山甲SDK之开屏广告
大家可以先参考我的上一篇博客介绍了如何集成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之开屏广告相关推荐
- Android 接入穿山甲SDK之Banner广告
大家可以先参考我的上一篇博客 信息流广告 传送门 首先创建一个脚本具体内容如下 package com.unity3d.player.chuanshanjia;import android.app.A ...
- Android 接入穿山甲SDK之插屏广告
大家可以先参考我的上一篇博客 开屏广告 传送门 首先创建一个脚本具体内容如下 package com.unity3d.player.chuanshanjia;import android.annota ...
- Android 接入穿山甲SDK之信息流广告
大家可以先参考我的上一篇博客 插屏广告 传送门 首先创建一个脚本具体内容如下 package com.unity3d.player.chuanshanjia;import android.annota ...
- Android接入穿山甲SDK并实现开屏广告
一.穿山甲SDK的接入 0.进入官方下载地址,下载穿山甲AndroidSDK,下载的压缩包里包含.aar的sdk文件和工程demo. 1.将 SDK 压缩包内的 open_ad_sdk.aar 复制到 ...
- Android 接入穿山甲激励视频广告步骤与错误总结
1.先去穿山甲官网,注册登录账号 2.侧边栏->广告变现->流量->应用->新建应用 3.侧边栏->广告变现->流量->代码位->新建代码位 4. 侧边 ...
- Android端穿山甲SDK集成
Android端穿山甲SDK集成 流程 创建测试状态的应用及应用下对应的测试状态的代码位ID 项目对接SDK完毕后 拿APP到应用商店审核 得到应用商店的APP的下载地址 结合文档转换成apk下载地址 ...
- ios sdk 穿山甲_Creator iOS接入穿山甲SDK
首先介绍一下 .m文件与.mm文件有什么区别 .m文件 支持C ,OC .mm文件 支持C,C++,OC OC 与 TS 互调,例子有很多,比如官方的例子里面就有 TS 调用OC的时候有个点 初学者可 ...
- 穿山甲sdk激励视频广告关闭按钮引发的bug排查及解决
项目中接入了穿山甲广告,其中包括图文广告和视频广告,后期发现一个偶现的问题,就是看完激励视频广告后,点击视频页面的关闭按钮,此时回到了app源生页面,UI卡住了,本来看完视频有个加分操作,现在没了.排 ...
- CocosCreator接入穿山甲SDK(IOS)--激励视屏
参考 环境:MAC,xCode11,CocosCreator2.3.1 有关CocosCreator与Object-C如何交互的问题,参考文章: https://blog.csdn.net/ZFSR0 ...
最新文章
- java 网线串口开发_C++标准语言不断被开发,C++却走向了下坡路!
- FPGA之道(45)正确的变量访问思路
- python基础教程书籍推荐-初学者python入门必看书籍推荐(上)
- 于python保留字的是_《于》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
- Spring 框架 详解 (四)------IOC装配Bean(注解方式)
- 深度学习(三十三)——GAN参考资源
- JavaEE 从入门到精通(含学习路线)
- 文件压缩(Huaffman树的概念及其实现)
- 使用ftp搭建yum源问题解决
- cv2.error: opencv(4.4.0)_【从零学习OpenCV 4】轮廓面积与长度
- java继承与多态 心得体会_继承与多态感想
- Python 并口(LPT)打印
- 手机一键抠图软件哪个好?分享三个好用软件给你
- python程序设计基础董付国 pdf-董付国《Python程序设计基础 第2版》PDF
- uni-app教程支付php,uni-app IOS app微支付、支付宝整合记录
- XP Embedded 蓝屏错误 Stop 0x0000007B
- 苹果工具条_苹果iOS 13.4 Beta 1来袭:网友直接吐槽0创新
- 西门子PLC配KUKA机器人程序 程序为西门子S7-1500PLC博途调试
- 移动通信网认证协议,安全
- RecyclerView Adapter 优雅封装搞定所有列表