中文 https://gitee.com/tjbaobao/ADEasy
English https://gitee.com/tjbaobao/ADEasy/blob/master/README-EN.md
ADEasy(測試版)-集成說明
QQ交流羣(425219113)
一套全平臺的廣告聚合SDK快速集成框架。
ADEasy使用了插件自動集成技術,只需要簡單控制各個平臺的開關,就能實現各平臺接入。並且對於未接入的廣告,不會有冗餘的代碼。
當然,ADEasy本身也有足夠的優點。
- 統一接口。化繁爲簡,化難爲易。系統再複雜,但接口很簡實,助你快速上手。
- 權重系統。可動態根據權重來分配廣告位,有效提高收益。
- 線程調度系統。全局可控調整廣告加載隊列,避免一窩蜂加載,不僅有效提高性能,還避免了多餘的加載數。
- 控制體系統。讓你輕鬆實現對廣告的極致控制。
- 分級日誌系統。從簡至繁,可選需要打印的日誌,幫助你快速定位問題。
目前支持的廣告平臺:
adMob(banner,interstitial,video,interstitialVideo)
Unity(banner,interstitial,video,interstitialVideo)
Mi(banner,interstitial,video)
Yomob(interstitial,video,interstitialVideo)
GDT(騰訊優量匯)(banner2.0,插屏2.0,激勵視頻)
Facebook(banner,interstitial,video)
ByteDance(穿山甲)(banner,interstitial,video,interstitialVideo(全屏視頻))
Vungle(banner,interstitial,video,interstitialVideo)
下一步打算支持的廣告平臺:
Baidu
IronSource
使用步驟
buildscript {
repositories {
...
maven { url 'https://raw.githubusercontent.com/TJHello/publicLib/master'}
}
dependencies {
...
classpath "com.TJHello.plugins:ADEasy:3.1.1303-t10"
}
}
allprojects {
repositories {
...
maven { url 'https://raw.githubusercontent.com/TJHello/publicLib/master'}
}
}
-
Step2 啓動插件,配置參數到build.gradle(app)
....
apply plugin: 'ad-easy'
ADEasyExt{
adSwitch = true //廣告總開關
inChina = true //必須-國內true-國外false
debug = true //該開關關聯廣告debug開關,release版會自動設置爲false
//以下參數選擇性填寫,默認false
//adMobId = "ca-app-pub-755515620*****~*****61045" //adMob的id,接入admob必填,並且更改成正確的id,否則admob會閃退。
//adMob = true //admob開關
adYomob = true //yomob開關
adUnity = true //unity開關
adMi = true //mi廣告開關
adGdt = true //騰訊優量匯(廣點通)開關
adFacebook = true//Facebook開關
adByteDance = false//ByteDance(穿山甲)開關
adVungle = false//Vungle開關
//umeng = ['key'] //是否讓ADEasy託管友盟,['key','deviceType(可選,默認1)','pushSecret(可選,默認null)']
//abTest = true //ABTest開關 https://github.com/TJHello/ABTest
//exclude = ['xxxx'] //例外掉某個包
}
android {
...
defaultConfig {
...
//當方法數超限了
multiDexEnabled true
}
//支持java8,可以使用一些便捷的語法糖
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
//方法數超限
implementation 'com.android.support:multidex:1.0.3'
}
-
Step3 配置Application(TJApplication.kt)(TJApplication.java)
class TJApplication : Application(),ADEasyApplicationImp{
override fun onCreate() {
super.onCreate()
ADEasy.setDebug(true)
ADEasy.channel = ADChannel.Order//關聯友盟渠道與某些廣告平臺的渠道
ADEasy.toOfflineMode()//離線模式
ADEasyLog.addFilterType(
ADEasyLog.TYPE_HANDLER_BASE,
ADEasyLog.TYPE_ADEASY_DETAILED_STEPS,
ADEasyLog.TYPE_TOOLS_UMENG
)
ADEasy.init(this,this)
}
//是否去廣告
override fun isRemoveAd(): Boolean {
return false
}
//創建廣告配置
override fun createADAppConfig(group: String): ADAppConfig? {
when(group){
ADInfo.GROUP_ADMOB->{
return ADAppConfig.createAdmob()
.initWeight(10)
.addParameter("ca-app-pub-3940256099942544/6300978111",ADInfo.TYPE_BANNER)//測試id
.addParameter("ca-app-pub-3940256099942544/1033173712",ADInfo.TYPE_INTERSTITIAL)
.addParameter("ca-app-pub-3940256099942544/5224354917",ADInfo.TYPE_VIDEO,10)
//允許添加多個同類型,不同code的Parameter(Banner暫不支持該特性)
// .addParameter("ca-app-pub-394025609994***/**354917",ADInfo.TYPE_VIDEO,10)
}
}
return null
}
override fun attachBaseContext(base: Context) {
super.attachBaseContext(base)
//解決方法數超限問題
MultiDex.install(base)
}
}
-
Step4 配置AppActivity(AppActivity.kt)(AppActivity.java)
abstract class AppActivity : AppCompatActivity(),ADEasyActivityImp{
protected val adEasy by lazy { ADEasy.getInstance(this,this) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
adEasy.isAutoShowInterstitial(true)
onInitValue(savedInstanceState)
onInitView()
adEasy.onCreate()
onLoadData()
}
override fun onStart() {
super.onStart()
adEasy.onStart()
}
override fun onPause() {
super.onPause()
adEasy.onPause()
}
override fun onResume() {
super.onResume()
adEasy.onResume()
}
override fun onStop() {
super.onStop()
adEasy.onStop()
}
override fun onDestroy() {
super.onDestroy()
adEasy.onDestroy()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
adEasy.onActivityResult(requestCode,resultCode,data)
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
adEasy.onRequestPermissionsResult(requestCode,permissions,grantResults)
}
protected abstract fun onInitValue(savedInstanceState: Bundle?)
protected abstract fun onInitView()
protected abstract fun onLoadData()
override fun isActivityFinish(): Boolean {
return isFinishing
}
}
示例(TestActivity.kt)(TestActivity.java)
class TestActivity : AppActivity() {
override fun onInitValue(savedInstanceState: Bundle?) {
adEasy.isAutoShowBanner(true)
}
override fun onInitView() {
setContentView(R.layout.test_activity_layout)
btShowVideo.setOnClickListener {
adEasy.showVideo{adInfo, isReward ->
Toast.makeText(this,"Close Video :$isReward", Toast.LENGTH_LONG).show()
}
}
btShowInterstitialVideo.setOnClickListener {
adEasy.showInterstitialVideo {
Toast.makeText(this,"Close InterstitialVideo",Toast.LENGTH_LONG).show()
}
}
btShowInterstitial.setOnClickListener {
adEasy.showInterstitial {
Toast.makeText(this,"Close Interstitial",Toast.LENGTH_LONG).show()
}
}
btShowBanner.setOnClickListener {
adEasy.showBanner()
}
btHideBanner.setOnClickListener {
adEasy.hideBanner()
}
}
override fun onLoadData() {
}
override fun onCreateBanner(): ViewGroup? {
return bannerLayout
}
//退出應用時請調用 ADEasy.exitApp(context)
}
adEasy API說明
boolean hasBanner() //是否有banner
boolean hasInterstitial() //是否有插屏廣告
boolean hasVideo() //是否有激勵視頻
boolean showBanner() //顯示banner
boolean showInterstitial() //顯示插屏
boolean showInterstitialVideo() //顯示插屏視頻
boolean showVideo() //顯示激勵視頻
boolean hideBanner() //隱藏banner
void hangLifeUp() //掛起生命週期,用於彈起隱私協議等場景,需要在adEasy.onCreate前調用
void hangLifeDown() //放下掛起的生命週期,繼續執行
void notShowInterstitialOnce() //忽略一次插屏顯示請求,用於第一次進入首頁不要顯示插屏的場景,需要在adEasy.onCreate前調用
void isAutoShowBanner() //當前頁面是否自動顯示Banner,需要在adEasy.onCreate前調用
void isAutoShowInterstitial()//當前頁面是否自動顯示插屏,需要在adEasy.onCreate前調用
void closeAD() //關閉當前頁面的廣告功能,需要在adEasy.,需要在adEasy.onCreate前調用
其他
加QQ羣諮詢(425219113)
ADEasy版本說明
例:1.0.1001-a01
1:自動化插件版本號[0-99]
0:廣告SDK版本更新號[0-999]
1001->主程序版本號
1:框架性修改[0-9]
0:功能性修改[0-99]
01:小修改,bug修復[0-99]
a01->測試版本號
a:alpha測試(可以嘗試性使用)
b:bate測試(經過了初步真實環境驗證)
t:內部測試
SDK版本對應
x.1.xxxx
Yomob:1.8.7
MI:3.0.0
Unity:3.3.0
ByteDance:2.9.5.0
Admob:19.0.1
GDTSDK:4.190.1060
Vungle:6.5.2
Facebook:5.8.0
x.0.xxxx
Yomob:1.8.5
MI:2.5.0
Unity:3.3.0
ByteDance:2.8.0
Admob:18.3.0
GDTSDK:4.110.980
Vungle:6.5.2
Facebook:5.6.0
主程序更新日誌
1303-t10 更新時間2020-05-20(情人節)
1、新增廣告加載線程調度功能
2、新增在線配置功能
3、新增日誌打印分級分類功能
4、新增自動化託管友盟的功能
5、新增支持ABTest的功能
6、修復若干bug,大量優化
0.9.xxxx 更新時間:2020-04-09
該命名方式已經遺棄,不再維護