在res/xml目录下,新建一个xml文件file_paths,在该文件中添加如下代码: 为了适配下载和安装相关功能,在工程中引用的包 com.android.support:support-v4:24.2.0 NDK配置 初始化SDK 注:加载和展示广告都需要放到主线程中 注:AdSlot中的参数一旦在代码中填写 会以代码中填写的为主 注:模板和非模板代码位的区分 注:模板类型的代码位在设置AdSlot广告对象的时候一定要设置该方法setExpressViewAcceptedSize 注:在广告加载展示完毕后 在Activity的onDestroy方法中把广告对象置为null onNativeExpressAdLoad回调直接返回的是一个集合 setSlideIntervalTime设置轮播的时间 render直接放到广告返回成功的回调中 //展示广告,并传入广告展示的场景 为保证视频的流程度建议show广告放在onRewardVideoCached回调里 后续有什么问题 可以下方留言方便讨论!
Android端穿山甲SDK集成
SDK接入
(ps:应用ID和代码位ID是对应关系 一个应用可以对应多个代码位ID)
应用ID 对应demo中的APPID
广告位ID 对应demo中的CodeId
repositories { flatDir { dirs 'libs' } } depedencies { compile(name: 'open_ad_sdk', ext: ‘aar') }
<!--必要权限--> <uses-permission android:name="android.permission.INTERNET" /> <!--可选权限--> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> <uses-permission android:name="android.permission.GET_TASKS"/> <!--可选,穿山甲提供“获取地理位置权限”和“不给予地理位置权限,开发者传入地理位置参数”两种方式上报用户位置,两种方式均可不选,添加位置权限或参数将帮助投放定位广告--> <!--请注意:无论通过何种方式提供给穿山甲用户地理位置,均需向用户声明地理位置权限将应用于穿山甲广告投放,穿山甲不强制获取地理位置信息--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 如果有视频相关的广告且使用textureView播放,请务必添加,否则黑屏 --> <uses-permission android:name="android.permission.WAKE_LOCK" />
注:主要是涉及到广告下载<provider android:name="com.bytedance.sdk.openadsdk.TTFileProvider" android:authorities="${applicationId}.TTFileProvider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider>
<?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="https://schemas.android.com/apk/res/android"> <!--为了适配所有路径可以设置 path = "." --> <external-path name="tt_external_root" path="." /> <external-path name="tt_external_download" path="Download" /> <external-files-path name="tt_external_files_download" path="Download" /> <files-path name="tt_internal_file_download" path="Download" /> <cache-path name="tt_internal_cache_download" path="Download" /> </paths>
使用24.2.0以及以上版本
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="24" />
注:可根据自己的需求进行导入
SDK中使用的so文件支持五种架构:x86,x86_64,armeabi,armeabi-v7a,arm64-v8a 如果您应用中支持的架构超出这 五种,请在build.gradle中使用abiFilters选择支持的架构。如下所示: ndk { // 设置支持的 SO 库构架,注意这里要根据你的实际情况来设置 abiFilters ‘armeabi-v7a’, ‘arm64-v8a’, ‘x86’, ‘x86_64’, ‘armeabi’ }
在Application#onCreate()方法中调用以下代码来初始化穿山甲SDK。 SDK已支持多进程,如果明确某个进程不会使用到广告SDK,可以只针对特定进程初始化广告SDK
注:TTAdManagerHolder保证处于单例状态 private static TTAdConfig buildConfig(Context context) { return new TTAdConfig.Builder() .appId("5001121") .useTextureView(true) //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView .appName("APP测试媒体") .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK) .allowShowNotify(true) //是否允许sdk展示通知栏提示 .allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页 .debug(true) //测试阶段打开,可以通过日志排查问题,上线时去除该调用 .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI, TTAdConstant.NETWORK_STATE_3G) //允许直接下载的网络状态集合 .supportMultiProcess(true)//是否支持多进程 .needClearTaskReset() //.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。 .build(); }
1.可以检查一下清单文件中最后一条权限部分
2.尝试更换TextureView进行加载视频
3.尝试开启硬件加速android:hardwareAccelerated=“true”)
1.如果项目是多进程 需要设置true 多进程中如果每个进程中都需要展示广告 必须每个进程都进行SDK的初始化
2.如果项目是单进程必须更改为false加载广告
TTAdManager对象为整个SDK的入口接口,可用于广告获取、权限请求、版本号获取TTAdManager ttAdManager = TTAdManagerHolder.get();
TTAdManagerHolder.get().requestPermissionIfNecessary(this);
TTAdNative mTTAdNative = ttAdManager.createAdNative(getApplicationContext());
构建AdSlot对象
AdSlot adSlot = new AdSlot.Builder() // 必选参数 设置您的CodeId .setCodeId(“900486272") // 必选参数 设置广告图片的最大尺寸及期望的图片宽高比,单位Px // 注:必填字段,期望的图片尺寸,返回尺寸可能有差异 .setImageAcceptedSize(640, 320) //模板广告需要设置期望个性化模板广告的大小,单位dp,代码位是否属于个性化模板广告,请在穿山甲平台查看 .setExpressViewAcceptedSize(expressViewWidth, expressViewHeight) // 可选参数 设置是否支持deeplink .setSupportDeepLink(true) // 可选参数,针对信息流广告设置每次请求的广告返回个数,最多支持3个 .setAdCount(1) //请求原生广告时候需要设置,参数为TYPE_BANNER或TYPE_INTERACTION_AD .setNativeAdType(AdSlot.TYPE_BANNER) //激励视频奖励的名称,针对激励视频参数 .setRewardName("金币") //激励视频奖励个数 .setRewardAmount(3) //用户ID,使用激励视频必传参数 //表来标识应用侧唯一用户;若非服务器回调模式或不需sdk透传,可设置为空字符串 .setUserID("user123") //设置期望视频播放的方向,为TTAdConstant.HORIZONTAL或TTAdConstant.VERTICAL .setOrientation(orientation) //激励视频奖励透传参数,字符串,如果用json对象,必须使用序列化为String类型,可为空 .setMediaExtra("media_extra") .build();
广告类型
可根据截图部分在平台上查看创建的代码位是否是模板 使用不同的方法获取广告
注:以下部分都是SDK直接返回一个view 不支持获取view的信息 开发者直接展示view
使用方法:mTTAdNative.loadNativeExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() { @Override public void onError(int code, String message) { } @Override public void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) { mTTAd.render(); } });
在请求的时候建议最多请求3条 SDK最多返回3条
render直接放到广告返回成功的回调中
mTTAdNative.loadBannerExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() { @Override public void onError(int code, String message) { } @Override public void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) { mTTAd.render(); } });
render直接放到广告返回成功的回调中
mTTAdNative.loadInteractionExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() { @Override public void onError(int code, String message) { } @Override public void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) { mTTAd.render(); } });
//模板广告需要设置期望个性化模板广告的大小,单位dp,全屏视频场景,只要设置的值大于0即可
必须设置:setExpressViewAcceptedSize(500,500)mTTAdNative.loadFullScreenVideoAd(adSlot, new TTAdNative.FullScreenVideoAdListener() { @Override public void onError(int code, String message) { } @Override public void onFullScreenVideoAdLoad(TTFullScreenVideoAd ad) { } @Override public void onFullScreenVideoCached() { } });
mttFullVideoAd.showFullScreenVideoAd(FullScreenVideoActivity.this, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
注:展示广告放到主进程中
非模板开屏要设置 单位px
setImageAcceptedSize(1080, 1920)
模板开屏需设置 (非模板开屏一定不要设置该方法) 单位dp
setExpressViewAcceptedSize(expressViewWidth, expressViewHeight)mTTAdNative.loadSplashAd(adSlot, new TTAdNative.SplashAdListener() { @Override @MainThread public void onError(int code, String message) { } @Override @MainThread public void onTimeout() { } @Override @MainThread public void onSplashAdLoad(TTSplashAd ad) { } }, AD_TIME_OUT);
//模板广告需要设置期望个性化模板广告的大小,单位dp,全屏视频场景,只要设置的值大于0即可
必须设置:setExpressViewAcceptedSize(500,500)mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() { @Override public void onError(int code, String message) { } //视频广告加载后,视频资源缓存到本地的回调,在此回调后,播放本地视频,流畅不阻塞。 @Override public void onRewardVideoCached() { } @Override public void onRewardVideoAdLoad(TTRewardVideoAd ad) { } });
mttRewardVideoAd.showRewardVideoAd(RewardVideoActivity.this, TTAdConstant.RitScenes.CUSTOMIZE_SCENES, “scenes_test”);
注:展示广告放到主进程中
mTTAdNative.loadExpressDrawFeedAd(adSlot, new TTAdNative.NativeExpressAdListener() { @Override public void onError(int code, String message) { } @Override public void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) { } });
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算