广告框架封装(优先使用)
<h3>1、添加依赖</h3>
<pre><code>implementation 'com.inveno.library:AdvertWrap:1.3.1-SNAPSHOT'
implementation 'com.inveno.library:network-java:1.6.9-SNAPSHOT' //必须依赖1.4.7或以上版本
implementation 'com.inveno.library:encrypt:1.0.1-SNAPSHOT' //加密框架
//如果使用topon,则添加这个
implementation 'com.inveno.library:TopOn:1.2.0-SNAPSHOT'
//implementation 'com.google.code.gson:gson:2.8.6' //使用topon需要添加gson,若工程已有依赖gson,则不用添加
//如果使用growmore,则添加这个
implementation 'com.inveno.library:GrowMore:1.3.0-SNAPSHOT'
implementation 'com.inveno.library:oaid_sdk:1.0.22' //使用growmore需要添加oaid,有冲突则可以去掉
//如果使用优量汇,则添加这个
implementation 'com.inveno.library:ylh:1.2.2.5-SNAPSHOT'
implementation 'com.inveno.library:meidiation-TTAdapter-custom:4.6.0.7-SNAPSHOT'
//如果使用多牛,则使用这个
implementation 'com.inveno.library:donews:1.1.7-SNAPSHOT'</code></pre>
<p>注意,如果使用到growmore,还需要在工程的build.gradle文件添加以下依赖</p>
<pre><code>buildscript {
repositories {
//...省略其他
//GroMore SDK依赖
maven {
url &quot;https://artifact.bytedance.com/repository/pangle&quot;
}
//mintegral sdk依赖 引入mintegral sdk需要添加此maven
maven {
url &quot;https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_support/&quot;
}
}
}
allprojects {
repositories {
//...省略其他
//GroMore SDK依赖
maven {
url &quot;https://artifact.bytedance.com/repository/pangle&quot;
}
//mintegral sdk依赖 引入mintegral sdk需要添加此maven
maven {
url &quot;https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_support/&quot;
}
}
}</code></pre>
<p>如果有用到androidX,则在根目录的gradle.properties文件里添加以下</p>
<pre><code>android.useAndroidX=true
android.enableJetifier=true</code></pre>
<h3>2、在app的builde.gradle文件下添加配置</h3>
<pre><code>android {
defaultConfig {
//省略其他...
ndk {
// 添加项目所需CPU类型的最小集
abiFilters &quot;armeabi-v7a&quot; //, &quot;armeabi&quot;,&quot;x86&quot;
}
packagingOptions {
doNotStrip &quot;*/armeabi-v7a/*.so&quot;
//doNotStrip &quot;*/x86/*.so&quot;
//doNotStrip &quot;*/arm64-v8a/*.so&quot;
//doNotStrip &quot;*/x86_64/*.so&quot;
//doNotStrip &quot;armeabi.so&quot;
}
multiDexEnabled true
}
}</code></pre>
<h3>3、混淆</h3>
<p>[[点击查看TopOn混淆]](<a href="https://www.showdoc.com.cn/inveno/7643934939290749">https://www.showdoc.com.cn/inveno/7643934939290749</a> "[TopOn混淆]")
<a href="https://www.showdoc.com.cn/inveno/7643992162320576">[点击查看Growmore混淆]</a></p>
<h3>4、修改清单文件</h3>
<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;manifest&gt;
&lt;application
tools:replace=&quot;android:allowBackup&quot;
android:allowBackup=&quot;false&quot;
android:requestLegacyExternalStorage=&quot;true&quot;&gt;
&lt;/application&gt;
&lt;/manifest&gt;</code></pre>
<h3>5、初始化</h3>
<p>在application的onCreate方法里初始化</p>
<pre><code>//Android 9及以上必须设置
if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.P) {
val processName = getProcessName()
if (!getPackageName().equals(processName)) {
WebView.setDataDirectorySuffix(processName)
}
}
AdvertManager.REWARD_AD_ID = &quot;&quot; //激励视频广告码
AdvertManager.FULL_AD_ID = &quot;&quot; //全屏视频广告码
AdvertManager.TABLE_AD_ID = &quot;&quot; //插屏视频广告码
AdvertManager.FEED_AD_ID = &quot;&quot; //信息流广告码
AdvertManager.BANNER_AD_ID = &quot;&quot; //banner广告码
AdvertManager.SPLASH_AD_ID = &quot;&quot; //开屏视频广告码
//如果用的是topon,则调用这个方法初始化
AdvertManager.initTopOn(this,&quot;appId&quot;,&quot;appKey&quot;,isDebug)
//如果用的是growmore,则调用这个方法初始化
AdvertManager.initGrowMore(this, &quot;appId&quot;, &quot;appName&quot;, isDebug)
//如果用的是优量汇,则调用这个方法 初始化
AdvertManager.initYLH(this, &quot;appId&quot;)
//如果用的是多牛,则调用这个方法初始化
AdvertManager.initDN(this, &quot;GrowMoreAppId&quot;);
//设置全局广告监听
AdvertManager.setCloseCallBack(object : AdvertManager.CloseCallBack{
override fun onTableVideoClose(closeCount: Int) {
//当插屏视频关闭时回调
}
override fun onRewardVideoClose(closeCount: Int) {
//当激励视频关闭时回调
}
override fun onFullVideoClose(closeCount: Int) {
//当全屏视频关闭时回调
}
})
AdvertManager.setLoadCallBack(object : AdvertManager.LoadCallBack{
override fun onTableVideoLoad() {
//插屏加载完成时回调
}
override fun onRewardVideoLoad() {
//激励加载完成时回调
}
override fun onFullVideoLoad() {
}
})</code></pre>
<h3>6、使用</h3>
<p>优量汇转化归因上报(仅优量汇sdk有)</p>
<pre><code>GDTAction.logAction(ActionType.START_APP);</code></pre>
<p>广告开关</p>
<pre><code>val showAd = true //true则正常播放广告,false则不播放广告,但是会走相应的广告回调(测试使用)
AdvertManager.setShowAd(showAd)</code></pre>
<p>激励视频</p>
<pre><code>AdvertHelper.initRewardVideo(this)
//var ecpm = AdvertHelper.getRewardVideoEcpm() //获取ecpm,仅在广告正常播放后有值
AdvertHelper.showRewardVideo(object : VideoCallBack{
override fun onVideoShow() {
}
override fun onVideoClose() {
}
override fun onVideoClick() {
//内部已自动缓存下一个视频,无须手动缓存
}
override fun onVideoReward() {
}
override fun onError(code: String?, msg: String?) {
}
})</code></pre>
<p>激励视频(带自定义view)</p>
<pre><code>AdvertHelper.showRewardVideo(null,object : RewardActivityViewCreator{
override fun createView(context: Context?): View {
val view = TextView(context)
view.text = &quot;自定义文本&quot;
return view
}
override fun createLayoutParams(): FrameLayout.LayoutParams {
val params = FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)
params.leftMargin = 200 //左边距
params.topMargin = 200 //右边距
return params
}
override fun dismissDelay(): Int {
return 0 //延迟几秒消失
}
})</code></pre>
<p>全屏视频</p>
<pre><code>AdvertHelper.initFullVideo(this)
//var ecpm = AdvertHelper.getFullVideoEcpm() //获取ecpm,仅在广告正常播放后有值
//如果使用的是growmore,ecpm的单位是分,所以还需要除以100
//if (AdvertManager.isInitGrowMore()) {
// ecpm = ecpm / 100;
// }
AdvertHelper.showFullVideo(object : VideoCallBack{
override fun onVideoShow() {
}
override fun onVideoClose() {
//内部已自动缓存下一个视频,无须手动缓存
}
override fun onVideoClick() {
}
override fun onVideoReward() {
//此方法仅在激励视频有回调
}
override fun onError(code: String?, msg: String?) {
}
})</code></pre>
<p>插屏视频</p>
<pre><code>AdvertHelper.initTableVideo(this)
//var ecpm = AdvertHelper.getTableVideoEcpm() //获取ecpm,仅在广告正常播放后有值
//如果使用的是growmore,ecpm的单位是分,所以还需要除以100
//if (AdvertManager.isInitGrowMore()) {
// ecpm = ecpm / 100;
// }
AdvertHelper.showTableVideo(object : VideoCallBack{
override fun onVideoShow() {
}
override fun onVideoClose() {
//内部已自动缓存下一个视频,无须手动缓存
}
override fun onVideoClick() {
}
override fun onVideoReward() {
//此方法仅在激励视频有回调
}
override fun onError(code: String?, msg: String?) {
}
})</code></pre>
<p>信息流</p>
<pre><code>AdvertHelper.initFeed(this)
//AdvertHelper.showFeed(container,null) //不需要回调可以传null
AdvertHelper.showFeed(container,object : FeedCallBack{
override fun onFeedClick() {
}
override fun onFeedShow() {
}
override fun onFeedRenderFail(code: String?, desc: String?) {
}
override fun onFeedRenderSuccess() {
}
override fun onFeedShowFail(msg: String?) {
}
})</code></pre>
<p>banner</p>
<pre><code>//AdvertHelper.showBanner(this,container,null) //不需要回调可以传null
AdvertHelper.showBanner(this,content,object : BannerCallBack{
override fun onBannerError(code: String?, msg: String?) {
}
override fun onBannerOpened() {
}
override fun onBannerClosed() {
}
override fun onBannerClicked() {
}
override fun onBannerShow() {
}
})</code></pre>
<p>开屏</p>
<pre><code>AdvertHelper.showSplash(this,container,object : SplashCallBack{
override fun onSplashShow() {
}
override fun onSplashClick() {
}
override fun onSplashSkip() {
}
override fun onSplashDismiss() {
}
override fun onError(code: String?, msg: String?) {
}
})</code></pre>