1.下载sdk
2.将open_ad_sdk_6.9.0.6文件放入libs文件夹下(libs文件需手动创建)
1、2应该可以尝试不使用本地sdk直接引用仓库中的模块
3.在gradle文件中的
dependencies {}中
添加
implementation files('libs/open_ad_sdk_6.9.0.6.aar')
implementation fileTree(include: ['*.jar'], dir: 'libs')
4.初始化sdk
TTAdSdk.init(this, new TTAdConfig.Builder() .appId(APP_ID) .appName("AdTest") .useMediation(false) .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK) .allowShowNotify(true) // 是否允许sdk展示通知栏提示 .debug(BuildConfig.DEBUG) // 测试阶段打开,可以通过日志排查问题 .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI) // 允许直接下载的网络状态集合 .supportMultiProcess(false) // 是否支持多进程 .build()); TTAdSdk.start(new TTAdSdk.Callback() { @Override public void success() { LogUtils.i("穿山甲sdk初始化成功"); handler.sendEmptyMessage(99); } @Override public void fail(int code, String msg) { LogUtils.i("穿山甲sdk初始化失败"); } });
这里用到了 APP_ID 字符串为官网创建的应用的id,安卓项目接入穿山甲sdk需要提前在官网管理中心(应该是这个名字具体忘记了)>流量变现>应用>新建应用。这里如果没有企业资质可以先创建测试应用,然后在对应的应用管理栏最后面创建代码位。
这一步做完就可以拿到应用id 和代码位id。如果有企业资质认证的可以创建广告位,具体什么我也不懂,我没有企业资质使用的代码位id。
5.展示开屏广告代码
private void showAd() { // 加载并展示广告 loadAndShowSplashAd(); } private void loadAndShowSplashAd() { //个性化模板广告需要传入期望广告view的宽、高,单位dp,请传入实际需要的大小, //比如:广告下方拼接logo、适配刘海屏等,需要考虑实际广告大小 float expressViewWidth = UIUtils.getScreenWidthDp(this); float expressViewHeight = UIUtils.getHeight(this); AdSlot adSlot = new AdSlot.Builder() .setCodeId(mCodeId) .setSupportDeepLink(true) .setImageAcceptedSize(1080, 1920) //模板广告需要设置期望个性化模板广告的大小,单位dp,代码位是否属于个性化模板广告,请在穿山甲平台查看 .setExpressViewAcceptedSize(expressViewWidth, expressViewHeight) .build(); /** 2、创建TTAdNative对象 */ TTAdNative adNativeLoader = TTAdSdk.getAdManager().createAdNative(this); /** 3、创建加载、展示监听器 */ initListeners(); /** 4、加载广告 */ adNativeLoader.loadSplashAd(adSlot, mCSJSplashAdListener, 3500); } private void initListeners() { this.mCSJSplashAdListener = new TTAdNative.CSJSplashAdListener() { @Override public void onSplashRenderSuccess(CSJSplashAd csjSplashAd) { /** 5、渲染成功后,展示广告 */ csjSplashAd.setSplashAdListener(mCSJSplashInteractionListener); View splashView = csjSplashAd.getSplashView(); UIUtils.removeFromParent(splashView); binding.mSplashContainer.removeAllViews(); binding.mSplashContainer.addView(splashView); } @Override public void onSplashLoadSuccess(CSJSplashAd csjSplashAd) { LogUtils.i("splash load success"); } @Override public void onSplashLoadFail(CSJAdError csjAdError) { LogUtils.i("splash load fail, errCode: " + csjAdError.getCode() + ", errMsg: " + csjAdError.getMsg()); } @Override public void onSplashRenderFail(CSJSplashAd csjSplashAd, CSJAdError csjAdError) { LogUtils.i("splash render fail, errCode: " + csjAdError.getCode() + ", errMsg: " + csjAdError.getMsg()); } }; this.mCSJSplashInteractionListener = new CSJSplashAd.SplashAdListener() { @Override public void onSplashAdShow(CSJSplashAd csjSplashAd) { LogUtils.i("splash show"); } @Override public void onSplashAdClick(CSJSplashAd csjSplashAd) { LogUtils.i("splash click"); } @Override public void onSplashAdClose(CSJSplashAd csjSplashAd, int i) { LogUtils.i("splash close"); finish(); } }; }
这些代码是官方文档的示例代码,主要有几个坑要说明。(上面的代码只进行了展示跳转主页面逻辑没有完成)
坑:
1.官方的示例代码会用到他自己的一些帮助类 ,所以最好下载官方sdk ,他这个压缩包中存放的有sdk文件和他们的demo项目,项目中有示例代码(这个不重要)和帮助类
2.我在创建完整个项目后遇到加载素材失败,错误代码 2 。问了客服后是manifest.xml文件中的application标签中要把
android:usesCleartextTraffic="true"(我的本身就没有)这个去掉同时加入
android:networkSecurityConfig="@xml/network_config"
network_config这个文件本身是没有的要从官方的sdk 的demo中自己提取,另外在manifest.xml中也要按照官方的说明文档填好权限声明和
<!-- 穿山甲 start================== --> <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> <provider android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider" android:authorities="${applicationId}.TTMultiProvider" android:exported="false" /> <!-- 穿山甲 end================== -->这些代码。 本来这个不想写的,我怕泄漏后面自己看的时候忘记(这些代码在官方的文档中SDK集成与工程配置下)
最后添加个官方的连接
帮助文档(里面有配置文档和错误代码的文档,最好从头看一遍)
错误码列表-穿山甲错误码说明详解-常见问题接入指南说明-开发测试-穿山甲广告平台